diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 746198d4f..f0b0a304e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -155,8 +155,11 @@ jobs: - name: Generate Prisma client uses: ./.github/actions/generate-prisma-client - - name: Build everything - run: cargo build --release + - name: Cargo fetch + run: cargo fetch + + - name: Check core + run: cargo check -p sd-core --release - name: Bundle Desktop run: pnpm desktop tauri build diff --git a/.gitignore b/.gitignore index fc00b6ad0..41d99ca63 100644 --- a/.gitignore +++ b/.gitignore @@ -27,7 +27,6 @@ apps/*/stats.html docs/public/*.st docs/public/*.toml dev.db -stats.html !cli/cmd/turbo cli/npm/turbo-android-arm64/bin @@ -66,4 +65,4 @@ examples/*/*.lock /sdserver_data .spacedrive -dev.db-journal \ No newline at end of file +dev.db-journal diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 000000000..69a352b81 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,2 @@ +/target +.build \ No newline at end of file diff --git a/.prettierrc.js b/.prettierrc.js index f75b3d3d2..a522c7ba5 100644 --- a/.prettierrc.js +++ b/.prettierrc.js @@ -7,7 +7,7 @@ module.exports = { bracketSameLine: false, semi: true, quoteProps: 'consistent', - importOrder: ['^@sd/interface/(.*)$', '^@sd/client/(.*)$', '^@sd/ui/(.*)$', '^[./]'], + importOrder: ['^[./]', '^@sd/interface/(.*)$', '^@sd/client/(.*)$', '^@sd/ui/(.*)$'], importOrderSeparation: true, importOrderSortSpecifiers: true, plugins: ['@trivago/prettier-plugin-sort-imports'] diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 000000000..6ff490004 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,7 @@ +{ + "recommendations": [ + "tauri-apps.tauri-vscode", + "rust-lang.rust-analyzer", + "oscartbeaumont.rspc-vscode" + ] +} diff --git a/Cargo.lock b/Cargo.lock index ce5f58a20..07ac4f273 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -94,6 +94,75 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eab1c04a571841102f5345a8fc0f6bb3d31c315dec879b5c6e42e40ce7ffa34e" +[[package]] +name = "async-channel" +version = "1.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e14485364214912d3b19cc3435dde4df66065127f05fa0d75c712f36f12c2f28" +dependencies = [ + "concurrent-queue", + "event-listener", + "futures-core", +] + +[[package]] +name = "async-executor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "871f9bb5e0a22eeb7e8cf16641feb87c9dc67032ccf8ff49e772eb9941d3a965" +dependencies = [ + "async-task", + "concurrent-queue", + "fastrand", + "futures-lite", + "once_cell", + "slab", +] + +[[package]] +name = "async-global-executor" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0da5b41ee986eed3f524c380e6d64965aea573882a8907682ad100f7859305ca" +dependencies = [ + "async-channel", + "async-executor", + "async-io", + "async-lock", + "blocking", + "futures-lite", + "once_cell", +] + +[[package]] +name = "async-io" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83e21f3a490c72b3b0cf44962180e60045de2925d8dff97918f7ee43c8f637c7" +dependencies = [ + "autocfg 1.1.0", + "concurrent-queue", + "futures-lite", + "libc", + "log", + "once_cell", + "parking", + "polling", + "slab", + "socket2", + "waker-fn", + "winapi", +] + +[[package]] +name = "async-lock" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e97a171d191782fba31bb902b14ad94e24a68145032b7eedf871ab0bc0d077b6" +dependencies = [ + "event-listener", +] + [[package]] name = "async-stream" version = "0.3.3" @@ -115,6 +184,12 @@ dependencies = [ "syn", ] +[[package]] +name = "async-task" +version = "4.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a40729d2133846d9ed0ea60a8b9541bccddab49cd30f0715a1da672fe9a2524" + [[package]] name = "async-trait" version = "0.1.57" @@ -126,6 +201,20 @@ dependencies = [ "syn", ] +[[package]] +name = "async-tungstenite" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1b71b31561643aa8e7df3effe284fa83ab1a840e52294c5f4bd7bfd8b2becbb" +dependencies = [ + "futures-io", + "futures-util", + "log", + "pin-project-lite", + "tokio", + "tungstenite", +] + [[package]] name = "atk" version = "0.15.1" @@ -159,6 +248,12 @@ dependencies = [ "crossbeam-utils", ] +[[package]] +name = "atomic-waker" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "065374052e7df7ee4047b1160cca5e1467a12351a40b3da123c870ba0b8eda2a" + [[package]] name = "attohttpc" version = "0.22.0" @@ -186,6 +281,15 @@ dependencies = [ "winapi", ] +[[package]] +name = "autocfg" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dde43e75fd43e8a1bf86103336bc699aa8d17ad1be60c76c0bdfd4828e19b78" +dependencies = [ + "autocfg 1.1.0", +] + [[package]] name = "autocfg" version = "1.1.0" @@ -200,7 +304,6 @@ checksum = "c9e3356844c4d6a6d6467b8da2cffb4a2820be256f50a3a386c9d152bab31043" dependencies = [ "async-trait", "axum-core", - "base64 0.13.0", "bitflags", "bytes", "futures-util", @@ -216,10 +319,8 @@ dependencies = [ "serde", "serde_json", "serde_urlencoded", - "sha-1", "sync_wrapper", "tokio", - "tokio-tungstenite", "tower", "tower-http", "tower-layer", @@ -252,7 +353,7 @@ dependencies = [ "cc", "cfg-if 1.0.0", "libc", - "miniz_oxide", + "miniz_oxide 0.5.4", "object", "rustc-demangle", ] @@ -269,6 +370,30 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" +[[package]] +name = "bb8" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1627eccf3aa91405435ba240be23513eeca466b5dc33866422672264de061582" +dependencies = [ + "async-trait", + "futures-channel", + "futures-util", + "parking_lot 0.12.1", + "tokio", +] + +[[package]] +name = "bb8-redis" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b081e2864000416c5a4543fed63fb8dd979c4a0806b071fddab0e548c6cd4c74" +dependencies = [ + "async-trait", + "bb8", + "redis", +] + [[package]] name = "bigdecimal" version = "0.2.2" @@ -300,12 +425,31 @@ dependencies = [ "shlex", ] +[[package]] +name = "bip39" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e89470017230c38e52b82b3ee3f530db1856ba1d434e3a67a3456a8a8dec5f" +dependencies = [ + "bitcoin_hashes", + "rand 0.6.5", + "rand_core 0.4.2", + "serde", + "unicode-normalization", +] + [[package]] name = "bit_field" version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dcb6dd1c2376d2e096796e234a70e17e94cc2d5d54ff8ce42b28cef1d0d359a4" +[[package]] +name = "bitcoin_hashes" +version = "0.9.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ce18265ec2324ad075345d5814fbeed4f41f0a660055dc78840b74d19b874b1" + [[package]] name = "bitflags" version = "1.3.2" @@ -345,6 +489,20 @@ dependencies = [ "generic-array", ] +[[package]] +name = "blocking" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6ccb65d468978a086b69884437ded69a90faab3bbe6e67f242173ea728acccc" +dependencies = [ + "async-channel", + "async-task", + "atomic-waker", + "fastrand", + "futures-lite", + "once_cell", +] + [[package]] name = "brotli" version = "3.3.4" @@ -399,6 +557,12 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec8a7b6a70fde80372154c65702f00a0f56f3e1c36abbc6c440484be248856db" +[[package]] +name = "cache-padded" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1db59621ec70f09c5e9b597b220c7a2b43611f4710dc03ceb8748637775692c" + [[package]] name = "cairo-rs" version = "0.15.12" @@ -474,7 +638,7 @@ version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3431df59f28accaf4cb4eed4a9acc66bea3f3c3753aa6cdc2f024174ef232af7" dependencies = [ - "smallvec", + "smallvec 1.10.0", ] [[package]] @@ -483,7 +647,7 @@ version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0aacacf4d96c24b2ad6eb8ee6df040e4f27b0d0b39a5710c30091baa830485db" dependencies = [ - "smallvec", + "smallvec 1.10.0", ] [[package]] @@ -509,7 +673,7 @@ dependencies = [ "num-integer", "num-traits", "serde", - "time 0.1.43", + "time 0.1.44", "wasm-bindgen", "winapi", ] @@ -602,7 +766,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4" dependencies = [ "bytes", + "futures-core", "memchr", + "pin-project-lite", + "tokio", + "tokio-util", +] + +[[package]] +name = "concurrent-queue" +version = "1.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af4780a44ab5696ea9e28294517f1fffb421a83a25af521333c838635509db9c" +dependencies = [ + "cache-padded", ] [[package]] @@ -636,6 +813,17 @@ dependencies = [ "unicode-segmentation", ] +[[package]] +name = "cookie" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "344adc371239ef32293cb1c4fe519592fcf21206c79c02854320afcdf3ab4917" +dependencies = [ + "percent-encoding", + "time 0.3.15", + "version_check", +] + [[package]] name = "core-foundation" version = "0.9.3" @@ -718,15 +906,14 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.10" +version = "0.9.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "045ebe27666471bb549370b4b0b3e51b07f56325befa4284db65fc89c02511b1" +checksum = "f916dfc5d356b0ed9dae65f1db9fc9770aa2851d2662b988ccf4fe3516e86348" dependencies = [ - "autocfg", + "autocfg 1.1.0", "cfg-if 1.0.0", "crossbeam-utils", "memoffset", - "once_cell", "scopeguard", ] @@ -742,14 +929,19 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.11" +version = "0.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51887d4adc7b564537b15adcfb307936f8075dfcd5f00dde9a9f1d29383682bc" +checksum = "edbafec5fa1f196ca66527c1b12c2ec4745ca14b50f1ad8f9f6f720b55d11fac" dependencies = [ "cfg-if 1.0.0", - "once_cell", ] +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + [[package]] name = "crypto-common" version = "0.1.6" @@ -773,7 +965,7 @@ dependencies = [ "phf 0.8.0", "proc-macro2", "quote", - "smallvec", + "smallvec 1.10.0", "syn", ] @@ -803,7 +995,7 @@ version = "3.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d91974fbbe88ec1df0c24a4f00f99583667a7e2e6272b2b92d294d81e462173" dependencies = [ - "nix", + "nix 0.25.0", "winapi", ] @@ -824,6 +1016,19 @@ dependencies = [ "rand 0.7.3", ] +[[package]] +name = "curve25519-dalek" +version = "3.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90f9d052967f590a76e62eb387bd0bbb1b000182c3cefe5364db6b7211651bc0" +dependencies = [ + "byteorder", + "digest 0.9.0", + "rand_core 0.5.1", + "subtle", + "zeroize", +] + [[package]] name = "darling" version = "0.13.4" @@ -859,6 +1064,19 @@ dependencies = [ "syn", ] +[[package]] +name = "dashmap" +version = "5.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "907076dfda823b0b36d2a1bb5f90c96660a5bbcd7729e10727f07858f22c4edc" +dependencies = [ + "cfg-if 1.0.0", + "hashbrown 0.12.3", + "lock_api 0.4.9", + "once_cell", + "parking_lot_core 0.9.3", +] + [[package]] name = "data-encoding" version = "2.3.2" @@ -961,6 +1179,7 @@ checksum = "adfbc57365a37acbd2ebf2b64d7e69bb766e2fea813521ed536f5d0520dcf86c" dependencies = [ "block-buffer 0.10.3", "crypto-common", + "subtle", ] [[package]] @@ -1041,6 +1260,12 @@ dependencies = [ "serde_json", ] +[[package]] +name = "dotenv" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77c90badedccf4105eca100756a0b1289e191f6fcbdadd3cee1d2f614f97da8f" + [[package]] name = "dtoa" version = "0.4.8" @@ -1103,11 +1328,17 @@ dependencies = [ "syn", ] +[[package]] +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + [[package]] name = "example" version = "0.0.0" dependencies = [ - "rspc 0.1.2", + "rspc", "sd-sync", "serde", "serde_json", @@ -1119,16 +1350,16 @@ dependencies = [ [[package]] name = "exr" -version = "1.5.1" +version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9a7880199e74c6d3fe45579df2f436c5913a71405494cb89d59234d86b47dc5" +checksum = "8eb5f255b5980bb0c8cf676b675d1a99be40f316881444f44e0462eaf5df5ded" dependencies = [ "bit_field", "flume", "half", "lebe", - "miniz_oxide", - "smallvec", + "miniz_oxide 0.6.2", + "smallvec 1.10.0", "threadpool", ] @@ -1213,7 +1444,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f82b0f4c27ad9f8bfd1f3208d882da2b09c301bc1c828fd3a00d0216d2fbbff6" dependencies = [ "crc32fast", - "miniz_oxide", + "miniz_oxide 0.5.4", ] [[package]] @@ -1329,6 +1560,21 @@ version = "0.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbf4d2a7a308fd4578637c0b17c7e1c7ba127b8f6ba00b29f717e9655d85eb68" +[[package]] +name = "futures-lite" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7694489acd39452c77daa48516b894c153f192c3578d5a839b62c58099fcbf48" +dependencies = [ + "fastrand", + "futures-core", + "futures-io", + "memchr", + "parking", + "pin-project-lite", + "waker-fn", +] + [[package]] name = "futures-macro" version = "0.3.24" @@ -1566,7 +1812,7 @@ dependencies = [ "gobject-sys", "libc", "once_cell", - "smallvec", + "smallvec 1.10.0", "thiserror", ] @@ -1712,9 +1958,12 @@ dependencies = [ [[package]] name = "half" -version = "1.8.2" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" +checksum = "ad6a9459c9c30b177b925162351f97e7d967c7ea8bab3b8352805327daf45554" +dependencies = [ + "crunchy", +] [[package]] name = "hashbrown" @@ -1773,6 +2022,24 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +[[package]] +name = "hkdf" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "791a029f6b9fc27657f6f188ec6e5e43f6911f6f878e0dc5501396e09809d437" +dependencies = [ + "hmac", +] + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest 0.10.5", +] + [[package]] name = "hostname" version = "0.1.5" @@ -1854,6 +2121,23 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" +[[package]] +name = "httpz" +version = "0.0.3" +source = "git+https://github.com/oscartbeaumont/httpz.git#d3a36ba9b9d878399e851e8b5e88387868b3a2ce" +dependencies = [ + "async-tungstenite", + "axum", + "base64 0.13.0", + "cookie", + "form_urlencoded", + "futures", + "http", + "hyper", + "sha1", + "tokio", +] + [[package]] name = "humantime" version = "2.1.0" @@ -1928,14 +2212,43 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "0.3.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" +checksum = "de910d521f7cc3135c4de8db1cb910e0b5ed1dc6f57c381cd07e8e661ce10094" dependencies = [ + "matches", "unicode-bidi", "unicode-normalization", ] +[[package]] +name = "if-addrs" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbc0fa01ffc752e9dbc72818cdb072cd028b86be5e09dd04c5a643704fe101a9" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "if-watch" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "015a7df1eb6dda30df37f34b63ada9b7b352984b0e84de2a20ed526345000791" +dependencies = [ + "async-io", + "core-foundation", + "fnv", + "futures", + "if-addrs", + "ipnet", + "log", + "rtnetlink", + "system-configuration", + "windows 0.34.0", +] + [[package]] name = "ignore" version = "0.4.18" @@ -1970,9 +2283,9 @@ dependencies = [ [[package]] name = "image" -version = "0.24.3" +version = "0.24.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e30ca2ecf7666107ff827a8e481de6a132a9b687ed3bb20bb1c144a36c00964" +checksum = "bd8e4fb07cf672b1642304e731ef8a6a4c7891d67bb4fd4f5ce58cd6ed86803c" dependencies = [ "bytemuck", "byteorder", @@ -2013,7 +2326,7 @@ version = "1.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e" dependencies = [ - "autocfg", + "autocfg 1.1.0", "hashbrown 0.12.3", "serde", ] @@ -2261,9 +2574,9 @@ checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8" [[package]] name = "libc" -version = "0.2.133" +version = "0.2.134" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0f80d65747a3e43d1596c7c5492d95d5edddaabd45a7fcdb02b95f644164966" +checksum = "329c933548736bc49fd575ee68c89e8be4d260064184389a5b77517cddd99ffb" [[package]] name = "libdbus-sys" @@ -2328,7 +2641,7 @@ version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" dependencies = [ - "autocfg", + "autocfg 1.1.0", "scopeguard", ] @@ -2394,7 +2707,7 @@ dependencies = [ "dirs-next", "objc-foundation", "objc_id", - "time 0.3.14", + "time 0.3.15", ] [[package]] @@ -2456,6 +2769,25 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73cbba799671b762df5a175adf59ce145165747bb891505c43d09aefbbf38beb" +[[package]] +name = "maybe-uninit" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" + +[[package]] +name = "mdns-sd" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebf8bba71c69da1ac2ac7f1b02042fd450dd477866bb0349eb26f06b17cfc692" +dependencies = [ + "flume", + "if-addrs", + "log", + "polling", + "socket2", +] + [[package]] name = "memchr" version = "2.5.0" @@ -2468,7 +2800,7 @@ version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" dependencies = [ - "autocfg", + "autocfg 1.1.0", ] [[package]] @@ -2616,6 +2948,15 @@ dependencies = [ "adler", ] +[[package]] +name = "miniz_oxide" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa" +dependencies = [ + "adler", +] + [[package]] name = "mio" version = "0.8.4" @@ -2646,15 +2987,6 @@ dependencies = [ "tracing-subscriber", ] -[[package]] -name = "nanoid" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ffa00dec017b5b1a8b7cf5e2c008bfda1aa7e0697ac1508b491fdf2622fb4d8" -dependencies = [ - "rand 0.8.5", -] - [[package]] name = "nanorand" version = "0.7.0" @@ -2719,6 +3051,72 @@ dependencies = [ "jni-sys", ] +[[package]] +name = "netlink-packet-core" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "345b8ab5bd4e71a2986663e88c56856699d060e78e152e6e9d7966fcd5491297" +dependencies = [ + "anyhow", + "byteorder", + "libc", + "netlink-packet-utils", +] + +[[package]] +name = "netlink-packet-route" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9ea4302b9759a7a88242299225ea3688e63c85ea136371bb6cf94fd674efaab" +dependencies = [ + "anyhow", + "bitflags", + "byteorder", + "libc", + "netlink-packet-core", + "netlink-packet-utils", +] + +[[package]] +name = "netlink-packet-utils" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25af9cf0dc55498b7bd94a1508af7a78706aa0ab715a73c5169273e03c84845e" +dependencies = [ + "anyhow", + "byteorder", + "paste", + "thiserror", +] + +[[package]] +name = "netlink-proto" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65b4b14489ab424703c092062176d52ba55485a89c076b4f9db05092b7223aa6" +dependencies = [ + "bytes", + "futures", + "log", + "netlink-packet-core", + "netlink-sys", + "thiserror", + "tokio", +] + +[[package]] +name = "netlink-sys" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92b654097027250401127914afb37cb1f311df6610a9891ff07a757e94199027" +dependencies = [ + "async-io", + "bytes", + "futures", + "libc", + "log", +] + [[package]] name = "new_debug_unreachable" version = "1.0.4" @@ -2731,7 +3129,18 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77a5d83df9f36fe23f0c3648c6bbb8b0298bb5f1939c8f2704431371f4b84d43" dependencies = [ - "smallvec", + "smallvec 1.10.0", +] + +[[package]] +name = "nix" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "195cdbc1741b8134346d515b3a56a1c94b0912758009cfd53f99ea0f57b065fc" +dependencies = [ + "bitflags", + "cfg-if 1.0.0", + "libc", ] [[package]] @@ -2740,7 +3149,7 @@ version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e322c04a9e3440c327fca7b6c8a63e6890a32fa2ad689db972425f07e0d22abb" dependencies = [ - "autocfg", + "autocfg 1.1.0", "bitflags", "cfg-if 1.0.0", "libc", @@ -2764,9 +3173,9 @@ dependencies = [ [[package]] name = "notify-rust" -version = "4.5.9" +version = "4.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89981320931e5f40cf7cf42a75de9ea445d2c61acd3a819fd4cd22cd8a610998" +checksum = "368e89ea58df747ce88be669ae44e79783c1d30bfd540ad0fc520b3f41f0b3b0" dependencies = [ "dbus", "mac-notification-sys", @@ -2775,9 +3184,9 @@ dependencies = [ [[package]] name = "ntapi" -version = "0.3.7" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c28774a7fd2fbb4f0babd8237ce554b73af68021b5f695a3cebd6c59bac0980f" +checksum = "bc51db7b362b205941f71232e56c625156eb9a929f8cf74a428fd5bc094a4afc" dependencies = [ "winapi", ] @@ -2788,7 +3197,7 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f6f7833f2cbf2360a6cfd58cd41a53aa7a90bd4c202f5b1c7dd2ed73c57b2c3" dependencies = [ - "autocfg", + "autocfg 1.1.0", "num-integer", "num-traits", ] @@ -2799,7 +3208,7 @@ version = "0.1.45" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" dependencies = [ - "autocfg", + "autocfg 1.1.0", "num-traits", ] @@ -2809,7 +3218,7 @@ version = "0.1.43" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" dependencies = [ - "autocfg", + "autocfg 1.1.0", "num-integer", "num-traits", ] @@ -2820,7 +3229,7 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" dependencies = [ - "autocfg", + "autocfg 1.1.0", "num-integer", "num-traits", ] @@ -2831,7 +3240,7 @@ version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" dependencies = [ - "autocfg", + "autocfg 1.1.0", ] [[package]] @@ -2946,9 +3355,9 @@ dependencies = [ [[package]] name = "openssl" -version = "0.10.41" +version = "0.10.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "618febf65336490dfcf20b73f885f5651a0c89c64c2d4a8c3662585a70bf5bd0" +checksum = "12fc0523e3bd51a692c8850d075d74dc062ccf251c0110668cbd921917118a13" dependencies = [ "bitflags", "cfg-if 1.0.0", @@ -2987,10 +3396,10 @@ dependencies = [ [[package]] name = "openssl-sys" -version = "0.9.75" -source = "git+https://github.com/spacedriveapp/rust-openssl#f49328d2fc62e5ade3a321eed75cf4b250bda8b7" +version = "0.9.76" +source = "git+https://github.com/spacedriveapp/rust-openssl?rev=92c3dec225a9e984884d5b30a517e5d44a24d03b#92c3dec225a9e984884d5b30a517e5d44a24d03b" dependencies = [ - "autocfg", + "autocfg 1.1.0", "cc", "libc", "openssl-src", @@ -3046,9 +3455,9 @@ dependencies = [ [[package]] name = "os_pipe" -version = "1.0.1" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c92f2b54f081d635c77e7120862d48db8e91f7f21cef23ab1b4fe9971c59f55" +checksum = "0dceb7e43f59c35ee1548045b2c72945a5a3bb6ce6d6f07cdc13dc8f6bc4930a" dependencies = [ "libc", "winapi", @@ -3079,6 +3488,12 @@ dependencies = [ "system-deps 6.0.2", ] +[[package]] +name = "parking" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72" + [[package]] name = "parking_lot" version = "0.10.2" @@ -3120,7 +3535,7 @@ dependencies = [ "cloudabi", "libc", "redox_syscall 0.1.57", - "smallvec", + "smallvec 1.10.0", "winapi", ] @@ -3134,7 +3549,7 @@ dependencies = [ "instant", "libc", "redox_syscall 0.2.16", - "smallvec", + "smallvec 1.10.0", "winapi", ] @@ -3147,7 +3562,7 @@ dependencies = [ "cfg-if 1.0.0", "libc", "redox_syscall 0.2.16", - "smallvec", + "smallvec 1.10.0", "windows-sys", ] @@ -3181,6 +3596,15 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" +[[package]] +name = "pem" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03c64931a1a212348ec4f3b4362585eca7159d0d09cbdf4a7f74f02173596fd4" +dependencies = [ + "base64 0.13.0", +] + [[package]] name = "percent-encoding" version = "2.2.0" @@ -3189,9 +3613,9 @@ checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" [[package]] name = "pest" -version = "2.3.1" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb779fcf4bb850fbbb0edc96ff6cf34fd90c4b1a112ce042653280d9a7364048" +checksum = "dbc7bc69c062e492337d74d59b120c274fd3d261b6bf6d3207d499b4b379c41a" dependencies = [ "thiserror", "ucd-trie", @@ -3199,9 +3623,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.3.1" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "502b62a6d0245378b04ffe0a7fb4f4419a4815fce813bd8a0ec89a56e07d67b1" +checksum = "60b75706b9642ebcb34dab3bc7750f811609a0eb1dd8b88c2d15bf628c1c65b2" dependencies = [ "pest", "pest_generator", @@ -3209,9 +3633,9 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.3.1" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "451e629bf49b750254da26132f1a5a9d11fd8a95a3df51d15c4abd1ba154cb6c" +checksum = "f4f9272122f5979a6511a749af9db9bfc810393f63119970d7085fed1c4ea0db" dependencies = [ "pest", "pest_meta", @@ -3222,9 +3646,9 @@ dependencies = [ [[package]] name = "pest_meta" -version = "2.3.1" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcec162c71c45e269dfc3fc2916eaeb97feab22993a21bcce4721d08cd7801a6" +checksum = "4c8717927f9b79515e565a64fe46c38b8cd0427e64c40680b14a7365ab09ac8d" dependencies = [ "once_cell", "pest", @@ -3387,7 +3811,7 @@ dependencies = [ "indexmap", "line-wrap", "serde", - "time 0.3.14", + "time 0.3.15", "xml-rs", ] @@ -3412,7 +3836,21 @@ dependencies = [ "bitflags", "crc32fast", "flate2", - "miniz_oxide", + "miniz_oxide 0.5.4", +] + +[[package]] +name = "polling" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899b00b9c8ab553c743b3e11e87c5c7d423b2a2de229ba95b24a756344748011" +dependencies = [ + "autocfg 1.1.0", + "cfg-if 1.0.0", + "libc", + "log", + "wepoll-ffi", + "winapi", ] [[package]] @@ -3437,7 +3875,7 @@ dependencies = [ [[package]] name = "prisma-client-rust" version = "0.6.1" -source = "git+https://github.com/Brendonovich/prisma-client-rust.git?rev=762ba6c06b9386102aea37538fdfe0b2aa24fd52#762ba6c06b9386102aea37538fdfe0b2aa24fd52" +source = "git+https://github.com/Brendonovich/prisma-client-rust.git?rev=078919e3724f35cc00c2402c66ba585b61c88d47#078919e3724f35cc00c2402c66ba585b61c88d47" dependencies = [ "base64 0.13.0", "bigdecimal", @@ -3450,7 +3888,7 @@ dependencies = [ "prisma-models", "query-connector", "query-core", - "rspc 0.0.5", + "rspc", "schema", "serde", "serde-value", @@ -3466,7 +3904,7 @@ dependencies = [ [[package]] name = "prisma-client-rust-cli" version = "0.6.1" -source = "git+https://github.com/Brendonovich/prisma-client-rust.git?rev=762ba6c06b9386102aea37538fdfe0b2aa24fd52#762ba6c06b9386102aea37538fdfe0b2aa24fd52" +source = "git+https://github.com/Brendonovich/prisma-client-rust.git?rev=078919e3724f35cc00c2402c66ba585b61c88d47#078919e3724f35cc00c2402c66ba585b61c88d47" dependencies = [ "datamodel", "prisma-client-rust-sdk", @@ -3481,7 +3919,7 @@ dependencies = [ [[package]] name = "prisma-client-rust-sdk" version = "0.6.1" -source = "git+https://github.com/Brendonovich/prisma-client-rust.git?rev=762ba6c06b9386102aea37538fdfe0b2aa24fd52#762ba6c06b9386102aea37538fdfe0b2aa24fd52" +source = "git+https://github.com/Brendonovich/prisma-client-rust.git?rev=078919e3724f35cc00c2402c66ba585b61c88d47#078919e3724f35cc00c2402c66ba585b61c88d47" dependencies = [ "convert_case 0.5.0", "datamodel", @@ -3640,7 +4078,7 @@ dependencies = [ "mach", "once_cell", "raw-cpuid", - "wasi 0.10.2+wasi-snapshot-preview1", + "wasi 0.10.0+wasi-snapshot-preview1", "web-sys", "winapi", ] @@ -3721,6 +4159,59 @@ dependencies = [ "memchr", ] +[[package]] +name = "quinn" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b435e71d9bfa0d8889927231970c51fb89c58fa63bffcab117c9c7a41e5ef8f" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "fxhash", + "quinn-proto", + "quinn-udp", + "rustls", + "thiserror", + "tokio", + "tracing", + "webpki", +] + +[[package]] +name = "quinn-proto" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fce546b9688f767a57530652488420d419a8b1f44a478b451c3d1ab6d992a55" +dependencies = [ + "bytes", + "fxhash", + "rand 0.8.5", + "ring 0.16.20", + "rustls", + "rustls-native-certs", + "rustls-pemfile 0.2.1", + "slab", + "thiserror", + "tinyvec", + "tracing", + "webpki", +] + +[[package]] +name = "quinn-udp" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f832d8958db3e84d2ec93b5eb2272b45aa23cf7f8fe6e79f578896f4e6c231b" +dependencies = [ + "futures-util", + "libc", + "quinn-proto", + "socket2", + "tokio", + "tracing", +] + [[package]] name = "quote" version = "1.0.21" @@ -3753,6 +4244,25 @@ dependencies = [ "winapi", ] +[[package]] +name = "rand" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" +dependencies = [ + "autocfg 0.1.8", + "libc", + "rand_chacha 0.1.1", + "rand_core 0.4.2", + "rand_hc 0.1.0", + "rand_isaac", + "rand_jitter", + "rand_os", + "rand_pcg 0.1.2", + "rand_xorshift", + "winapi", +] + [[package]] name = "rand" version = "0.7.3" @@ -3763,8 +4273,8 @@ dependencies = [ "libc", "rand_chacha 0.2.2", "rand_core 0.5.1", - "rand_hc", - "rand_pcg", + "rand_hc 0.2.0", + "rand_pcg 0.2.1", ] [[package]] @@ -3778,6 +4288,16 @@ dependencies = [ "rand_core 0.6.4", ] +[[package]] +name = "rand_chacha" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" +dependencies = [ + "autocfg 0.1.8", + "rand_core 0.3.1", +] + [[package]] name = "rand_chacha" version = "0.2.2" @@ -3831,6 +4351,15 @@ dependencies = [ "getrandom 0.2.7", ] +[[package]] +name = "rand_hc" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" +dependencies = [ + "rand_core 0.3.1", +] + [[package]] name = "rand_hc" version = "0.2.0" @@ -3840,6 +4369,50 @@ dependencies = [ "rand_core 0.5.1", ] +[[package]] +name = "rand_isaac" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" +dependencies = [ + "rand_core 0.3.1", +] + +[[package]] +name = "rand_jitter" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b" +dependencies = [ + "libc", + "rand_core 0.4.2", + "winapi", +] + +[[package]] +name = "rand_os" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071" +dependencies = [ + "cloudabi", + "fuchsia-cprng", + "libc", + "rand_core 0.4.2", + "rdrand", + "winapi", +] + +[[package]] +name = "rand_pcg" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44" +dependencies = [ + "autocfg 0.1.8", + "rand_core 0.4.2", +] + [[package]] name = "rand_pcg" version = "0.2.1" @@ -3849,6 +4422,15 @@ dependencies = [ "rand_core 0.5.1", ] +[[package]] +name = "rand_xorshift" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" +dependencies = [ + "rand_core 0.3.1", +] + [[package]] name = "rand_xoshiro" version = "0.6.0" @@ -3867,15 +4449,6 @@ dependencies = [ "bitflags", ] -[[package]] -name = "raw-window-handle" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b800beb9b6e7d2df1fe337c9e3d04e3af22a124460fb4c30fcc22c9117cefb41" -dependencies = [ - "cty", -] - [[package]] name = "raw-window-handle" version = "0.5.0" @@ -3891,7 +4464,7 @@ version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd99e5772ead8baa5215278c9b15bf92087709e9c1b2d1f97cdb5a183c933a7d" dependencies = [ - "autocfg", + "autocfg 1.1.0", "crossbeam-deque", "either", "rayon-core", @@ -3909,6 +4482,18 @@ dependencies = [ "num_cpus", ] +[[package]] +name = "rcgen" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6413f3de1edee53342e6138e75b56d32e7bc6e332b3bd62d497b1929d4cfbcdd" +dependencies = [ + "pem", + "ring 0.16.20", + "time 0.3.15", + "yasna", +] + [[package]] name = "rdrand" version = "0.4.0" @@ -3918,6 +4503,25 @@ dependencies = [ "rand_core 0.3.1", ] +[[package]] +name = "redis" +version = "0.21.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "571c252c68d09a2ad3e49edd14e9ee48932f3e0f27b06b4ea4c9b2a706d31103" +dependencies = [ + "async-trait", + "bytes", + "combine 4.6.6", + "futures-util", + "itoa 1.0.3", + "percent-encoding", + "pin-project-lite", + "ryu", + "tokio", + "tokio-util", + "url", +] + [[package]] name = "redox_syscall" version = "0.1.57" @@ -4055,13 +4659,28 @@ dependencies = [ "objc", "objc-foundation", "objc_id", - "raw-window-handle 0.5.0", + "raw-window-handle", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", "windows 0.37.0", ] +[[package]] +name = "ring" +version = "0.16.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +dependencies = [ + "cc", + "libc", + "once_cell", + "spin 0.5.2", + "untrusted", + "web-sys", + "winapi", +] + [[package]] name = "ring" version = "0.17.0-alpha.11" @@ -4090,9 +4709,9 @@ dependencies = [ [[package]] name = "rmp-serde" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25786b0d276110195fa3d6f3f31299900cf71dfbd6c28450f3f58a0e7f7a347e" +checksum = "c5b13be192e0220b8afb7222aa5813cb62cc269ebb5cac346ca6487681d2913e" dependencies = [ "byteorder", "rmp", @@ -4101,16 +4720,15 @@ dependencies = [ [[package]] name = "rspc" -version = "0.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "443633b1d8808c9b4e27dce8797b9062f86ae214999c825fd9133a73d6550333" +version = "0.1.2" +source = "git+https://github.com/oscartbeaumont/rspc?rev=08c19f5e485dfc6841c7e9877c80058402bf71d7#08c19f5e485dfc6841c7e9877c80058402bf71d7" dependencies = [ - "axum", + "async-stream", "futures", - "nanoid", + "httpz", "serde", "serde_json", - "specta 0.0.3", + "specta 0.0.4", "tauri", "thiserror", "tokio", @@ -4118,19 +4736,18 @@ dependencies = [ ] [[package]] -name = "rspc" -version = "0.1.2" +name = "rtnetlink" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712fc4e2fc79297d308fa4575f19f6967bf7610e3292446dfb392738aeab5239" +checksum = "322c53fd76a18698f1c27381d58091de3a043d356aa5bd0d510608b565f469a0" dependencies = [ - "async-stream", + "async-global-executor", "futures", - "serde", - "serde_json", - "specta 0.0.4", - "tauri", + "log", + "netlink-packet-route", + "netlink-proto", + "nix 0.24.2", "thiserror", - "tokio", ] [[package]] @@ -4146,7 +4763,7 @@ dependencies = [ "hashlink", "libsqlite3-sys", "memchr", - "smallvec", + "smallvec 1.10.0", ] [[package]] @@ -4179,6 +4796,48 @@ dependencies = [ "semver 1.0.14", ] +[[package]] +name = "rustls" +version = "0.20.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aab8ee6c7097ed6057f43c187a62418d0c05a4bd5f18b3571db50ee0f9ce033" +dependencies = [ + "log", + "ring 0.16.20", + "sct", + "webpki", +] + +[[package]] +name = "rustls-native-certs" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0167bac7a9f490495f3c33013e7722b53cb087ecbe082fb0c6387c96f634ea50" +dependencies = [ + "openssl-probe", + "rustls-pemfile 1.0.1", + "schannel", + "security-framework", +] + +[[package]] +name = "rustls-pemfile" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5eebeaeb360c87bfb72e84abdb3447159c0eaececf1bef2aecd65a8be949d1c9" +dependencies = [ + "base64 0.13.0", +] + +[[package]] +name = "rustls-pemfile" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0864aeff53f8c05aa08d86e5ef839d3dfcf07aeba2db32f12db0ef716e87bd55" +dependencies = [ + "base64 0.13.0", +] + [[package]] name = "rustversion" version = "1.0.9" @@ -4267,6 +4926,16 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" +[[package]] +name = "sct" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" +dependencies = [ + "ring 0.16.20", + "untrusted", +] + [[package]] name = "sd-core" version = "0.1.0" @@ -4288,11 +4957,12 @@ dependencies = [ "int-enum 0.4.0", "itertools", "once_cell", + "openssl-sys", "prisma-client-rust", - "ring", + "ring 0.17.0-alpha.11", "rmp", "rmp-serde", - "rspc 0.0.5", + "rspc", "sd-ffmpeg", "sd-file-ext", "serde", @@ -4319,7 +4989,7 @@ dependencies = [ "once_cell", "openssl", "openssl-sys", - "rspc 0.0.5", + "rspc", "sd-core", "serde_json", "tokio", @@ -4348,18 +5018,75 @@ dependencies = [ [[package]] name = "sd-p2p" version = "0.1.0" +dependencies = [ + "bip39", + "ctrlc", + "dashmap", + "futures-util", + "if-watch", + "mdns-sd", + "quinn", + "rcgen", + "rmp-serde", + "rustls", + "sd-tunnel-utils", + "serde", + "spake2", + "specta 0.0.2", + "thiserror", + "tokio", + "tracing", + "ts-rs", +] [[package]] name = "sd-sync" version = "0.1.0" dependencies = [ - "rspc 0.1.2", + "rspc", "serde", "serde_json", "uhlc", "uuid 1.1.2", ] +[[package]] +name = "sd-tunnel" +version = "0.1.0" +dependencies = [ + "base64 0.13.0", + "bb8-redis", + "dotenv", + "futures", + "metrics 0.19.0", + "metrics-exporter-prometheus", + "quinn", + "rcgen", + "rmp-serde", + "rustls", + "sd-tunnel-utils", + "serde", + "thiserror", + "tokio", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "sd-tunnel-utils" +version = "0.1.0" +dependencies = [ + "quinn", + "ring 0.16.20", + "rmp", + "rmp-serde", + "rustls", + "serde", + "specta 0.0.2", + "thiserror", + "ts-rs", +] + [[package]] name = "security-framework" version = "2.7.0" @@ -4399,7 +5126,7 @@ dependencies = [ "phf_codegen", "precomputed-hash", "servo_arc", - "smallvec", + "smallvec 1.10.0", "thin-slice", ] @@ -4554,7 +5281,7 @@ version = "0.1.0" dependencies = [ "axum", "ctrlc", - "rspc 0.0.5", + "rspc", "sd-core", "tokio", "tracing", @@ -4678,14 +5405,23 @@ version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef" dependencies = [ - "autocfg", + "autocfg 1.1.0", ] [[package]] name = "smallvec" -version = "1.9.0" +version = "0.6.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fd0db749597d91ff862fd1d55ea87f7855a744a8425a64695b6fca237d1dad1" +checksum = "b97fcaeba89edba30f044a10c6a3cc39df9c3f17d7cd829dd1446cab35f890e0" +dependencies = [ + "maybe-uninit", +] + +[[package]] +name = "smallvec" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" [[package]] name = "socket2" @@ -4729,7 +5465,7 @@ dependencies = [ name = "spacedrive" version = "0.1.0" dependencies = [ - "rspc 0.0.5", + "rspc", "sd-core", "serde", "swift-rs", @@ -4741,29 +5477,39 @@ dependencies = [ ] [[package]] -name = "specta" -version = "0.0.3" +name = "spake2" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4145d41e1881c57b714f979ef01c8add58a1984b46f8858ea67f35fd01ebd1e" +checksum = "7139ade210556eca57dfc299ec2454846ab6be09232eb1139a36e285ae7fd48e" +dependencies = [ + "curve25519-dalek", + "hkdf", + "rand_core 0.5.1", + "sha2 0.10.6", +] + +[[package]] +name = "specta" +version = "0.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8dfbc46bfad9289e01928a228b82fdf615131212aded5497cce2d460b452e94" dependencies = [ - "chrono", "convert_case 0.5.0", - "indexmap", "serde_json", - "specta-macros", + "specta-macros 0.0.2", "termcolor", - "uuid 1.1.2", ] [[package]] name = "specta" version = "0.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5886f252f583ae32d4ae21c228c7a4ab3da40a7ebed646886b942f4085047394" +source = "git+https://github.com/oscartbeaumont/rspc?rev=08c19f5e485dfc6841c7e9877c80058402bf71d7#08c19f5e485dfc6841c7e9877c80058402bf71d7" dependencies = [ + "chrono", "convert_case 0.6.0", + "indexmap", "serde_json", - "specta-macros", + "specta-macros 0.0.4", "termcolor", "uuid 1.1.2", ] @@ -4781,6 +5527,18 @@ dependencies = [ "termcolor", ] +[[package]] +name = "specta-macros" +version = "0.0.4" +source = "git+https://github.com/oscartbeaumont/rspc?rev=08c19f5e485dfc6841c7e9877c80058402bf71d7#08c19f5e485dfc6841c7e9877c80058402bf71d7" +dependencies = [ + "Inflector", + "proc-macro2", + "quote", + "syn", + "termcolor", +] + [[package]] name = "spin" version = "0.5.2" @@ -4977,6 +5735,12 @@ dependencies = [ "syn", ] +[[package]] +name = "subtle" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" + [[package]] name = "swift-rs" version = "0.3.0" @@ -5000,9 +5764,9 @@ dependencies = [ [[package]] name = "syn" -version = "1.0.100" +version = "1.0.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52205623b1b0f064a4e71182c3b18ae902267282930c6d5462c91b859668426e" +checksum = "e90cde112c4b9690b8cbe810cba9ddd8bc1d7472e2cae317b69e9438c1cba7d2" dependencies = [ "proc-macro2", "quote", @@ -5017,9 +5781,9 @@ checksum = "20518fe4a4c9acf048008599e464deb21beeae3d3578418951a189c235a7a9a8" [[package]] name = "sysinfo" -version = "0.23.13" +version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3977ec2e0520829be45c8a2df70db2bf364714d8a748316a10c3c35d4d2b01c9" +checksum = "7890fff842b8db56f2033ebee8f6efe1921475c3830c115995552914fb967580" dependencies = [ "cfg-if 1.0.0", "core-foundation-sys", @@ -5030,6 +5794,27 @@ dependencies = [ "winapi", ] +[[package]] +name = "system-configuration" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d75182f12f490e953596550b65ee31bda7c8e043d9386174b353bda50838c3fd" +dependencies = [ + "bitflags", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "system-deps" version = "5.0.0" @@ -5092,7 +5877,7 @@ dependencies = [ "parking_lot 0.12.1", "paste", "png 0.17.6", - "raw-window-handle 0.5.0", + "raw-window-handle", "scopeguard", "serde", "unicode-segmentation", @@ -5141,7 +5926,7 @@ dependencies = [ "os_pipe", "percent-encoding", "rand 0.8.5", - "raw-window-handle 0.5.0", + "raw-window-handle", "regex", "rfd", "semver 1.0.14", @@ -5203,7 +5988,7 @@ dependencies = [ "sha2 0.10.6", "tauri-utils", "thiserror", - "time 0.3.14", + "time 0.3.15", "uuid 1.1.2", "walkdir", ] @@ -5233,7 +6018,7 @@ dependencies = [ "http-range", "infer", "rand 0.8.5", - "raw-window-handle 0.5.0", + "raw-window-handle", "serde", "serde_json", "tauri-utils", @@ -5253,7 +6038,7 @@ dependencies = [ "gtk", "percent-encoding", "rand 0.8.5", - "raw-window-handle 0.5.0", + "raw-window-handle", "tauri-runtime", "tauri-utils", "uuid 1.1.2", @@ -5402,25 +6187,33 @@ dependencies = [ [[package]] name = "time" -version = "0.1.43" +version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438" +checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255" dependencies = [ "libc", + "wasi 0.10.0+wasi-snapshot-preview1", "winapi", ] [[package]] name = "time" -version = "0.3.14" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c3f9a28b618c3a6b9251b6908e9c99e04b9e5c02e6581ccbb67d59c34ef7f9b" +checksum = "d634a985c4d4238ec39cacaed2e7ae552fbd3c476b552c1deac3021b7d7eaf0c" dependencies = [ "itoa 1.0.3", "libc", "num_threads", + "time-macros", ] +[[package]] +name = "time-macros" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42657b1a6f4d817cda8e7a0ace261fe0cc946cf3a80314390b22cc61ae080792" + [[package]] name = "tinyvec" version = "1.6.0" @@ -5442,12 +6235,13 @@ version = "1.21.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a9e03c497dc955702ba729190dc4aac6f2a0ce97f913e5b1b5912fc5039d9099" dependencies = [ - "autocfg", + "autocfg 1.1.0", "bytes", "libc", "memchr", "mio", "num_cpus", + "parking_lot 0.12.1", "pin-project-lite", "signal-hook-registry", "socket2", @@ -5476,18 +6270,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "tokio-tungstenite" -version = "0.17.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f714dd15bead90401d77e04243611caec13726c2408afd5b31901dfcdcb3b181" -dependencies = [ - "futures-util", - "log", - "tokio", - "tungstenite", -] - [[package]] name = "tokio-util" version = "0.7.4" @@ -5560,9 +6342,9 @@ checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" [[package]] name = "tracing" -version = "0.1.36" +version = "0.1.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fce9567bd60a67d08a16488756721ba392f24f29006402881e43b19aac64307" +checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" dependencies = [ "cfg-if 1.0.0", "log", @@ -5573,9 +6355,9 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.22" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11c75893af559bc8e10716548bdef5cb2b983f8e637db9d0e15126b61b484ee2" +checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a" dependencies = [ "proc-macro2", "quote", @@ -5584,9 +6366,9 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.29" +version = "0.1.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aeea4303076558a00714b823f9ad67d58a3bbda1df83d8827d21193156e22f7" +checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" dependencies = [ "once_cell", "valuable", @@ -5648,7 +6430,7 @@ dependencies = [ "once_cell", "regex", "sharded-slab", - "smallvec", + "smallvec 1.10.0", "thread_local", "tracing", "tracing-core", @@ -5693,6 +6475,29 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" +[[package]] +name = "ts-rs" +version = "6.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc59f479df54269b400dd95bc3b7e81623b3e4b9c70c8ca7125ab8341eafa64e" +dependencies = [ + "thiserror", + "ts-rs-macros", +] + +[[package]] +name = "ts-rs-macros" +version = "6.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f807fdb3151fee75df7485b901a89624358cd07a67a8fb1a5831bf5a07681ff" +dependencies = [ + "Inflector", + "proc-macro2", + "quote", + "syn", + "termcolor", +] + [[package]] name = "tungstenite" version = "0.17.3" @@ -5752,11 +6557,11 @@ checksum = "dcc811dc4066ac62f84f11307873c4850cb653bfa9b1719cee2bd2204a4bc5dd" [[package]] name = "unicode-normalization" -version = "0.1.22" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +checksum = "09c8070a9942f5e7cfccd93f490fdebd230ee3c3c9f107cb25bad5351ef671cf" dependencies = [ - "tinyvec", + "smallvec 0.6.14", ] [[package]] @@ -5788,9 +6593,9 @@ checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" [[package]] name = "url" -version = "2.3.1" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643" +checksum = "22fe195a4f217c25b25cb5058ced57059824a678474874038dc88d211bf508d3" dependencies = [ "form_urlencoded", "idna", @@ -5884,6 +6689,12 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" +[[package]] +name = "waker-fn" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca" + [[package]] name = "walkdir" version = "2.3.2" @@ -5913,9 +6724,9 @@ checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" [[package]] name = "wasi" -version = "0.10.2+wasi-snapshot-preview1" +version = "0.10.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" +checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" [[package]] name = "wasi" @@ -6056,6 +6867,16 @@ dependencies = [ "libwebp-sys", ] +[[package]] +name = "webpki" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bd" +dependencies = [ + "ring 0.16.20", + "untrusted", +] + [[package]] name = "webview2-com" version = "0.19.1" @@ -6100,6 +6921,15 @@ version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9193164d4de03a926d909d3bc7c30543cecb35400c02114792c2cae20d5e2dbb" +[[package]] +name = "wepoll-ffi" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d743fdedc5c64377b5fc2bc036b01c7fd642205a0d96356034ae3404d49eb7fb" +dependencies = [ + "cc", +] + [[package]] name = "winapi" version = "0.3.9" @@ -6133,13 +6963,13 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "window-shadows" -version = "0.1.3" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "796156ad1a67853e927727809bb6138ddc1f19ebced0dc976c0d109d5e2576f7" +checksum = "6c69eb48aac2da0199ea148c6f2c2610db8a0572b32a3dc857dec40ca22f1cec" dependencies = [ "cocoa", "objc", - "raw-window-handle 0.4.3", + "raw-window-handle", "windows-sys", ] @@ -6156,6 +6986,19 @@ dependencies = [ "windows_x86_64_msvc 0.32.0", ] +[[package]] +name = "windows" +version = "0.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45296b64204227616fdbf2614cefa4c236b98ee64dfaaaa435207ed99fe7829f" +dependencies = [ + "windows_aarch64_msvc 0.34.0", + "windows_i686_gnu 0.34.0", + "windows_i686_msvc 0.34.0", + "windows_x86_64_gnu 0.34.0", + "windows_x86_64_msvc 0.34.0", +] + [[package]] name = "windows" version = "0.37.0" @@ -6234,6 +7077,12 @@ version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d8e92753b1c443191654ec532f14c199742964a061be25d77d7a96f09db20bf5" +[[package]] +name = "windows_aarch64_msvc" +version = "0.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17cffbe740121affb56fad0fc0e421804adf0ae00891205213b5cecd30db881d" + [[package]] name = "windows_aarch64_msvc" version = "0.36.1" @@ -6258,6 +7107,12 @@ version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a711c68811799e017b6038e0922cb27a5e2f43a2ddb609fe0b6f3eeda9de615" +[[package]] +name = "windows_i686_gnu" +version = "0.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2564fde759adb79129d9b4f54be42b32c89970c18ebf93124ca8870a498688ed" + [[package]] name = "windows_i686_gnu" version = "0.36.1" @@ -6282,6 +7137,12 @@ version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "146c11bb1a02615db74680b32a68e2d61f553cc24c4eb5b4ca10311740e44172" +[[package]] +name = "windows_i686_msvc" +version = "0.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cd9d32ba70453522332c14d38814bceeb747d80b3958676007acadd7e166956" + [[package]] name = "windows_i686_msvc" version = "0.36.1" @@ -6306,6 +7167,12 @@ version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c912b12f7454c6620635bbff3450962753834be2a594819bd5e945af18ec64bc" +[[package]] +name = "windows_x86_64_gnu" +version = "0.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfce6deae227ee8d356d19effc141a509cc503dfd1f850622ec4b0f84428e1f4" + [[package]] name = "windows_x86_64_gnu" version = "0.36.1" @@ -6330,6 +7197,12 @@ version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "504a2476202769977a040c6364301a3f65d0cc9e3fb08600b2bda150a0488316" +[[package]] +name = "windows_x86_64_msvc" +version = "0.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d19538ccc21819d01deaf88d6a17eae6596a12e9aafdbb97916fb49896d89de9" + [[package]] name = "windows_x86_64_msvc" version = "0.36.1" @@ -6446,3 +7319,18 @@ name = "xml-rs" version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2d7d3948613f75c98fd9328cfdcc45acc4d360655289d0a7d4ec931392200a3" + +[[package]] +name = "yasna" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "346d34a236c9d3e5f3b9b74563f238f955bbd05fa0b8b4efa53c130c43982f4c" +dependencies = [ + "time 0.3.15", +] + +[[package]] +name = "zeroize" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4756f7db3f7b5574938c3eb1c117038b8e07f95ee6718c0efad4ac21508f1efd" diff --git a/Cargo.toml b/Cargo.toml index 2d17a662d..c12745288 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,6 +2,8 @@ members = [ "core", "crates/*", + "crates/p2p/tunnel", + "crates/p2p/tunnel/utils", "crates/sync/example/src-tauri", "apps/desktop/src-tauri", "apps/mobile/rust", @@ -10,19 +12,22 @@ members = [ resolver = "2" [workspace.dependencies] -prisma-client-rust = { git = "https://github.com/Brendonovich/prisma-client-rust.git", rev = "762ba6c06b9386102aea37538fdfe0b2aa24fd52", features = [ +prisma-client-rust = { git = "https://github.com/Brendonovich/prisma-client-rust.git", rev = "078919e3724f35cc00c2402c66ba585b61c88d47", features = [ "rspc", "sqlite-create-many", "migrations", "sqlite", ], default-features = false } -prisma-client-rust-cli = { git = "https://github.com/Brendonovich/prisma-client-rust.git", rev = "762ba6c06b9386102aea37538fdfe0b2aa24fd52", features = [ +prisma-client-rust-cli = { git = "https://github.com/Brendonovich/prisma-client-rust.git", rev = "078919e3724f35cc00c2402c66ba585b61c88d47", features = [ "rspc", "sqlite-create-many", "migrations", "sqlite", ], default-features = false } +rspc = { version = "0.1.2" } [patch.crates-io] # We use this patch so we can compile for the IOS simulator on M1 -openssl-sys = { git = "https://github.com/spacedriveapp/rust-openssl" } +openssl-sys = { git = "https://github.com/spacedriveapp/rust-openssl", rev = "92c3dec225a9e984884d5b30a517e5d44a24d03b" } + +rspc = { git = "https://github.com/oscartbeaumont/rspc", rev = "08c19f5e485dfc6841c7e9877c80058402bf71d7" } # TODO: Move back to crates.io when new jsonrpc executor is release \ No newline at end of file diff --git a/README.md b/README.md index f386104c6..7c554606e 100644 --- a/README.md +++ b/README.md @@ -109,4 +109,3 @@ This project is using what I'm calling the **"PRRTT"** stack (Prisma, Rust, Reac - `ios`: A [Swift](https://developer.apple.com/swift/) Native binary (planned). - `windows`: A [C#](https://docs.microsoft.com/en-us/dotnet/csharp/) Native binary (planned). - `android`: A [Kotlin](https://kotlinlang.org/) Native binary (planned). - diff --git a/apps/desktop/package.json b/apps/desktop/package.json index 818905ec2..a567d20a5 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -11,32 +11,32 @@ "build": "tauri build" }, "dependencies": { - "@rspc/client": "^0.0.6", - "@rspc/tauri": "^0.0.6", + "@rspc/client": "^0.1.2", + "@rspc/tauri": "^0.1.2", "@sd/client": "workspace:*", "@sd/interface": "workspace:*", "@sd/ui": "workspace:*", - "@tanstack/react-query": "^4.0.10", - "@tauri-apps/api": "1.0.2", + "@tanstack/react-query": "^4.10.1", + "@tauri-apps/api": "1.1.0", "react": "^18.2.0", "react-dom": "^18.2.0" }, "devDependencies": { - "@tauri-apps/cli": "1.0.5", + "@tauri-apps/cli": "1.1.1", "@tauri-apps/tauricon": "github:tauri-apps/tauricon", "@types/babel-core": "^6.25.7", "@types/byte-size": "^8.1.0", - "@types/react": "^18.0.15", + "@types/react": "^18.0.21", "@types/react-dom": "^18.0.6", "@types/react-router-dom": "^5.3.3", "@types/react-window": "^1.8.5", "@types/tailwindcss": "^3.1.0", - "@vitejs/plugin-react": "^2.0.0", - "concurrently": "^7.3.0", + "@vitejs/plugin-react": "^2.1.0", + "concurrently": "^7.4.0", "prettier": "^2.7.1", - "sass": "^1.54.0", - "typescript": "^4.7.4", - "vite": "^3.0.3", + "sass": "^1.55.0", + "typescript": "^4.8.4", + "vite": "^3.1.4", "vite-plugin-filter-replace": "^0.1.9", "vite-plugin-svgr": "^2.2.1" } diff --git a/apps/desktop/src-tauri/.env.example b/apps/desktop/src-tauri/.env.example deleted file mode 100644 index dcb15beb5..000000000 --- a/apps/desktop/src-tauri/.env.example +++ /dev/null @@ -1 +0,0 @@ -RUST_LOG=spacedrive=debug,sdcore=debug \ No newline at end of file diff --git a/apps/desktop/src-tauri/Cargo.toml b/apps/desktop/src-tauri/Cargo.toml index 62f0b2a48..c249d17a8 100644 --- a/apps/desktop/src-tauri/Cargo.toml +++ b/apps/desktop/src-tauri/Cargo.toml @@ -10,19 +10,19 @@ edition = "2021" build = "build.rs" [dependencies] -tauri = { version = "1.0.4", features = ["api-all", "macos-private-api"] } -rspc = { version = "0.0.5", features = ["tauri"] } +tauri = { version = "1.1.1", features = ["api-all", "macos-private-api"] } +rspc = { workspace = true, features = ["tauri"] } sd-core = { path = "../../../core", features = ["ffmpeg"] } -tokio = { version = "1.17.0", features = ["sync"] } -window-shadows = "0.1.2" -tracing = "0.1.35" -serde = "1.0.144" +tokio = { version = "1.21.2", features = ["sync"] } +window-shadows = "0.2.0" +tracing = "0.1.36" +serde = "1.0.145" [target.'cfg(target_os = "macos")'.dependencies] swift-rs = { git = "https://github.com/Brendonovich/swift-rs.git", branch = "autorelease" } [build-dependencies] -tauri-build = { version = "1.0.0", features = [] } +tauri-build = { version = "1.1.1", features = [] } [target.'cfg(target_os = "macos")'.build-dependencies] swift-rs = { git = "https://github.com/Brendonovich/swift-rs.git", branch = "autorelease", features = [ diff --git a/apps/desktop/src/index.tsx b/apps/desktop/src/index.tsx index 2e5aa61b0..5bf37ecfb 100644 --- a/apps/desktop/src/index.tsx +++ b/apps/desktop/src/index.tsx @@ -1,6 +1,6 @@ import { createClient } from '@rspc/client'; import { TauriTransport } from '@rspc/tauri'; -import { OperatingSystem, Operations, PlatformProvider, queryClient, rspc } from '@sd/client'; +import { OperatingSystem, PlatformProvider, Procedures, queryClient, rspc } from '@sd/client'; import SpacedriveInterface, { Platform } from '@sd/interface'; import { KeybindEvent } from '@sd/interface'; import { dialog, invoke, os, shell } from '@tauri-apps/api'; @@ -10,7 +10,7 @@ import { createRoot } from 'react-dom/client'; import '@sd/ui/style'; -const client = createClient({ +const client = createClient({ transport: new TauriTransport() }); diff --git a/apps/mobile/android/app/build.gradle b/apps/mobile/android/app/build.gradle index d825f46f4..2b07ca96a 100644 --- a/apps/mobile/android/app/build.gradle +++ b/apps/mobile/android/app/build.gradle @@ -7,7 +7,7 @@ apply plugin: 'org.mozilla.rust-android-gradle.rust-android' cargo { module = "../../rust" - libname = "sdcore" + libname = "sd_core_mobile" // profile = 'release', pythonCommand = 'python3' targets = ["arm", "arm64", "x86", "x86_64"] diff --git a/apps/mobile/android/app/src/main/java/com/spacedrive/app/SDCore.java b/apps/mobile/android/app/src/main/java/com/spacedrive/app/SDCore.java index 782f44a1b..d6c9f011d 100644 --- a/apps/mobile/android/app/src/main/java/com/spacedrive/app/SDCore.java +++ b/apps/mobile/android/app/src/main/java/com/spacedrive/app/SDCore.java @@ -28,7 +28,7 @@ public class SDCore extends ReactContextBaseJavaModule { } static { - System.loadLibrary("sdcore"); + System.loadLibrary("sd_core_mobile"); } // is exposed by Rust and is used to register the subscription @@ -47,6 +47,11 @@ public class SDCore extends ReactContextBaseJavaModule { return getCurrentActivity().getFilesDir().toString(); } + public void print(String msg) + { + System.out.println(msg); + } + @ReactMethod public void addListener(String eventName) { diff --git a/apps/mobile/ios/Podfile.lock b/apps/mobile/ios/Podfile.lock index 5825a73f1..9c1fd60da 100644 --- a/apps/mobile/ios/Podfile.lock +++ b/apps/mobile/ios/Podfile.lock @@ -7,13 +7,13 @@ PODS: - ExpoModulesCore - EXFileSystem (14.1.0): - ExpoModulesCore - - EXFont (10.2.0): + - EXFont (10.2.1): - ExpoModulesCore - - Expo (46.0.10): + - Expo (46.0.15): - ExpoModulesCore - ExpoKeepAwake (10.2.0): - ExpoModulesCore - - ExpoModulesCore (0.11.5): + - ExpoModulesCore (0.11.7): - React-Core - ReactCommon/turbomodule/core - EXSplashScreen (0.16.2): @@ -31,7 +31,7 @@ PODS: - glog (0.3.5) - hermes-engine (0.69.4) - libevent (2.1.12) - - lottie-ios (3.4.2) + - lottie-ios (3.4.3) - lottie-react-native (5.1.4): - lottie-ios (~> 3.4.0) - React-Core @@ -333,7 +333,7 @@ PODS: - React-jsi (= 0.69.4) - React-logger (= 0.69.4) - React-perflogger (= 0.69.4) - - RNCAsyncStorage (1.17.7): + - RNCAsyncStorage (1.17.10): - React-Core - RNCMaskedView (0.2.7): - React-Core @@ -376,14 +376,14 @@ PODS: DEPENDENCIES: - boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`) - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) - - "EXApplication (from `../node_modules/.pnpm/expo-application@4.2.2_expo@46.0.10/node_modules/expo-application/ios`)" - - "EXConstants (from `../node_modules/.pnpm/expo-constants@13.2.4_expo@46.0.10/node_modules/expo-constants/ios`)" - - "EXFileSystem (from `../node_modules/.pnpm/expo-file-system@14.1.0_expo@46.0.10/node_modules/expo-file-system/ios`)" - - "EXFont (from `../node_modules/.pnpm/expo-font@10.2.0_expo@46.0.10/node_modules/expo-font/ios`)" - - "Expo (from `../node_modules/.pnpm/expo@46.0.10_@babel+core@7.18.10/node_modules/expo`)" - - "ExpoKeepAwake (from `../node_modules/.pnpm/expo-keep-awake@10.2.0_expo@46.0.10/node_modules/expo-keep-awake/ios`)" - - "ExpoModulesCore (from `../node_modules/.pnpm/expo-modules-core@0.11.5/node_modules/expo-modules-core/ios`)" - - "EXSplashScreen (from `../node_modules/.pnpm/expo-splash-screen@0.16.2_expo@46.0.10/node_modules/expo-splash-screen/ios`)" + - "EXApplication (from `../node_modules/.pnpm/expo-application@4.2.2_expo@46.0.15/node_modules/expo-application/ios`)" + - "EXConstants (from `../node_modules/.pnpm/expo-constants@13.2.4_expo@46.0.15/node_modules/expo-constants/ios`)" + - "EXFileSystem (from `../node_modules/.pnpm/expo-file-system@14.1.0_expo@46.0.15/node_modules/expo-file-system/ios`)" + - "EXFont (from `../node_modules/.pnpm/expo-font@10.2.1_expo@46.0.15/node_modules/expo-font/ios`)" + - "Expo (from `../node_modules/.pnpm/expo@46.0.15_@babel+core@7.19.3/node_modules/expo`)" + - "ExpoKeepAwake (from `../node_modules/.pnpm/expo-keep-awake@10.2.0_expo@46.0.15/node_modules/expo-keep-awake/ios`)" + - "ExpoModulesCore (from `../node_modules/.pnpm/expo-modules-core@0.11.7/node_modules/expo-modules-core/ios`)" + - "EXSplashScreen (from `../node_modules/.pnpm/expo-splash-screen@0.16.2_expo@46.0.15/node_modules/expo-splash-screen/ios`)" - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) - FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`) - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) @@ -439,21 +439,21 @@ EXTERNAL SOURCES: DoubleConversion: :podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec" EXApplication: - :path: "../node_modules/.pnpm/expo-application@4.2.2_expo@46.0.10/node_modules/expo-application/ios" + :path: "../node_modules/.pnpm/expo-application@4.2.2_expo@46.0.15/node_modules/expo-application/ios" EXConstants: - :path: "../node_modules/.pnpm/expo-constants@13.2.4_expo@46.0.10/node_modules/expo-constants/ios" + :path: "../node_modules/.pnpm/expo-constants@13.2.4_expo@46.0.15/node_modules/expo-constants/ios" EXFileSystem: - :path: "../node_modules/.pnpm/expo-file-system@14.1.0_expo@46.0.10/node_modules/expo-file-system/ios" + :path: "../node_modules/.pnpm/expo-file-system@14.1.0_expo@46.0.15/node_modules/expo-file-system/ios" EXFont: - :path: "../node_modules/.pnpm/expo-font@10.2.0_expo@46.0.10/node_modules/expo-font/ios" + :path: "../node_modules/.pnpm/expo-font@10.2.1_expo@46.0.15/node_modules/expo-font/ios" Expo: - :path: "../node_modules/.pnpm/expo@46.0.10_@babel+core@7.18.10/node_modules/expo" + :path: "../node_modules/.pnpm/expo@46.0.15_@babel+core@7.19.3/node_modules/expo" ExpoKeepAwake: - :path: "../node_modules/.pnpm/expo-keep-awake@10.2.0_expo@46.0.10/node_modules/expo-keep-awake/ios" + :path: "../node_modules/.pnpm/expo-keep-awake@10.2.0_expo@46.0.15/node_modules/expo-keep-awake/ios" ExpoModulesCore: - :path: "../node_modules/.pnpm/expo-modules-core@0.11.5/node_modules/expo-modules-core/ios" + :path: "../node_modules/.pnpm/expo-modules-core@0.11.7/node_modules/expo-modules-core/ios" EXSplashScreen: - :path: "../node_modules/.pnpm/expo-splash-screen@0.16.2_expo@46.0.10/node_modules/expo-splash-screen/ios" + :path: "../node_modules/.pnpm/expo-splash-screen@0.16.2_expo@46.0.15/node_modules/expo-splash-screen/ios" FBLazyVector: :path: "../node_modules/react-native/Libraries/FBLazyVector" FBReactNativeSpec: @@ -541,10 +541,10 @@ SPEC CHECKSUMS: EXApplication: e418d737a036e788510f2c4ad6c10a7d54d18586 EXConstants: 7c44785d41d8e959d527d23d29444277a4d1ee73 EXFileSystem: 927e0a8885aa9c49e50fc38eaba2c2389f2f1019 - EXFont: a5d80bd9b3452b2d5abbce2487da89b0150e6487 - Expo: fcdb32274e2ca9c7638d3b21b30fb665c6869219 + EXFont: 06df627203afcb8a3b3152ec06eb2f11f46f0cff + Expo: 7e821e708a35d2720ef6baa658e224dd91c4821e ExpoKeepAwake: 0e8f18142e71bbf2c7f6aa66ebed249ba1420320 - ExpoModulesCore: 5a973701f4400d70254bc836305228731c829010 + ExpoModulesCore: 2d60ec04c49641afb55fee3faac86fb108c68fe0 EXSplashScreen: 799bece80089219b2c989c1082d70f3b00995cda FBLazyVector: c71b8c429a8af2aff1013934a7152e9d9d0c937d FBReactNativeSpec: 3cc5cff7d792e74a875be91e56d6242335016f50 @@ -552,7 +552,7 @@ SPEC CHECKSUMS: glog: 3d02b25ca00c2d456734d0bcff864cbc62f6ae1a hermes-engine: 761a544537e62df2a37189389b9d2654dc1f75af libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 - lottie-ios: 6bbc53eef6957e4744a50321507015fba72d8ca6 + lottie-ios: 9ae750cdc7820fecbd3c2f0cfc493038208fcdc4 lottie-react-native: b702fab740cdb952a8e2354713d3beda63ff97b0 RCT-Folly: b9d9fe1fc70114b751c076104e52f3b1b5e5a95a RCTRequired: bd9d2ab0fda10171fcbcf9ba61a7df4dc15a28f4 @@ -582,7 +582,7 @@ SPEC CHECKSUMS: React-RCTVibration: 9adb4a3cbb598d1bbd46a05256f445e4b8c70603 React-runtimeexecutor: 61ee22a8cdf8b6bb2a7fb7b4ba2cc763e5285196 ReactCommon: 8f67bd7e0a6afade0f20718f859dc8c2275f2e83 - RNCAsyncStorage: d81ee5c3db1060afd49ea7045ad460eff82d2b7d + RNCAsyncStorage: 0c357f3156fcb16c8589ede67cc036330b6698ca RNCMaskedView: cb9670ea9239998340eaab21df13fa12a1f9de15 RNGestureHandler: bad495418bcbd3ab47017a38d93d290ebd406f50 RNReanimated: 7faa787e8d4493fbc95fab2ad331fa7625828cfa diff --git a/apps/mobile/ios/Spacedrive.xcodeproj/project.pbxproj b/apps/mobile/ios/Spacedrive.xcodeproj/project.pbxproj index 003b6e4b7..ecaea1a36 100644 --- a/apps/mobile/ios/Spacedrive.xcodeproj/project.pbxproj +++ b/apps/mobile/ios/Spacedrive.xcodeproj/project.pbxproj @@ -366,6 +366,7 @@ "@executable_path/Frameworks", ); LIBRARY_SEARCH_PATHS = ( + "$(SDKROOT)/usr/lib/swift", "$(inherited)", "\"${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}\"", "\"${PODS_CONFIGURATION_BUILD_DIR}/DoubleConversion\"", @@ -455,6 +456,7 @@ "@executable_path/Frameworks", ); LIBRARY_SEARCH_PATHS = ( + "$(SDKROOT)/usr/lib/swift", "$(inherited)", "\"${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}\"", "\"${PODS_CONFIGURATION_BUILD_DIR}/DoubleConversion\"", @@ -579,7 +581,7 @@ /usr/lib/swift, "$(inherited)", ); - LIBRARY_SEARCH_PATHS = "\"$(inherited)\""; + LIBRARY_SEARCH_PATHS = "$(SDKROOT)/usr/lib/swift\"$(inherited)\""; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; @@ -633,7 +635,7 @@ /usr/lib/swift, "$(inherited)", ); - LIBRARY_SEARCH_PATHS = "\"$(inherited)\""; + LIBRARY_SEARCH_PATHS = "$(SDKROOT)/usr/lib/swift\"$(inherited)\""; MTL_ENABLE_DEBUG_INFO = NO; REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; SDKROOT = iphoneos; diff --git a/apps/mobile/ios/Spacedrive/Images.xcassets/AppIcon.appiconset/Contents.json b/apps/mobile/ios/Spacedrive/Images.xcassets/AppIcon.appiconset/Contents.json index f920cb0ec..53263a682 100644 --- a/apps/mobile/ios/Spacedrive/Images.xcassets/AppIcon.appiconset/Contents.json +++ b/apps/mobile/ios/Spacedrive/Images.xcassets/AppIcon.appiconset/Contents.json @@ -1,122 +1,122 @@ { - "images": [ - { - "idiom": "iphone", - "size": "20x20", - "scale": "2x", - "filename": "App-Icon-20x20@2x.png" - }, - { - "idiom": "iphone", - "size": "20x20", - "scale": "3x", - "filename": "App-Icon-20x20@3x.png" - }, - { - "idiom": "iphone", - "size": "29x29", - "scale": "1x", - "filename": "App-Icon-29x29@1x.png" - }, - { - "idiom": "iphone", - "size": "29x29", - "scale": "2x", - "filename": "App-Icon-29x29@2x.png" - }, - { - "idiom": "iphone", - "size": "29x29", - "scale": "3x", - "filename": "App-Icon-29x29@3x.png" - }, - { - "idiom": "iphone", - "size": "40x40", - "scale": "2x", - "filename": "App-Icon-40x40@2x.png" - }, - { - "idiom": "iphone", - "size": "40x40", - "scale": "3x", - "filename": "App-Icon-40x40@3x.png" - }, - { - "idiom": "iphone", - "size": "60x60", - "scale": "2x", - "filename": "App-Icon-60x60@2x.png" - }, - { - "idiom": "iphone", - "size": "60x60", - "scale": "3x", - "filename": "App-Icon-60x60@3x.png" - }, - { - "idiom": "ipad", - "size": "20x20", - "scale": "1x", - "filename": "App-Icon-20x20@1x.png" - }, - { - "idiom": "ipad", - "size": "20x20", - "scale": "2x", - "filename": "App-Icon-20x20@2x.png" - }, - { - "idiom": "ipad", - "size": "29x29", - "scale": "1x", - "filename": "App-Icon-29x29@1x.png" - }, - { - "idiom": "ipad", - "size": "29x29", - "scale": "2x", - "filename": "App-Icon-29x29@2x.png" - }, - { - "idiom": "ipad", - "size": "40x40", - "scale": "1x", - "filename": "App-Icon-40x40@1x.png" - }, - { - "idiom": "ipad", - "size": "40x40", - "scale": "2x", - "filename": "App-Icon-40x40@2x.png" - }, - { - "idiom": "ipad", - "size": "76x76", - "scale": "1x", - "filename": "App-Icon-76x76@1x.png" - }, - { - "idiom": "ipad", - "size": "76x76", - "scale": "2x", - "filename": "App-Icon-76x76@2x.png" - }, - { - "idiom": "ipad", - "size": "83.5x83.5", - "scale": "2x", - "filename": "App-Icon-83.5x83.5@2x.png" - }, - { - "idiom": "ios-marketing", - "size": "1024x1024", - "scale": "1x", - "filename": "ItunesArtwork@2x.png" - } - ], - "info": { - "version": 1, - "author": "expo" - } -} \ No newline at end of file + "images": [ + { + "idiom": "iphone", + "size": "20x20", + "scale": "2x", + "filename": "App-Icon-20x20@2x.png" + }, + { + "idiom": "iphone", + "size": "20x20", + "scale": "3x", + "filename": "App-Icon-20x20@3x.png" + }, + { + "idiom": "iphone", + "size": "29x29", + "scale": "1x", + "filename": "App-Icon-29x29@1x.png" + }, + { + "idiom": "iphone", + "size": "29x29", + "scale": "2x", + "filename": "App-Icon-29x29@2x.png" + }, + { + "idiom": "iphone", + "size": "29x29", + "scale": "3x", + "filename": "App-Icon-29x29@3x.png" + }, + { + "idiom": "iphone", + "size": "40x40", + "scale": "2x", + "filename": "App-Icon-40x40@2x.png" + }, + { + "idiom": "iphone", + "size": "40x40", + "scale": "3x", + "filename": "App-Icon-40x40@3x.png" + }, + { + "idiom": "iphone", + "size": "60x60", + "scale": "2x", + "filename": "App-Icon-60x60@2x.png" + }, + { + "idiom": "iphone", + "size": "60x60", + "scale": "3x", + "filename": "App-Icon-60x60@3x.png" + }, + { + "idiom": "ipad", + "size": "20x20", + "scale": "1x", + "filename": "App-Icon-20x20@1x.png" + }, + { + "idiom": "ipad", + "size": "20x20", + "scale": "2x", + "filename": "App-Icon-20x20@2x.png" + }, + { + "idiom": "ipad", + "size": "29x29", + "scale": "1x", + "filename": "App-Icon-29x29@1x.png" + }, + { + "idiom": "ipad", + "size": "29x29", + "scale": "2x", + "filename": "App-Icon-29x29@2x.png" + }, + { + "idiom": "ipad", + "size": "40x40", + "scale": "1x", + "filename": "App-Icon-40x40@1x.png" + }, + { + "idiom": "ipad", + "size": "40x40", + "scale": "2x", + "filename": "App-Icon-40x40@2x.png" + }, + { + "idiom": "ipad", + "size": "76x76", + "scale": "1x", + "filename": "App-Icon-76x76@1x.png" + }, + { + "idiom": "ipad", + "size": "76x76", + "scale": "2x", + "filename": "App-Icon-76x76@2x.png" + }, + { + "idiom": "ipad", + "size": "83.5x83.5", + "scale": "2x", + "filename": "App-Icon-83.5x83.5@2x.png" + }, + { + "idiom": "ios-marketing", + "size": "1024x1024", + "scale": "1x", + "filename": "ItunesArtwork@2x.png" + } + ], + "info": { + "version": 1, + "author": "expo" + } +} diff --git a/apps/mobile/ios/Spacedrive/Images.xcassets/Contents.json b/apps/mobile/ios/Spacedrive/Images.xcassets/Contents.json index ed285c2e5..9f74c33ba 100644 --- a/apps/mobile/ios/Spacedrive/Images.xcassets/Contents.json +++ b/apps/mobile/ios/Spacedrive/Images.xcassets/Contents.json @@ -1,6 +1,6 @@ { - "info" : { - "version" : 1, - "author" : "expo" - } + "info": { + "version": 1, + "author": "expo" + } } diff --git a/apps/mobile/ios/Spacedrive/Images.xcassets/SplashScreen.imageset/Contents.json b/apps/mobile/ios/Spacedrive/Images.xcassets/SplashScreen.imageset/Contents.json index 3cf848977..857c97408 100644 --- a/apps/mobile/ios/Spacedrive/Images.xcassets/SplashScreen.imageset/Contents.json +++ b/apps/mobile/ios/Spacedrive/Images.xcassets/SplashScreen.imageset/Contents.json @@ -1,21 +1,21 @@ { - "images": [ - { - "idiom": "universal", - "filename": "image.png", - "scale": "1x" - }, - { - "idiom": "universal", - "scale": "2x" - }, - { - "idiom": "universal", - "scale": "3x" - } - ], - "info": { - "version": 1, - "author": "expo" - } -} \ No newline at end of file + "images": [ + { + "idiom": "universal", + "filename": "image.png", + "scale": "1x" + }, + { + "idiom": "universal", + "scale": "2x" + }, + { + "idiom": "universal", + "scale": "3x" + } + ], + "info": { + "version": 1, + "author": "expo" + } +} diff --git a/apps/mobile/ios/Spacedrive/Images.xcassets/SplashScreenBackground.imageset/Contents.json b/apps/mobile/ios/Spacedrive/Images.xcassets/SplashScreenBackground.imageset/Contents.json index 3cf848977..857c97408 100644 --- a/apps/mobile/ios/Spacedrive/Images.xcassets/SplashScreenBackground.imageset/Contents.json +++ b/apps/mobile/ios/Spacedrive/Images.xcassets/SplashScreenBackground.imageset/Contents.json @@ -1,21 +1,21 @@ { - "images": [ - { - "idiom": "universal", - "filename": "image.png", - "scale": "1x" - }, - { - "idiom": "universal", - "scale": "2x" - }, - { - "idiom": "universal", - "scale": "3x" - } - ], - "info": { - "version": 1, - "author": "expo" - } -} \ No newline at end of file + "images": [ + { + "idiom": "universal", + "filename": "image.png", + "scale": "1x" + }, + { + "idiom": "universal", + "scale": "2x" + }, + { + "idiom": "universal", + "scale": "3x" + } + ], + "info": { + "version": 1, + "author": "expo" + } +} diff --git a/apps/mobile/package.json b/apps/mobile/package.json index f1c15ee93..49b065fb3 100644 --- a/apps/mobile/package.json +++ b/apps/mobile/package.json @@ -17,8 +17,8 @@ "@react-navigation/drawer": "^6.4.4", "@react-navigation/native": "^6.0.12", "@react-navigation/stack": "^6.2.3", - "@rspc/client": "^0.0.6", - "@rspc/react": "^0.0.6", + "@rspc/client": "^0.1.2", + "@rspc/react": "^0.1.2", "@sd/assets": "file:../../packages/assets", "@tanstack/react-query": "^4.2.3", "byte-size": "^8.1.0", diff --git a/apps/mobile/pnpm-lock.yaml b/apps/mobile/pnpm-lock.yaml index 84ec59b3d..f635ed63a 100644 --- a/apps/mobile/pnpm-lock.yaml +++ b/apps/mobile/pnpm-lock.yaml @@ -15,8 +15,8 @@ importers: '@react-navigation/stack': ^6.2.3 '@rnx-kit/metro-config': ^1.2.37 '@rnx-kit/metro-resolver-symlinks': ^0.1.21 - '@rspc/client': ^0.0.6 - '@rspc/react': ^0.0.6 + '@rspc/client': ^0.1.2 + '@rspc/react': ^0.1.2 '@sd/assets': file:../../packages/assets '@tanstack/react-query': ^4.2.3 '@types/react': ~18.0.0 @@ -57,23 +57,23 @@ importers: valtio: ^1.7.0 valtio-persist: ^1.0.2 dependencies: - '@gorhom/bottom-sheet': 4.4.3_vlgoh3gg3ptp2ic2mlqzb2jwsy - '@react-native-async-storage/async-storage': 1.17.7_react-native@0.69.4 + '@gorhom/bottom-sheet': 4.4.5_vlgoh3gg3ptp2ic2mlqzb2jwsy + '@react-native-async-storage/async-storage': 1.17.10_react-native@0.69.4 '@react-native-masked-view/masked-view': 0.2.7_jk6ntyzimkrv4hwdmdgaaf5yaa - '@react-navigation/bottom-tabs': 6.3.3_dd5e2d2op72fnp3nnpqh5tisfi - '@react-navigation/drawer': 6.4.4_ywqefi2mkvedjihbydxse4r6wi - '@react-navigation/native': 6.0.12_jk6ntyzimkrv4hwdmdgaaf5yaa - '@react-navigation/stack': 6.2.3_g6rcykmgspzf2j66bcli5dyok4 - '@rspc/client': 0.0.6 - '@rspc/react': 0.0.6_jk6ntyzimkrv4hwdmdgaaf5yaa + '@react-navigation/bottom-tabs': 6.4.0_6hd4c6zmgrilyj4zgihr4fzdu4 + '@react-navigation/drawer': 6.5.0_jtm7wd7ntucmrdxtzwrxvojwfq + '@react-navigation/native': 6.0.13_jk6ntyzimkrv4hwdmdgaaf5yaa + '@react-navigation/stack': 6.3.2_ntymb6no7bst2puhvwy2ruexmm + '@rspc/client': 0.1.2 + '@rspc/react': 0.1.2_42vf6jz3slhkhs3b6cxp5fqczu '@sd/assets': file:../../packages/assets - '@tanstack/react-query': 4.2.3_jk6ntyzimkrv4hwdmdgaaf5yaa + '@tanstack/react-query': 4.10.1_jk6ntyzimkrv4hwdmdgaaf5yaa byte-size: 8.1.0 - class-variance-authority: 0.2.3_typescript@4.7.4 - date-fns: 2.29.2 - expo: 46.0.10_@babel+core@7.18.10 - expo-linking: 3.2.2_expo@46.0.10 - expo-splash-screen: 0.16.2_expo@46.0.10 + class-variance-authority: 0.2.3_typescript@4.8.4 + date-fns: 2.29.3 + expo: 46.0.15_@babel+core@7.19.3 + expo-linking: 3.2.2_expo@46.0.15 + expo-splash-screen: 0.16.2_expo@46.0.15 expo-status-bar: 1.4.0 immer: 9.0.15 intl: 1.2.5 @@ -81,10 +81,10 @@ importers: moti: 0.18.0_react@18.0.0 phosphor-react-native: 1.1.2_ipumakbosk2s7ylysjmrulvctq react: 18.0.0 - react-native: 0.69.4_k6xwmnqmgysg6weibx66ue6pyi + react-native: 0.69.4_react@18.0.0 react-native-gesture-handler: 2.5.0_jk6ntyzimkrv4hwdmdgaaf5yaa react-native-heroicons: 2.2.0_wxlif5cfng7xfd3uerlw46xcs4 - react-native-reanimated: 2.10.0_s4gdcbt2zwshcgkhtvkmdoj3my + react-native-reanimated: 2.10.0_ifayjdo6vuwky63y7hdw4ayxzu react-native-safe-area-context: 4.3.1_jk6ntyzimkrv4hwdmdgaaf5yaa react-native-screens: 3.15.0_jk6ntyzimkrv4hwdmdgaaf5yaa react-native-svg: 13.0.0_jk6ntyzimkrv4hwdmdgaaf5yaa @@ -93,23 +93,23 @@ importers: valtio: 1.7.0_react@18.0.0 valtio-persist: 1.0.2_valtio@1.7.0 devDependencies: - '@babel/core': 7.18.10 - '@babel/runtime': 7.18.9 - '@rnx-kit/metro-config': 1.2.37_s4gdcbt2zwshcgkhtvkmdoj3my + '@babel/core': 7.19.3 + '@babel/runtime': 7.19.0 + '@rnx-kit/metro-config': 1.3.1_ifayjdo6vuwky63y7hdw4ayxzu '@rnx-kit/metro-resolver-symlinks': 0.1.21 - '@types/react': 18.0.15 - '@types/react-native': 0.69.5 - '@typescript-eslint/eslint-plugin': 5.33.1_vsoshirnpb7xw6mr7xomgfas2i - '@typescript-eslint/parser': 5.33.1_4rv7y5c6xz3vfxwhbrcxxi73bq + '@types/react': 18.0.21 + '@types/react-native': 0.69.13 + '@typescript-eslint/eslint-plugin': 5.39.0_xyciw6oqjoiiono4dhv3uhn5my + '@typescript-eslint/parser': 5.39.0_ypn2ylkkyfa5i233caldtndbqa babel-plugin-module-resolver: 4.1.0 - eslint: 8.22.0 - eslint-config-prettier: 8.5.0_eslint@8.22.0 - eslint-plugin-react: 7.30.1_eslint@8.22.0 - eslint-plugin-react-hooks: 4.6.0_eslint@8.22.0 - eslint-plugin-react-native: 4.0.0_eslint@8.22.0 - metro-minify-terser: 0.72.1 - react-native-svg-transformer: 1.0.0_slyhrj4rhac6kym2xxm3raxghe - typescript: 4.7.4 + eslint: 8.24.0 + eslint-config-prettier: 8.5.0_eslint@8.24.0 + eslint-plugin-react: 7.31.8_eslint@8.24.0 + eslint-plugin-react-hooks: 4.6.0_eslint@8.24.0 + eslint-plugin-react-native: 4.0.0_eslint@8.24.0 + metro-minify-terser: 0.72.3 + react-native-svg-transformer: 1.0.0_tnz3sx6ysqoq7sjxw372rvqnoq + typescript: 4.8.4 packages: @@ -118,7 +118,7 @@ packages: engines: {node: '>=6.0.0'} dependencies: '@jridgewell/gen-mapping': 0.1.1 - '@jridgewell/trace-mapping': 0.3.14 + '@jridgewell/trace-mapping': 0.3.15 /@babel/code-frame/7.10.4: resolution: {integrity: sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==} @@ -132,29 +132,24 @@ packages: dependencies: '@babel/highlight': 7.18.6 - /@babel/compat-data/7.18.13: - resolution: {integrity: sha512-5yUzC5LqyTFp2HLmDoxGQelcdYgSpP9xsnMWBphAscOdFrHSAVbLNzWiy32sVNDqJRDiJK6klfDnAgu6PAGSHw==} - engines: {node: '>=6.9.0'} - dev: false - - /@babel/compat-data/7.18.8: - resolution: {integrity: sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ==} + /@babel/compat-data/7.19.3: + resolution: {integrity: sha512-prBHMK4JYYK+wDjJF1q99KK4JLL+egWS4nmNqdlMUgCExMZ+iZW0hGhyC3VEbsPjvaN0TBhW//VIFwBrk8sEiw==} engines: {node: '>=6.9.0'} - /@babel/core/7.18.10: - resolution: {integrity: sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw==} + /@babel/core/7.19.3: + resolution: {integrity: sha512-WneDJxdsjEvyKtXKsaBGbDeiyOjR5vYq4HcShxnIbG0qixpoHjI3MqeZM9NDvsojNCEBItQE4juOo/bU6e72gQ==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.0 '@babel/code-frame': 7.18.6 - '@babel/generator': 7.18.10 - '@babel/helper-compilation-targets': 7.18.9_@babel+core@7.18.10 - '@babel/helper-module-transforms': 7.18.9 - '@babel/helpers': 7.18.9 - '@babel/parser': 7.18.11 + '@babel/generator': 7.19.3 + '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.19.3 + '@babel/helper-module-transforms': 7.19.0 + '@babel/helpers': 7.19.0 + '@babel/parser': 7.19.3 '@babel/template': 7.18.10 - '@babel/traverse': 7.18.11 - '@babel/types': 7.18.10 + '@babel/traverse': 7.19.3 + '@babel/types': 7.19.3 convert-source-map: 1.8.0 debug: 4.3.4 gensync: 1.0.0-beta.2 @@ -163,101 +158,74 @@ packages: transitivePeerDependencies: - supports-color - /@babel/generator/7.18.10: - resolution: {integrity: sha512-0+sW7e3HjQbiHbj1NeU/vN8ornohYlacAfZIaXhdoGweQqgcNy69COVciYYqEXJ/v+9OBA7Frxm4CVAuNqKeNA==} + /@babel/generator/7.19.3: + resolution: {integrity: sha512-fqVZnmp1ncvZU757UzDheKZpfPgatqY59XtW2/j/18H7u76akb8xqvjw82f+i2UKd/ksYsSick/BCLQUUtJ/qQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.18.10 + '@babel/types': 7.19.3 '@jridgewell/gen-mapping': 0.3.2 jsesc: 2.5.2 - /@babel/generator/7.18.13: - resolution: {integrity: sha512-CkPg8ySSPuHTYPJYo7IRALdqyjM9HCbt/3uOBEFbzyGVP6Mn8bwFPB0jX6982JVNBlYzM1nnPkfjuXSOPtQeEQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.18.13 - '@jridgewell/gen-mapping': 0.3.2 - jsesc: 2.5.2 - dev: true - /@babel/helper-annotate-as-pure/7.18.6: resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.18.10 + '@babel/types': 7.19.3 /@babel/helper-builder-binary-assignment-operator-visitor/7.18.9: resolution: {integrity: sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-explode-assignable-expression': 7.18.6 - '@babel/types': 7.18.10 + '@babel/types': 7.19.3 - /@babel/helper-compilation-targets/7.18.9_@babel+core@7.18.10: - resolution: {integrity: sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==} + /@babel/helper-compilation-targets/7.19.3_@babel+core@7.19.3: + resolution: {integrity: sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/compat-data': 7.18.8 - '@babel/core': 7.18.10 + '@babel/compat-data': 7.19.3 + '@babel/core': 7.19.3 '@babel/helper-validator-option': 7.18.6 - browserslist: 4.21.3 + browserslist: 4.21.4 semver: 6.3.0 - /@babel/helper-create-class-features-plugin/7.18.13_@babel+core@7.18.10: - resolution: {integrity: sha512-hDvXp+QYxSRL+23mpAlSGxHMDyIGChm0/AwTfTAAK5Ufe40nCsyNdaYCGuK91phn/fVu9kqayImRDkvNAgdrsA==} + /@babel/helper-create-class-features-plugin/7.19.0_@babel+core@7.19.3: + resolution: {integrity: sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.18.10 + '@babel/core': 7.19.3 '@babel/helper-annotate-as-pure': 7.18.6 '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.18.9 + '@babel/helper-function-name': 7.19.0 '@babel/helper-member-expression-to-functions': 7.18.9 '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/helper-replace-supers': 7.18.9 - '@babel/helper-split-export-declaration': 7.18.6 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/helper-create-class-features-plugin/7.18.9_@babel+core@7.18.10: - resolution: {integrity: sha512-WvypNAYaVh23QcjpMR24CwZY2Nz6hqdOcFdPbNpV56hL5H6KiFheO7Xm1aPdlLQ7d5emYZX7VZwPp9x3z+2opw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.18.10 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.18.9 - '@babel/helper-member-expression-to-functions': 7.18.9 - '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/helper-replace-supers': 7.18.9 + '@babel/helper-replace-supers': 7.19.1 '@babel/helper-split-export-declaration': 7.18.6 transitivePeerDependencies: - supports-color - /@babel/helper-create-regexp-features-plugin/7.18.6_@babel+core@7.18.10: - resolution: {integrity: sha512-7LcpH1wnQLGrI+4v+nPp+zUvIkF9x0ddv1Hkdue10tg3gmRnLy97DXh4STiOf1qeIInyD69Qv5kKSZzKD8B/7A==} + /@babel/helper-create-regexp-features-plugin/7.19.0_@babel+core@7.19.3: + resolution: {integrity: sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.18.10 + '@babel/core': 7.19.3 '@babel/helper-annotate-as-pure': 7.18.6 - regexpu-core: 5.1.0 + regexpu-core: 5.2.1 - /@babel/helper-define-polyfill-provider/0.3.2_@babel+core@7.18.10: - resolution: {integrity: sha512-r9QJJ+uDWrd+94BSPcP6/de67ygLtvVy6cK4luE6MOuDsZIdoaPBnfSpbO/+LTifjPckbKXRuI9BB/Z2/y3iTg==} + /@babel/helper-define-polyfill-provider/0.3.3_@babel+core@7.19.3: + resolution: {integrity: sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==} peerDependencies: '@babel/core': ^7.4.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-compilation-targets': 7.18.9_@babel+core@7.18.10 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.19.3 + '@babel/helper-plugin-utils': 7.19.0 debug: 4.3.4 lodash.debounce: 4.0.8 resolve: 1.22.1 @@ -273,45 +241,45 @@ packages: resolution: {integrity: sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.18.13 + '@babel/types': 7.19.3 - /@babel/helper-function-name/7.18.9: - resolution: {integrity: sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==} + /@babel/helper-function-name/7.19.0: + resolution: {integrity: sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==} engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.18.10 - '@babel/types': 7.18.10 + '@babel/types': 7.19.3 /@babel/helper-hoist-variables/7.18.6: resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.18.10 + '@babel/types': 7.19.3 /@babel/helper-member-expression-to-functions/7.18.9: resolution: {integrity: sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.18.10 + '@babel/types': 7.19.3 /@babel/helper-module-imports/7.18.6: resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.18.10 + '@babel/types': 7.19.3 - /@babel/helper-module-transforms/7.18.9: - resolution: {integrity: sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==} + /@babel/helper-module-transforms/7.19.0: + resolution: {integrity: sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-environment-visitor': 7.18.9 '@babel/helper-module-imports': 7.18.6 '@babel/helper-simple-access': 7.18.6 '@babel/helper-split-export-declaration': 7.18.6 - '@babel/helper-validator-identifier': 7.18.6 + '@babel/helper-validator-identifier': 7.19.1 '@babel/template': 7.18.10 - '@babel/traverse': 7.18.11 - '@babel/types': 7.18.10 + '@babel/traverse': 7.19.3 + '@babel/types': 7.19.3 transitivePeerDependencies: - supports-color @@ -319,35 +287,35 @@ packages: resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.18.10 + '@babel/types': 7.19.3 - /@babel/helper-plugin-utils/7.18.9: - resolution: {integrity: sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==} + /@babel/helper-plugin-utils/7.19.0: + resolution: {integrity: sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==} engines: {node: '>=6.9.0'} - /@babel/helper-remap-async-to-generator/7.18.9_@babel+core@7.18.10: + /@babel/helper-remap-async-to-generator/7.18.9_@babel+core@7.19.3: resolution: {integrity: sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.18.10 + '@babel/core': 7.19.3 '@babel/helper-annotate-as-pure': 7.18.6 '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-wrap-function': 7.18.11 - '@babel/types': 7.18.10 + '@babel/helper-wrap-function': 7.19.0 + '@babel/types': 7.19.3 transitivePeerDependencies: - supports-color - /@babel/helper-replace-supers/7.18.9: - resolution: {integrity: sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ==} + /@babel/helper-replace-supers/7.19.1: + resolution: {integrity: sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-environment-visitor': 7.18.9 '@babel/helper-member-expression-to-functions': 7.18.9 '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/traverse': 7.18.11 - '@babel/types': 7.18.10 + '@babel/traverse': 7.19.3 + '@babel/types': 7.19.3 transitivePeerDependencies: - supports-color @@ -355,50 +323,50 @@ packages: resolution: {integrity: sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.18.10 + '@babel/types': 7.19.3 /@babel/helper-skip-transparent-expression-wrappers/7.18.9: resolution: {integrity: sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.18.10 + '@babel/types': 7.19.3 /@babel/helper-split-export-declaration/7.18.6: resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.18.10 + '@babel/types': 7.19.3 /@babel/helper-string-parser/7.18.10: resolution: {integrity: sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-identifier/7.18.6: - resolution: {integrity: sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==} + /@babel/helper-validator-identifier/7.19.1: + resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} engines: {node: '>=6.9.0'} /@babel/helper-validator-option/7.18.6: resolution: {integrity: sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==} engines: {node: '>=6.9.0'} - /@babel/helper-wrap-function/7.18.11: - resolution: {integrity: sha512-oBUlbv+rjZLh2Ks9SKi4aL7eKaAXBWleHzU89mP0G6BMUlRxSckk9tSIkgDGydhgFxHuGSlBQZfnaD47oBEB7w==} + /@babel/helper-wrap-function/7.19.0: + resolution: {integrity: sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-function-name': 7.18.9 + '@babel/helper-function-name': 7.19.0 '@babel/template': 7.18.10 - '@babel/traverse': 7.18.11 - '@babel/types': 7.18.13 + '@babel/traverse': 7.19.3 + '@babel/types': 7.19.3 transitivePeerDependencies: - supports-color - /@babel/helpers/7.18.9: - resolution: {integrity: sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ==} + /@babel/helpers/7.19.0: + resolution: {integrity: sha512-DRBCKGwIEdqY3+rPJgG/dKfQy9+08rHIAJx8q2p+HSWP87s2HCrQmaAMMyMll2kIXKCW0cO1RdQskx15Xakftg==} engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.18.10 - '@babel/traverse': 7.18.11 - '@babel/types': 7.18.10 + '@babel/traverse': 7.19.3 + '@babel/types': 7.19.3 transitivePeerDependencies: - supports-color @@ -406,1006 +374,989 @@ packages: resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-validator-identifier': 7.18.6 + '@babel/helper-validator-identifier': 7.19.1 chalk: 2.4.2 js-tokens: 4.0.0 - /@babel/parser/7.18.11: - resolution: {integrity: sha512-9JKn5vN+hDt0Hdqn1PiJ2guflwP+B6Ga8qbDuoF0PzzVhrzsKIJo8yGqVk6CmMHiMei9w1C1Bp9IMJSIK+HPIQ==} + /@babel/parser/7.19.3: + resolution: {integrity: sha512-pJ9xOlNWHiy9+FuFP09DEAFbAn4JskgRsVcc169w2xRBC3FRGuQEwjeIMMND9L2zc0iEhO/tGv4Zq+km+hxNpQ==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.18.10 + '@babel/types': 7.19.3 - /@babel/parser/7.18.13: - resolution: {integrity: sha512-dgXcIfMuQ0kgzLB2b9tRZs7TTFFaGM2AbtA4fJgUUYukzGH4jwsS7hzQHEGs67jdehpm22vkgKwvbU+aEflgwg==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.18.13 - dev: true - - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.18.6_@babel+core@7.18.10: + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 dev: false - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.18.9_@babel+core@7.18.10: + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.18.9_@babel+core@7.19.3: resolution: {integrity: sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 - '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.18.10 + '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.19.3 dev: false - /@babel/plugin-proposal-async-generator-functions/7.18.10_@babel+core@7.18.10: - resolution: {integrity: sha512-1mFuY2TOsR1hxbjCo4QL+qlIjV07p4H4EUYw2J/WCqsvFV6V9X9z9YhXbWndc/4fw+hYGlDT7egYxliMp5O6Ew==} + /@babel/plugin-proposal-async-generator-functions/7.19.1_@babel+core@7.19.3: + resolution: {integrity: sha512-0yu8vNATgLy4ivqMNBIwb1HebCelqN7YX8SL3FDXORv/RqT0zEEWUCH4GH44JsSrvCu6GqnAdR5EBFAPeNBB4Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 + '@babel/core': 7.19.3 '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.18.10 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.18.10 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.19.3 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.19.3 transitivePeerDependencies: - supports-color - /@babel/plugin-proposal-class-properties/7.18.6_@babel+core@7.18.10: + /@babel/plugin-proposal-class-properties/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-create-class-features-plugin': 7.18.9_@babel+core@7.18.10 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.19.3 + '@babel/helper-plugin-utils': 7.19.0 transitivePeerDependencies: - supports-color - /@babel/plugin-proposal-class-static-block/7.18.6_@babel+core@7.18.10: + /@babel/plugin-proposal-class-static-block/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-create-class-features-plugin': 7.18.13_@babel+core@7.18.10 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.18.10 + '@babel/core': 7.19.3 + '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.19.3 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.19.3 transitivePeerDependencies: - supports-color dev: false - /@babel/plugin-proposal-decorators/7.18.10_@babel+core@7.18.10: - resolution: {integrity: sha512-wdGTwWF5QtpTY/gbBtQLAiCnoxfD4qMbN87NYZle1dOZ9Os8Y6zXcKrIaOU8W+TIvFUWVGG9tUgNww3CjXRVVw==} + /@babel/plugin-proposal-decorators/7.19.3_@babel+core@7.19.3: + resolution: {integrity: sha512-MbgXtNXqo7RTKYIXVchVJGPvaVufQH3pxvQyfbGvNw1DObIhph+PesYXJTcd8J4DdWibvf6Z2eanOyItX8WnJg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-create-class-features-plugin': 7.18.13_@babel+core@7.18.10 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/helper-replace-supers': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.19.3 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-replace-supers': 7.19.1 '@babel/helper-split-export-declaration': 7.18.6 - '@babel/plugin-syntax-decorators': 7.18.6_@babel+core@7.18.10 + '@babel/plugin-syntax-decorators': 7.19.0_@babel+core@7.19.3 transitivePeerDependencies: - supports-color dev: false - /@babel/plugin-proposal-dynamic-import/7.18.6_@babel+core@7.18.10: + /@babel/plugin-proposal-dynamic-import/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.18.10 + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.19.3 dev: false - /@babel/plugin-proposal-export-default-from/7.18.10_@babel+core@7.18.10: + /@babel/plugin-proposal-export-default-from/7.18.10_@babel+core@7.19.3: resolution: {integrity: sha512-5H2N3R2aQFxkV4PIBUR/i7PUSwgTZjouJKzI8eKswfIjT0PhvzkPn0t0wIS5zn6maQuvtT0t1oHtMUz61LOuow==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/plugin-syntax-export-default-from': 7.18.6_@babel+core@7.18.10 + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/plugin-syntax-export-default-from': 7.18.6_@babel+core@7.19.3 - /@babel/plugin-proposal-export-namespace-from/7.18.9_@babel+core@7.18.10: + /@babel/plugin-proposal-export-namespace-from/7.18.9_@babel+core@7.19.3: resolution: {integrity: sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.18.10 + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.19.3 dev: false - /@babel/plugin-proposal-json-strings/7.18.6_@babel+core@7.18.10: + /@babel/plugin-proposal-json-strings/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.18.10 + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.19.3 dev: false - /@babel/plugin-proposal-logical-assignment-operators/7.18.9_@babel+core@7.18.10: + /@babel/plugin-proposal-logical-assignment-operators/7.18.9_@babel+core@7.19.3: resolution: {integrity: sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.18.10 + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.19.3 dev: false - /@babel/plugin-proposal-nullish-coalescing-operator/7.18.6_@babel+core@7.18.10: + /@babel/plugin-proposal-nullish-coalescing-operator/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.18.10 + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.19.3 - /@babel/plugin-proposal-numeric-separator/7.18.6_@babel+core@7.18.10: + /@babel/plugin-proposal-numeric-separator/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.18.10 + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.19.3 dev: false - /@babel/plugin-proposal-object-rest-spread/7.18.9_@babel+core@7.18.10: + /@babel/plugin-proposal-object-rest-spread/7.18.9_@babel+core@7.19.3: resolution: {integrity: sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.18.8 - '@babel/core': 7.18.10 - '@babel/helper-compilation-targets': 7.18.9_@babel+core@7.18.10 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.18.10 - '@babel/plugin-transform-parameters': 7.18.8_@babel+core@7.18.10 + '@babel/compat-data': 7.19.3 + '@babel/core': 7.19.3 + '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.19.3 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.19.3 + '@babel/plugin-transform-parameters': 7.18.8_@babel+core@7.19.3 - /@babel/plugin-proposal-optional-catch-binding/7.18.6_@babel+core@7.18.10: + /@babel/plugin-proposal-optional-catch-binding/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.18.10 + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.19.3 - /@babel/plugin-proposal-optional-chaining/7.18.9_@babel+core@7.18.10: + /@babel/plugin-proposal-optional-chaining/7.18.9_@babel+core@7.19.3: resolution: {integrity: sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.18.10 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.19.3 - /@babel/plugin-proposal-private-methods/7.18.6_@babel+core@7.18.10: + /@babel/plugin-proposal-private-methods/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-create-class-features-plugin': 7.18.13_@babel+core@7.18.10 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.19.3 + '@babel/helper-plugin-utils': 7.19.0 transitivePeerDependencies: - supports-color dev: false - /@babel/plugin-proposal-private-property-in-object/7.18.6_@babel+core@7.18.10: + /@babel/plugin-proposal-private-property-in-object/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 + '@babel/core': 7.19.3 '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-create-class-features-plugin': 7.18.13_@babel+core@7.18.10 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.18.10 + '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.19.3 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.19.3 transitivePeerDependencies: - supports-color dev: false - /@babel/plugin-proposal-unicode-property-regex/7.18.6_@babel+core@7.18.10: + /@babel/plugin-proposal-unicode-property-regex/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} engines: {node: '>=4'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-create-regexp-features-plugin': 7.18.6_@babel+core@7.18.10 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.19.3 + '@babel/helper-plugin-utils': 7.19.0 dev: false - /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.18.10: + /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.19.3: resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.18.10: + /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.19.3: resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-syntax-class-static-block/7.14.5_@babel+core@7.18.10: + /@babel/plugin-syntax-class-static-block/7.14.5_@babel+core@7.19.3: resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 dev: false - /@babel/plugin-syntax-decorators/7.18.6_@babel+core@7.18.10: - resolution: {integrity: sha512-fqyLgjcxf/1yhyZ6A+yo1u9gJ7eleFQod2lkaUsF9DQ7sbbY3Ligym3L0+I2c0WmqNKDpoD9UTb1AKP3qRMOAQ==} + /@babel/plugin-syntax-decorators/7.19.0_@babel+core@7.19.3: + resolution: {integrity: sha512-xaBZUEDntt4faL1yN8oIFlhfXeQAWJW7CLKYsHTUqriCUbj8xOra8bfxxKGi/UwExPFBuPdH4XfHc9rGQhrVkQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 dev: false - /@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.18.10: + /@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.19.3: resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-syntax-export-default-from/7.18.6_@babel+core@7.18.10: + /@babel/plugin-syntax-export-default-from/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-Kr//z3ujSVNx6E9z9ih5xXXMqK07VVTuqPmqGe6Mss/zW5XPeLZeSDZoP9ab/hT4wPKqAgjl2PnhPrcpk8Seew==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-syntax-export-namespace-from/7.8.3_@babel+core@7.18.10: + /@babel/plugin-syntax-export-namespace-from/7.8.3_@babel+core@7.19.3: resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 dev: false - /@babel/plugin-syntax-flow/7.18.6_@babel+core@7.18.10: + /@babel/plugin-syntax-flow/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-syntax-import-assertions/7.18.6_@babel+core@7.18.10: + /@babel/plugin-syntax-import-assertions/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 dev: false - /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.18.10: + /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.19.3: resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 dev: false - /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.18.10: + /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.18.10: + /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.19.3: resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 dev: false - /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.18.10: + /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.19.3: resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.18.10: + /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.19.3: resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 dev: false - /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.18.10: + /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.19.3: resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.18.10: + /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.19.3: resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.18.10: + /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.19.3: resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-syntax-private-property-in-object/7.14.5_@babel+core@7.18.10: + /@babel/plugin-syntax-private-property-in-object/7.14.5_@babel+core@7.19.3: resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 dev: false - /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.18.10: + /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.19.3: resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 dev: false - /@babel/plugin-syntax-typescript/7.18.6_@babel+core@7.18.10: + /@babel/plugin-syntax-typescript/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-arrow-functions/7.18.6_@babel+core@7.18.10: + /@babel/plugin-transform-arrow-functions/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-async-to-generator/7.18.6_@babel+core@7.18.10: + /@babel/plugin-transform-async-to-generator/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 + '@babel/core': 7.19.3 '@babel/helper-module-imports': 7.18.6 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.18.10 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.19.3 transitivePeerDependencies: - supports-color - /@babel/plugin-transform-block-scoped-functions/7.18.6_@babel+core@7.18.10: + /@babel/plugin-transform-block-scoped-functions/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-block-scoping/7.18.9_@babel+core@7.18.10: + /@babel/plugin-transform-block-scoping/7.18.9_@babel+core@7.19.3: resolution: {integrity: sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-classes/7.18.9_@babel+core@7.18.10: - resolution: {integrity: sha512-EkRQxsxoytpTlKJmSPYrsOMjCILacAjtSVkd4gChEe2kXjFCun3yohhW5I7plXJhCemM0gKsaGMcO8tinvCA5g==} + /@babel/plugin-transform-classes/7.19.0_@babel+core@7.19.3: + resolution: {integrity: sha512-YfeEE9kCjqTS9IitkgfJuxjcEtLUHMqa8yUJ6zdz8vR7hKuo6mOy2C05P0F1tdMmDCeuyidKnlrw/iTppHcr2A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 + '@babel/core': 7.19.3 '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.19.3 '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.18.9 + '@babel/helper-function-name': 7.19.0 '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/helper-replace-supers': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-replace-supers': 7.19.1 '@babel/helper-split-export-declaration': 7.18.6 globals: 11.12.0 transitivePeerDependencies: - supports-color - /@babel/plugin-transform-computed-properties/7.18.9_@babel+core@7.18.10: + /@babel/plugin-transform-computed-properties/7.18.9_@babel+core@7.19.3: resolution: {integrity: sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-destructuring/7.18.13_@babel+core@7.18.10: + /@babel/plugin-transform-destructuring/7.18.13_@babel+core@7.19.3: resolution: {integrity: sha512-TodpQ29XekIsex2A+YJPj5ax2plkGa8YYY6mFjCohk/IG9IY42Rtuj1FuDeemfg2ipxIFLzPeA83SIBnlhSIow==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 - dev: false + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-destructuring/7.18.9_@babel+core@7.18.10: - resolution: {integrity: sha512-p5VCYNddPLkZTq4XymQIaIfZNJwT9YsjkPOhkVEqt6QIpQFZVM9IltqqYpOEkJoN1DPznmxUDyZ5CTZs/ZCuHA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 - - /@babel/plugin-transform-dotall-regex/7.18.6_@babel+core@7.18.10: + /@babel/plugin-transform-dotall-regex/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-create-regexp-features-plugin': 7.18.6_@babel+core@7.18.10 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.19.3 + '@babel/helper-plugin-utils': 7.19.0 dev: false - /@babel/plugin-transform-duplicate-keys/7.18.9_@babel+core@7.18.10: + /@babel/plugin-transform-duplicate-keys/7.18.9_@babel+core@7.19.3: resolution: {integrity: sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 dev: false - /@babel/plugin-transform-exponentiation-operator/7.18.6_@babel+core@7.18.10: + /@babel/plugin-transform-exponentiation-operator/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 + '@babel/core': 7.19.3 '@babel/helper-builder-binary-assignment-operator-visitor': 7.18.9 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-flow-strip-types/7.18.9_@babel+core@7.18.10: - resolution: {integrity: sha512-+G6rp2zRuOAInY5wcggsx4+QVao1qPM0osC9fTUVlAV3zOrzTCnrMAFVnR6+a3T8wz1wFIH7KhYMcMB3u1n80A==} + /@babel/plugin-transform-flow-strip-types/7.19.0_@babel+core@7.19.3: + resolution: {integrity: sha512-sgeMlNaQVbCSpgLSKP4ZZKfsJVnFnNQlUSk6gPYzR/q7tzCgQF2t8RBKAP6cKJeZdveei7Q7Jm527xepI8lNLg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/plugin-syntax-flow': 7.18.6_@babel+core@7.18.10 + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/plugin-syntax-flow': 7.18.6_@babel+core@7.19.3 - /@babel/plugin-transform-for-of/7.18.8_@babel+core@7.18.10: + /@babel/plugin-transform-for-of/7.18.8_@babel+core@7.19.3: resolution: {integrity: sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-function-name/7.18.9_@babel+core@7.18.10: + /@babel/plugin-transform-function-name/7.18.9_@babel+core@7.19.3: resolution: {integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-compilation-targets': 7.18.9_@babel+core@7.18.10 - '@babel/helper-function-name': 7.18.9 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.19.3 + '@babel/helper-function-name': 7.19.0 + '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-literals/7.18.9_@babel+core@7.18.10: + /@babel/plugin-transform-literals/7.18.9_@babel+core@7.19.3: resolution: {integrity: sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-member-expression-literals/7.18.6_@babel+core@7.18.10: + /@babel/plugin-transform-member-expression-literals/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-modules-amd/7.18.6_@babel+core@7.18.10: + /@babel/plugin-transform-modules-amd/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-module-transforms': 7.18.9 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-module-transforms': 7.19.0 + '@babel/helper-plugin-utils': 7.19.0 babel-plugin-dynamic-import-node: 2.3.3 transitivePeerDependencies: - supports-color dev: false - /@babel/plugin-transform-modules-commonjs/7.18.6_@babel+core@7.18.10: + /@babel/plugin-transform-modules-commonjs/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-module-transforms': 7.18.9 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-module-transforms': 7.19.0 + '@babel/helper-plugin-utils': 7.19.0 '@babel/helper-simple-access': 7.18.6 babel-plugin-dynamic-import-node: 2.3.3 transitivePeerDependencies: - supports-color - /@babel/plugin-transform-modules-systemjs/7.18.9_@babel+core@7.18.10: - resolution: {integrity: sha512-zY/VSIbbqtoRoJKo2cDTewL364jSlZGvn0LKOf9ntbfxOvjfmyrdtEEOAdswOswhZEb8UH3jDkCKHd1sPgsS0A==} + /@babel/plugin-transform-modules-systemjs/7.19.0_@babel+core@7.19.3: + resolution: {integrity: sha512-x9aiR0WXAWmOWsqcsnrzGR+ieaTMVyGyffPVA7F8cXAGt/UxefYv6uSHZLkAFChN5M5Iy1+wjE+xJuPt22H39A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 + '@babel/core': 7.19.3 '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-module-transforms': 7.18.9 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/helper-validator-identifier': 7.18.6 + '@babel/helper-module-transforms': 7.19.0 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-validator-identifier': 7.19.1 babel-plugin-dynamic-import-node: 2.3.3 transitivePeerDependencies: - supports-color dev: false - /@babel/plugin-transform-modules-umd/7.18.6_@babel+core@7.18.10: + /@babel/plugin-transform-modules-umd/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-module-transforms': 7.18.9 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-module-transforms': 7.19.0 + '@babel/helper-plugin-utils': 7.19.0 transitivePeerDependencies: - supports-color dev: false - /@babel/plugin-transform-named-capturing-groups-regex/7.18.6_@babel+core@7.18.10: - resolution: {integrity: sha512-UmEOGF8XgaIqD74bC8g7iV3RYj8lMf0Bw7NJzvnS9qQhM4mg+1WHKotUIdjxgD2RGrgFLZZPCFPFj3P/kVDYhg==} + /@babel/plugin-transform-named-capturing-groups-regex/7.19.1_@babel+core@7.19.3: + resolution: {integrity: sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-create-regexp-features-plugin': 7.18.6_@babel+core@7.18.10 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.19.3 + '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-new-target/7.18.6_@babel+core@7.18.10: + /@babel/plugin-transform-new-target/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 dev: false - /@babel/plugin-transform-object-assign/7.18.6_@babel+core@7.18.10: + /@babel/plugin-transform-object-assign/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-mQisZ3JfqWh2gVXvfqYCAAyRs6+7oev+myBsTwW5RnPhYXOTuCEw2oe3YgxlXMViXUS53lG8koulI7mJ+8JE+A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 dev: false - /@babel/plugin-transform-object-super/7.18.6_@babel+core@7.18.10: + /@babel/plugin-transform-object-super/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/helper-replace-supers': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-replace-supers': 7.19.1 transitivePeerDependencies: - supports-color - /@babel/plugin-transform-parameters/7.18.8_@babel+core@7.18.10: + /@babel/plugin-transform-parameters/7.18.8_@babel+core@7.19.3: resolution: {integrity: sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-property-literals/7.18.6_@babel+core@7.18.10: + /@babel/plugin-transform-property-literals/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-react-display-name/7.18.6_@babel+core@7.18.10: + /@babel/plugin-transform-react-display-name/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-react-jsx-self/7.18.6_@babel+core@7.18.10: + /@babel/plugin-transform-react-jsx-self/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-react-jsx-source/7.18.6_@babel+core@7.18.10: + /@babel/plugin-transform-react-jsx-source/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-utZmlASneDfdaMh0m/WausbjUjEdGrQJz0vFK93d7wD3xf5wBtX219+q6IlCNZeguIcxS2f/CvLZrlLSvSHQXw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-react-jsx/7.18.10_@babel+core@7.18.10: - resolution: {integrity: sha512-gCy7Iikrpu3IZjYZolFE4M1Sm+nrh1/6za2Ewj77Z+XirT4TsbJcvOFOyF+fRPwU6AKKK136CZxx6L8AbSFG6A==} + /@babel/plugin-transform-react-jsx/7.19.0_@babel+core@7.19.3: + resolution: {integrity: sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 + '@babel/core': 7.19.3 '@babel/helper-annotate-as-pure': 7.18.6 '@babel/helper-module-imports': 7.18.6 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.18.10 - '@babel/types': 7.18.10 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.19.3 + '@babel/types': 7.19.3 - /@babel/plugin-transform-regenerator/7.18.6_@babel+core@7.18.10: + /@babel/plugin-transform-regenerator/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 regenerator-transform: 0.15.0 dev: false - /@babel/plugin-transform-reserved-words/7.18.6_@babel+core@7.18.10: + /@babel/plugin-transform-reserved-words/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 dev: false - /@babel/plugin-transform-runtime/7.18.10_@babel+core@7.18.10: - resolution: {integrity: sha512-q5mMeYAdfEbpBAgzl7tBre/la3LeCxmDO1+wMXRdPWbcoMjR3GiXlCLk7JBZVVye0bqTGNMbt0yYVXX1B1jEWQ==} + /@babel/plugin-transform-runtime/7.19.1_@babel+core@7.19.3: + resolution: {integrity: sha512-2nJjTUFIzBMP/f/miLxEK9vxwW/KUXsdvN4sR//TmuDhe6yU2h57WmIOE12Gng3MDP/xpjUV/ToZRdcf8Yj4fA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 + '@babel/core': 7.19.3 '@babel/helper-module-imports': 7.18.6 - '@babel/helper-plugin-utils': 7.18.9 - babel-plugin-polyfill-corejs2: 0.3.2_@babel+core@7.18.10 - babel-plugin-polyfill-corejs3: 0.5.3_@babel+core@7.18.10 - babel-plugin-polyfill-regenerator: 0.4.0_@babel+core@7.18.10 + '@babel/helper-plugin-utils': 7.19.0 + babel-plugin-polyfill-corejs2: 0.3.3_@babel+core@7.19.3 + babel-plugin-polyfill-corejs3: 0.6.0_@babel+core@7.19.3 + babel-plugin-polyfill-regenerator: 0.4.1_@babel+core@7.19.3 semver: 6.3.0 transitivePeerDependencies: - supports-color - /@babel/plugin-transform-shorthand-properties/7.18.6_@babel+core@7.18.10: + /@babel/plugin-transform-shorthand-properties/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-spread/7.18.9_@babel+core@7.18.10: - resolution: {integrity: sha512-39Q814wyoOPtIB/qGopNIL9xDChOE1pNU0ZY5dO0owhiVt/5kFm4li+/bBtwc7QotG0u5EPzqhZdjMtmqBqyQA==} + /@babel/plugin-transform-spread/7.19.0_@babel+core@7.19.3: + resolution: {integrity: sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 - /@babel/plugin-transform-sticky-regex/7.18.6_@babel+core@7.18.10: + /@babel/plugin-transform-sticky-regex/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-template-literals/7.18.9_@babel+core@7.18.10: + /@babel/plugin-transform-template-literals/7.18.9_@babel+core@7.19.3: resolution: {integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-typeof-symbol/7.18.9_@babel+core@7.18.10: + /@babel/plugin-transform-typeof-symbol/7.18.9_@babel+core@7.19.3: resolution: {integrity: sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 dev: false - /@babel/plugin-transform-typescript/7.18.10_@babel+core@7.18.10: - resolution: {integrity: sha512-j2HQCJuMbi88QftIb5zlRu3c7PU+sXNnscqsrjqegoGiCgXR569pEdben9vly5QHKL2ilYkfnSwu64zsZo/VYQ==} + /@babel/plugin-transform-typescript/7.19.3_@babel+core@7.19.3: + resolution: {integrity: sha512-z6fnuK9ve9u/0X0rRvI9MY0xg+DOUaABDYOe+/SQTxtlptaBB/V9JIUxJn6xp3lMBeb9qe8xSFmHU35oZDXD+w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-create-class-features-plugin': 7.18.9_@babel+core@7.18.10 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/plugin-syntax-typescript': 7.18.6_@babel+core@7.18.10 + '@babel/core': 7.19.3 + '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.19.3 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/plugin-syntax-typescript': 7.18.6_@babel+core@7.19.3 transitivePeerDependencies: - supports-color - /@babel/plugin-transform-unicode-escapes/7.18.10_@babel+core@7.18.10: + /@babel/plugin-transform-unicode-escapes/7.18.10_@babel+core@7.19.3: resolution: {integrity: sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 dev: false - /@babel/plugin-transform-unicode-regex/7.18.6_@babel+core@7.18.10: + /@babel/plugin-transform-unicode-regex/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-create-regexp-features-plugin': 7.18.6_@babel+core@7.18.10 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.19.3 + '@babel/helper-plugin-utils': 7.19.0 - /@babel/preset-env/7.18.10_@babel+core@7.18.10: - resolution: {integrity: sha512-wVxs1yjFdW3Z/XkNfXKoblxoHgbtUF7/l3PvvP4m02Qz9TZ6uZGxRVYjSQeR87oQmHco9zWitW5J82DJ7sCjvA==} + /@babel/preset-env/7.19.3_@babel+core@7.19.3: + resolution: {integrity: sha512-ziye1OTc9dGFOAXSWKUqQblYHNlBOaDl8wzqf2iKXJAltYiR3hKHUKmkt+S9PppW7RQpq4fFCrwwpIDj/f5P4w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.18.13 - '@babel/core': 7.18.10 - '@babel/helper-compilation-targets': 7.18.9_@babel+core@7.18.10 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/compat-data': 7.19.3 + '@babel/core': 7.19.3 + '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.19.3 + '@babel/helper-plugin-utils': 7.19.0 '@babel/helper-validator-option': 7.18.6 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.18.6_@babel+core@7.18.10 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.18.9_@babel+core@7.18.10 - '@babel/plugin-proposal-async-generator-functions': 7.18.10_@babel+core@7.18.10 - '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.18.10 - '@babel/plugin-proposal-class-static-block': 7.18.6_@babel+core@7.18.10 - '@babel/plugin-proposal-dynamic-import': 7.18.6_@babel+core@7.18.10 - '@babel/plugin-proposal-export-namespace-from': 7.18.9_@babel+core@7.18.10 - '@babel/plugin-proposal-json-strings': 7.18.6_@babel+core@7.18.10 - '@babel/plugin-proposal-logical-assignment-operators': 7.18.9_@babel+core@7.18.10 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.18.10 - '@babel/plugin-proposal-numeric-separator': 7.18.6_@babel+core@7.18.10 - '@babel/plugin-proposal-object-rest-spread': 7.18.9_@babel+core@7.18.10 - '@babel/plugin-proposal-optional-catch-binding': 7.18.6_@babel+core@7.18.10 - '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.18.10 - '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.18.10 - '@babel/plugin-proposal-private-property-in-object': 7.18.6_@babel+core@7.18.10 - '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.18.10 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.18.10 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.18.10 - '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.18.10 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.18.10 - '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.18.10 - '@babel/plugin-syntax-import-assertions': 7.18.6_@babel+core@7.18.10 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.18.10 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.18.10 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.18.10 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.18.10 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.18.10 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.18.10 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.18.10 - '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.18.10 - '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.18.10 - '@babel/plugin-transform-arrow-functions': 7.18.6_@babel+core@7.18.10 - '@babel/plugin-transform-async-to-generator': 7.18.6_@babel+core@7.18.10 - '@babel/plugin-transform-block-scoped-functions': 7.18.6_@babel+core@7.18.10 - '@babel/plugin-transform-block-scoping': 7.18.9_@babel+core@7.18.10 - '@babel/plugin-transform-classes': 7.18.9_@babel+core@7.18.10 - '@babel/plugin-transform-computed-properties': 7.18.9_@babel+core@7.18.10 - '@babel/plugin-transform-destructuring': 7.18.13_@babel+core@7.18.10 - '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.18.10 - '@babel/plugin-transform-duplicate-keys': 7.18.9_@babel+core@7.18.10 - '@babel/plugin-transform-exponentiation-operator': 7.18.6_@babel+core@7.18.10 - '@babel/plugin-transform-for-of': 7.18.8_@babel+core@7.18.10 - '@babel/plugin-transform-function-name': 7.18.9_@babel+core@7.18.10 - '@babel/plugin-transform-literals': 7.18.9_@babel+core@7.18.10 - '@babel/plugin-transform-member-expression-literals': 7.18.6_@babel+core@7.18.10 - '@babel/plugin-transform-modules-amd': 7.18.6_@babel+core@7.18.10 - '@babel/plugin-transform-modules-commonjs': 7.18.6_@babel+core@7.18.10 - '@babel/plugin-transform-modules-systemjs': 7.18.9_@babel+core@7.18.10 - '@babel/plugin-transform-modules-umd': 7.18.6_@babel+core@7.18.10 - '@babel/plugin-transform-named-capturing-groups-regex': 7.18.6_@babel+core@7.18.10 - '@babel/plugin-transform-new-target': 7.18.6_@babel+core@7.18.10 - '@babel/plugin-transform-object-super': 7.18.6_@babel+core@7.18.10 - '@babel/plugin-transform-parameters': 7.18.8_@babel+core@7.18.10 - '@babel/plugin-transform-property-literals': 7.18.6_@babel+core@7.18.10 - '@babel/plugin-transform-regenerator': 7.18.6_@babel+core@7.18.10 - '@babel/plugin-transform-reserved-words': 7.18.6_@babel+core@7.18.10 - '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.18.10 - '@babel/plugin-transform-spread': 7.18.9_@babel+core@7.18.10 - '@babel/plugin-transform-sticky-regex': 7.18.6_@babel+core@7.18.10 - '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.18.10 - '@babel/plugin-transform-typeof-symbol': 7.18.9_@babel+core@7.18.10 - '@babel/plugin-transform-unicode-escapes': 7.18.10_@babel+core@7.18.10 - '@babel/plugin-transform-unicode-regex': 7.18.6_@babel+core@7.18.10 - '@babel/preset-modules': 0.1.5_@babel+core@7.18.10 - '@babel/types': 7.18.13 - babel-plugin-polyfill-corejs2: 0.3.2_@babel+core@7.18.10 - babel-plugin-polyfill-corejs3: 0.5.3_@babel+core@7.18.10 - babel-plugin-polyfill-regenerator: 0.4.0_@babel+core@7.18.10 - core-js-compat: 3.25.0 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.18.9_@babel+core@7.19.3 + '@babel/plugin-proposal-async-generator-functions': 7.19.1_@babel+core@7.19.3 + '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-proposal-class-static-block': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-proposal-dynamic-import': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-proposal-export-namespace-from': 7.18.9_@babel+core@7.19.3 + '@babel/plugin-proposal-json-strings': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-proposal-logical-assignment-operators': 7.18.9_@babel+core@7.19.3 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-proposal-numeric-separator': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-proposal-object-rest-spread': 7.18.9_@babel+core@7.19.3 + '@babel/plugin-proposal-optional-catch-binding': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.19.3 + '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-proposal-private-property-in-object': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.19.3 + '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.19.3 + '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.19.3 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.19.3 + '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.19.3 + '@babel/plugin-syntax-import-assertions': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.19.3 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.19.3 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.19.3 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.19.3 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.19.3 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.19.3 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.19.3 + '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.19.3 + '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.19.3 + '@babel/plugin-transform-arrow-functions': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-transform-async-to-generator': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-transform-block-scoped-functions': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-transform-block-scoping': 7.18.9_@babel+core@7.19.3 + '@babel/plugin-transform-classes': 7.19.0_@babel+core@7.19.3 + '@babel/plugin-transform-computed-properties': 7.18.9_@babel+core@7.19.3 + '@babel/plugin-transform-destructuring': 7.18.13_@babel+core@7.19.3 + '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-transform-duplicate-keys': 7.18.9_@babel+core@7.19.3 + '@babel/plugin-transform-exponentiation-operator': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-transform-for-of': 7.18.8_@babel+core@7.19.3 + '@babel/plugin-transform-function-name': 7.18.9_@babel+core@7.19.3 + '@babel/plugin-transform-literals': 7.18.9_@babel+core@7.19.3 + '@babel/plugin-transform-member-expression-literals': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-transform-modules-amd': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-transform-modules-commonjs': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-transform-modules-systemjs': 7.19.0_@babel+core@7.19.3 + '@babel/plugin-transform-modules-umd': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-transform-named-capturing-groups-regex': 7.19.1_@babel+core@7.19.3 + '@babel/plugin-transform-new-target': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-transform-object-super': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-transform-parameters': 7.18.8_@babel+core@7.19.3 + '@babel/plugin-transform-property-literals': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-transform-regenerator': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-transform-reserved-words': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-transform-spread': 7.19.0_@babel+core@7.19.3 + '@babel/plugin-transform-sticky-regex': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.19.3 + '@babel/plugin-transform-typeof-symbol': 7.18.9_@babel+core@7.19.3 + '@babel/plugin-transform-unicode-escapes': 7.18.10_@babel+core@7.19.3 + '@babel/plugin-transform-unicode-regex': 7.18.6_@babel+core@7.19.3 + '@babel/preset-modules': 0.1.5_@babel+core@7.19.3 + '@babel/types': 7.19.3 + babel-plugin-polyfill-corejs2: 0.3.3_@babel+core@7.19.3 + babel-plugin-polyfill-corejs3: 0.6.0_@babel+core@7.19.3 + babel-plugin-polyfill-regenerator: 0.4.1_@babel+core@7.19.3 + core-js-compat: 3.25.5 semver: 6.3.0 transitivePeerDependencies: - supports-color dev: false - /@babel/preset-flow/7.18.6_@babel+core@7.18.10: + /@babel/preset-flow/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-E7BDhL64W6OUqpuyHnSroLnqyRTcG6ZdOBl1OKI/QK/HJfplqK/S3sq1Cckx7oTodJ5yOXyfw7rEADJ6UjoQDQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 '@babel/helper-validator-option': 7.18.6 - '@babel/plugin-transform-flow-strip-types': 7.18.9_@babel+core@7.18.10 + '@babel/plugin-transform-flow-strip-types': 7.19.0_@babel+core@7.19.3 - /@babel/preset-modules/0.1.5_@babel+core@7.18.10: + /@babel/preset-modules/0.1.5_@babel+core@7.19.3: resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.18.10 - '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.18.10 - '@babel/types': 7.18.13 + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.19.3 + '@babel/types': 7.19.3 esutils: 2.0.3 dev: false - /@babel/preset-typescript/7.18.6_@babel+core@7.18.10: + /@babel/preset-typescript/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 '@babel/helper-validator-option': 7.18.6 - '@babel/plugin-transform-typescript': 7.18.10_@babel+core@7.18.10 + '@babel/plugin-transform-typescript': 7.19.3_@babel+core@7.19.3 transitivePeerDependencies: - supports-color - /@babel/register/7.18.9_@babel+core@7.18.10: + /@babel/register/7.18.9_@babel+core@7.19.3: resolution: {integrity: sha512-ZlbnXDcNYHMR25ITwwNKT88JiaukkdVj/nG7r3wnuXkOTHc60Uy05PwMCPre0hSkY68E6zK3xz+vUJSP2jWmcw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 + '@babel/core': 7.19.3 clone-deep: 4.0.1 find-cache-dir: 2.1.0 make-dir: 2.1.0 pirates: 4.0.5 source-map-support: 0.5.21 - /@babel/runtime/7.18.9: - resolution: {integrity: sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==} + /@babel/runtime/7.19.0: + resolution: {integrity: sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.13.9 @@ -1415,58 +1366,32 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.18.6 - '@babel/parser': 7.18.11 - '@babel/types': 7.18.10 + '@babel/parser': 7.19.3 + '@babel/types': 7.19.3 - /@babel/traverse/7.18.11: - resolution: {integrity: sha512-TG9PiM2R/cWCAy6BPJKeHzNbu4lPzOSZpeMfeNErskGpTJx6trEvFaVCbDvpcxwy49BKWmEPwiW8mrysNiDvIQ==} + /@babel/traverse/7.19.3: + resolution: {integrity: sha512-qh5yf6149zhq2sgIXmwjnsvmnNQC2iw70UFjp4olxucKrWd/dvlUsBI88VSLUsnMNF7/vnOiA+nk1+yLoCqROQ==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.18.6 - '@babel/generator': 7.18.10 + '@babel/generator': 7.19.3 '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.18.9 + '@babel/helper-function-name': 7.19.0 '@babel/helper-hoist-variables': 7.18.6 '@babel/helper-split-export-declaration': 7.18.6 - '@babel/parser': 7.18.11 - '@babel/types': 7.18.10 + '@babel/parser': 7.19.3 + '@babel/types': 7.19.3 debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color - /@babel/traverse/7.18.13: - resolution: {integrity: sha512-N6kt9X1jRMLPxxxPYWi7tgvJRH/rtoU+dbKAPDM44RFHiMH8igdsaSBgFeskhSl/kLWLDUvIh1RXCrTmg0/zvA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.18.6 - '@babel/generator': 7.18.13 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.18.9 - '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/parser': 7.18.13 - '@babel/types': 7.18.13 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/types/7.18.10: - resolution: {integrity: sha512-MJvnbEiiNkpjo+LknnmRrqbY1GPUUggjv+wQVjetM/AONoupqRALB7I6jGqNUAZsKcRIEu2J6FRFvsczljjsaQ==} + /@babel/types/7.19.3: + resolution: {integrity: sha512-hGCaQzIY22DJlDh9CH7NOxgKkFjBk0Cw9xDO1Xmh2151ti7wiGfQ3LauXzL4HP1fmFlTX6XjpRETTpUcv7wQLw==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-string-parser': 7.18.10 - '@babel/helper-validator-identifier': 7.18.6 - to-fast-properties: 2.0.0 - - /@babel/types/7.18.13: - resolution: {integrity: sha512-ePqfTihzW0W6XAU+aMw2ykilisStJfDnsejDCXRchCcMJ4O0+8DhPXf2YUbZ6wjBlsEmZwLK/sPweWtu8hcJYQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.18.10 - '@babel/helper-validator-identifier': 7.18.6 + '@babel/helper-validator-identifier': 7.19.1 to-fast-properties: 2.0.0 /@egjs/hammerjs/2.0.17: @@ -1489,13 +1414,13 @@ packages: dev: false optional: true - /@eslint/eslintrc/1.3.0: - resolution: {integrity: sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==} + /@eslint/eslintrc/1.3.2: + resolution: {integrity: sha512-AXYd23w1S/bv3fTs3Lz0vjiYemS08jWkI3hYyS9I1ry+0f+Yjs1wm+sU0BS8qDOPrBIkp4qHYC16I8uVtpLajQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 debug: 4.3.4 - espree: 9.3.3 + espree: 9.4.0 globals: 13.17.0 ignore: 5.2.0 import-fresh: 3.3.0 @@ -1516,18 +1441,18 @@ packages: safe-json-stringify: 1.2.0 dev: false - /@expo/cli/0.2.11_ldu6zrsp2qyz4kn3c44jkm42fu: - resolution: {integrity: sha512-TIlylp3nghiEdlVliZRcBg8Yb++tnU92HinuQQZznVGFXFCoqJ210SPUJS1j3rxxltt8NhIJjL9OTO7PYRqnsQ==} + /@expo/cli/0.3.1_ldu6zrsp2qyz4kn3c44jkm42fu: + resolution: {integrity: sha512-amdsNf5quVs9ZbO+q35sdtpWJvvQz5pqtl8ZOv5jqRriIp1G9zcOFTDG0TnGxANQ0F2b5GcU4fn7pxAzRLDHmQ==} hasBin: true dependencies: - '@babel/runtime': 7.18.9 + '@babel/runtime': 7.19.0 '@expo/code-signing-certificates': 0.0.2 '@expo/config': 7.0.1 '@expo/config-plugins': 5.0.1 - '@expo/dev-server': 0.1.119 + '@expo/dev-server': 0.1.120 '@expo/devcert': 1.0.0 '@expo/json-file': 8.2.36 - '@expo/metro-config': 0.3.22 + '@expo/metro-config': 0.4.0 '@expo/osascript': 2.0.33 '@expo/package-manager': 0.0.56 '@expo/plist': 0.0.18 @@ -1543,7 +1468,7 @@ packages: bplist-parser: 0.3.2 cacache: 15.3.0 chalk: 4.1.2 - ci-info: 3.3.2 + ci-info: 3.4.0 debug: 4.3.4 env-editor: 0.4.2 form-data: 3.0.1 @@ -1608,7 +1533,7 @@ packages: getenv: 1.0.0 glob: 7.1.6 resolve-from: 5.0.0 - semver: 7.3.7 + semver: 7.3.8 slash: 3.0.0 xcode: 3.0.1 xml2js: 0.4.23 @@ -1633,7 +1558,7 @@ packages: resolve-from: 5.0.0 semver: 7.3.2 slugify: 1.6.5 - sucrase: 3.25.0 + sucrase: 3.28.0 transitivePeerDependencies: - supports-color dev: false @@ -1653,11 +1578,11 @@ packages: xml-js: 1.6.11 dev: false - /@expo/dev-server/0.1.119: - resolution: {integrity: sha512-DcVnj4/YA+b+Ljsz2qffHHN5LbouXFKeE9ER0Yjq5vIb2moV1q3U6LezndFLCf42Uev7C2vSa8YCcP3WOpxuMw==} + /@expo/dev-server/0.1.120: + resolution: {integrity: sha512-x5/jCv0EOpz6FyehXpI5bgDQTVsGZYvgISkAw7n60RhtG+aid6N2CCR9SDMCH70XaUpFnfTW9qvderpCEj7Puw==} dependencies: '@expo/bunyan': 4.0.0 - '@expo/metro-config': 0.3.22 + '@expo/metro-config': 0.4.0 '@expo/osascript': 2.0.33 body-parser: 1.19.0 chalk: 4.1.2 @@ -1720,8 +1645,8 @@ packages: write-file-atomic: 2.4.3 dev: false - /@expo/metro-config/0.3.22: - resolution: {integrity: sha512-R81sLbaeUBjN8IXcxiVx7GcpSj8z7szILl1b5yJDb38WdIFwxhrseA5wXaTT1yMhI+59w6n99T2qtFV2yD5qYA==} + /@expo/metro-config/0.4.0: + resolution: {integrity: sha512-QhOiotuzklalLbbsTMXJ5v4q4jffQ5xXhy1zsosgc2DL/ZzUr/Yhm3xUcOGnPQ2x7UyeY9Tl3njPHBOJJe7CSA==} dependencies: '@expo/config': 7.0.1 '@expo/json-file': 8.2.36 @@ -1730,7 +1655,7 @@ packages: find-yarn-workspace-root: 2.0.0 getenv: 1.0.0 resolve-from: 5.0.0 - sucrase: 3.25.0 + sucrase: 3.28.0 transitivePeerDependencies: - supports-color dev: false @@ -1851,33 +1776,31 @@ packages: resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} dev: false - /@gorhom/bottom-sheet/4.4.3_vlgoh3gg3ptp2ic2mlqzb2jwsy: - resolution: {integrity: sha512-ZEbCLbvLaEVNa9c+om/o9Le0q7o9GkEM7smhuoFkqj9CIjv3XbpZof7uEKV86yyta+ONAInNYrCdVSpYQ1Rjkg==} + /@gorhom/bottom-sheet/4.4.5_vlgoh3gg3ptp2ic2mlqzb2jwsy: + resolution: {integrity: sha512-Z5Z20wshLUB8lIdtMKoJaRnjd64wBR/q8EeVPThrg+skrcBwBPHfUwZJ2srB0rEszA/01ejSJy/ixyd7Ra7vUA==} peerDependencies: react: '*' react-native: '*' react-native-gesture-handler: '>=1.10.1' react-native-reanimated: '>=2.2.0' dependencies: - '@gorhom/portal': 1.0.13_jk6ntyzimkrv4hwdmdgaaf5yaa + '@gorhom/portal': 1.0.14_jk6ntyzimkrv4hwdmdgaaf5yaa invariant: 2.2.4 - nanoid: 3.3.4 react: 18.0.0 - react-native: 0.69.4_k6xwmnqmgysg6weibx66ue6pyi + react-native: 0.69.4_react@18.0.0 react-native-gesture-handler: 2.5.0_jk6ntyzimkrv4hwdmdgaaf5yaa - react-native-reanimated: 2.10.0_s4gdcbt2zwshcgkhtvkmdoj3my - react-native-redash: 16.3.0_vlgoh3gg3ptp2ic2mlqzb2jwsy + react-native-reanimated: 2.10.0_ifayjdo6vuwky63y7hdw4ayxzu dev: false - /@gorhom/portal/1.0.13_jk6ntyzimkrv4hwdmdgaaf5yaa: - resolution: {integrity: sha512-ViClKPkyGnj8HVMW45OGQSnGbWBVh8i3tgMOkGqpm6Cv0WVcDfUL7SER6zyGQy8Wdoj3GUDpAJFMqVOxpmRpzw==} + /@gorhom/portal/1.0.14_jk6ntyzimkrv4hwdmdgaaf5yaa: + resolution: {integrity: sha512-MXyL4xvCjmgaORr/rtryDNFy3kU4qUbKlwtQqqsygd0xX3mhKjOLn6mQK8wfu0RkoE0pBE0nAasRoHua+/QZ7A==} peerDependencies: react: '*' react-native: '*' dependencies: nanoid: 3.3.4 react: 18.0.0 - react-native: 0.69.4_k6xwmnqmgysg6weibx66ue6pyi + react-native: 0.69.4_react@18.0.0 dev: false /@graphql-typed-document-node/core/3.1.1_graphql@15.8.0: @@ -1896,8 +1819,8 @@ packages: dependencies: '@hapi/hoek': 9.3.0 - /@humanwhocodes/config-array/0.10.4: - resolution: {integrity: sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw==} + /@humanwhocodes/config-array/0.10.7: + resolution: {integrity: sha512-MDl6D6sBsaV452/QSdX+4CXIjZhIcI0PELsxUjk4U828yd58vk3bTIvk/6w5FY+4hIy9sLW0sfrV7K7Kc++j/w==} engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 1.2.1 @@ -1911,6 +1834,11 @@ packages: resolution: {integrity: sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==} dev: true + /@humanwhocodes/module-importer/1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + dev: true + /@humanwhocodes/object-schema/1.2.1: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} dev: true @@ -1927,7 +1855,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.6.4 + '@types/node': 18.8.2 '@types/yargs': 15.0.14 chalk: 4.1.2 @@ -1937,7 +1865,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.6.4 + '@types/node': 18.8.2 '@types/yargs': 16.0.4 chalk: 4.1.2 @@ -1954,7 +1882,7 @@ packages: dependencies: '@jridgewell/set-array': 1.1.2 '@jridgewell/sourcemap-codec': 1.4.14 - '@jridgewell/trace-mapping': 0.3.14 + '@jridgewell/trace-mapping': 0.3.15 /@jridgewell/resolve-uri/3.1.0: resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} @@ -1974,18 +1902,11 @@ packages: /@jridgewell/sourcemap-codec/1.4.14: resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} - /@jridgewell/trace-mapping/0.3.14: - resolution: {integrity: sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==} - dependencies: - '@jridgewell/resolve-uri': 3.1.0 - '@jridgewell/sourcemap-codec': 1.4.14 - /@jridgewell/trace-mapping/0.3.15: resolution: {integrity: sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==} dependencies: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.4.14 - dev: true /@motify/components/0.18.0_react@18.0.0: resolution: {integrity: sha512-1StICST4CKXvWwkkoKtt6Pml//gE2fPI99Byxa+TbrFw4KieATeCYBRjSKD0BghmFmoF+2mRM2uf9FRYfJCGtQ==} @@ -2005,49 +1926,49 @@ packages: - react-dom dev: false - /@motionone/animation/10.13.1: - resolution: {integrity: sha512-dxQ+1wWxL6iFHDy1uv6hhcPjIdOg36eDT56jN4LI7Z5HZRyLpq8x1t7JFQclo/IEIb+6Bk4atmyinGFdXVECuA==} + /@motionone/animation/10.14.0: + resolution: {integrity: sha512-h+1sdyBP8vbxEBW5gPFDnj+m2DCqdlAuf2g6Iafb1lcMnqjsRXWlPw1AXgvUMXmreyhqmPbJqoNfIKdytampRQ==} dependencies: - '@motionone/easing': 10.13.1 - '@motionone/types': 10.13.0 - '@motionone/utils': 10.13.1 + '@motionone/easing': 10.14.0 + '@motionone/types': 10.14.0 + '@motionone/utils': 10.14.0 tslib: 2.4.0 dev: false /@motionone/dom/10.12.0: resolution: {integrity: sha512-UdPTtLMAktHiqV0atOczNYyDd/d8Cf5fFsd1tua03PqTwwCe/6lwhLSQ8a7TbnQ5SN0gm44N1slBfj+ORIhrqw==} dependencies: - '@motionone/animation': 10.13.1 - '@motionone/generators': 10.13.1 - '@motionone/types': 10.13.0 - '@motionone/utils': 10.13.1 + '@motionone/animation': 10.14.0 + '@motionone/generators': 10.14.0 + '@motionone/types': 10.14.0 + '@motionone/utils': 10.14.0 hey-listen: 1.0.8 tslib: 2.4.0 dev: false - /@motionone/easing/10.13.1: - resolution: {integrity: sha512-INEsInHHDHVgx0dp5qlXi1lMXBqYicgLMMSn3zfGzaIvcaEbI1Uz8BoyNV4BiclTupG7RYIh+T6BU83ZcEe74g==} + /@motionone/easing/10.14.0: + resolution: {integrity: sha512-2vUBdH9uWTlRbuErhcsMmt1jvMTTqvGmn9fHq8FleFDXBlHFs5jZzHJT9iw+4kR1h6a4SZQuCf72b9ji92qNYA==} dependencies: - '@motionone/utils': 10.13.1 + '@motionone/utils': 10.14.0 tslib: 2.4.0 dev: false - /@motionone/generators/10.13.1: - resolution: {integrity: sha512-+HK5u2YcNJCckTTqfOLgSVcrWv2z1dVwrSZEMVJuAh0EnWEWGDJRvMBoPc0cFf/osbkA2Rq9bH2+vP0Ex/D8uw==} + /@motionone/generators/10.14.0: + resolution: {integrity: sha512-6kRHezoFfIjFN7pPpaxmkdZXD36tQNcyJe3nwVqwJ+ZfC0e3rFmszR8kp9DEVFs9QL/akWjuGPSLBI1tvz+Vjg==} dependencies: - '@motionone/types': 10.13.0 - '@motionone/utils': 10.13.1 + '@motionone/types': 10.14.0 + '@motionone/utils': 10.14.0 tslib: 2.4.0 dev: false - /@motionone/types/10.13.0: - resolution: {integrity: sha512-qegk4qg8U1N9ZwAJ187BG3TkZz1k9LP/pvNtCSlqdq/PMUDKlCFG4ZnjJ481P0IOH/vIw1OzIbKIuyg0A3rk9g==} + /@motionone/types/10.14.0: + resolution: {integrity: sha512-3bNWyYBHtVd27KncnJLhksMFQ5o2MSdk1cA/IZqsHtA9DnRM1SYgN01CTcJ8Iw8pCXF5Ocp34tyAjY7WRpOJJQ==} dev: false - /@motionone/utils/10.13.1: - resolution: {integrity: sha512-TjDPTIppaf3ofBXQv4ZzAketJgN0sclALXfZ6mfrkjJkOy83mLls9744F+6S+VKCpBmvbZcBY4PQfrfhAfeMtA==} + /@motionone/utils/10.14.0: + resolution: {integrity: sha512-sLWBLPzRqkxmOTRzSaD3LFQXCPHvDzyHJ1a3VP9PRzBxyVd2pv51/gMOsdAcxQ9n+MIeGJnxzXBYplUHKj4jkw==} dependencies: - '@motionone/types': 10.13.0 + '@motionone/types': 10.14.0 hey-listen: 1.0.8 tslib: 2.4.0 dev: false @@ -2074,7 +1995,7 @@ packages: resolution: {integrity: sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==} dependencies: '@gar/promisify': 1.1.3 - semver: 7.3.7 + semver: 7.3.8 dev: false /@npmcli/move-file/1.1.2: @@ -2085,13 +2006,13 @@ packages: rimraf: 3.0.2 dev: false - /@react-native-async-storage/async-storage/1.17.7_react-native@0.69.4: - resolution: {integrity: sha512-mDtWhCcpxzrZhA95f6zi0pnBsjBEZW1LKZWfxVXG0UfaWpPxDBCKowNk2xjRTytckZeVhjmPJPtBU+8QNQcR0A==} + /@react-native-async-storage/async-storage/1.17.10_react-native@0.69.4: + resolution: {integrity: sha512-KrR021BmBLsA0TT1AAsfH16bHYy0MSbhdAeBAqpriak3GS1T2alFcdTUvn13p0ZW6FKRD6Bd3ryU2zhU/IYYJQ==} peerDependencies: - react-native: ^0.0.0-0 || 0.60 - 0.69 || 1000.0.0 + react-native: ^0.0.0-0 || 0.60 - 0.70 || 1000.0.0 dependencies: merge-options: 3.0.4 - react-native: 0.69.4_k6xwmnqmgysg6weibx66ue6pyi + react-native: 0.69.4_react@18.0.0 dev: false /@react-native-community/cli-clean/8.0.4: @@ -2104,14 +2025,14 @@ packages: transitivePeerDependencies: - encoding - /@react-native-community/cli-config/8.0.4: - resolution: {integrity: sha512-0vcrIETka1Tr0blr0AjVkoP/1yynvarJQXi8Yry/XB3BLenrkUFxolqqA3Ff55KFQ7t1IzAuFtfuVZs25LvyDQ==} + /@react-native-community/cli-config/8.0.6: + resolution: {integrity: sha512-mjVpVvdh8AviiO8xtqeX+BkjqE//NMDnISwsLWSJUfNCwTAPmdR8PGbhgP5O4hWHyJ3WkepTopl0ya7Tfi3ifw==} dependencies: '@react-native-community/cli-tools': 8.0.4 cosmiconfig: 5.2.1 deepmerge: 3.3.0 glob: 7.2.3 - joi: 17.6.0 + joi: 17.6.2 transitivePeerDependencies: - encoding @@ -2122,11 +2043,11 @@ packages: transitivePeerDependencies: - supports-color - /@react-native-community/cli-doctor/8.0.4: - resolution: {integrity: sha512-Blw/66qwoEoKrtwn3O9iTtXbt4YWlwqNse5BJeRDzlSdutWTX4PgJu/34gyvOHGysNlrf+GYkeyqqxI/y0s07A==} + /@react-native-community/cli-doctor/8.0.6: + resolution: {integrity: sha512-ZQqyT9mJMVeFEVIwj8rbDYGCA2xXjJfsQjWk2iTRZ1CFHfhPSUuUiG8r6mJmTinAP9t+wYcbbIYzNgdSUKnDMw==} dependencies: - '@react-native-community/cli-config': 8.0.4 - '@react-native-community/cli-platform-ios': 8.0.4 + '@react-native-community/cli-config': 8.0.6 + '@react-native-community/cli-platform-ios': 8.0.6 '@react-native-community/cli-tools': 8.0.4 chalk: 4.1.2 command-exists: 1.2.9 @@ -2170,8 +2091,8 @@ packages: transitivePeerDependencies: - encoding - /@react-native-community/cli-platform-ios/8.0.4: - resolution: {integrity: sha512-7Jdptedfg/J0Xo2rQbJ4jmo+PMYOiIiRcNDCSI5dBcNkQfSq4MMYUnKQx5DdZHgrfxE0O1vE4iNmJdd4wePz8w==} + /@react-native-community/cli-platform-ios/8.0.6: + resolution: {integrity: sha512-CMR6mu/LVx6JVfQRDL9uULsMirJT633bODn+IrYmrwSz250pnhON16We8eLPzxOZHyDjm7JPuSgHG3a/BPiRuQ==} dependencies: '@react-native-community/cli-tools': 8.0.4 chalk: 4.1.2 @@ -2184,7 +2105,7 @@ packages: transitivePeerDependencies: - encoding - /@react-native-community/cli-plugin-metro/8.0.4_@babel+core@7.18.10: + /@react-native-community/cli-plugin-metro/8.0.4: resolution: {integrity: sha512-UWzY1eMcEr/6262R2+d0Is5M3L/7Y/xXSDIFMoc5Rv5Wucl3hJM/TxHXmByvHpuJf6fJAfqOskyt4bZCvbI+wQ==} dependencies: '@react-native-community/cli-server-api': 8.0.4 @@ -2193,12 +2114,11 @@ packages: metro: 0.70.3 metro-config: 0.70.3 metro-core: 0.70.3 - metro-react-native-babel-transformer: 0.70.3_@babel+core@7.18.10 + metro-react-native-babel-transformer: 0.70.3 metro-resolver: 0.70.3 metro-runtime: 0.70.3 readline: 1.3.0 transitivePeerDependencies: - - '@babel/core' - bufferutil - encoding - supports-color @@ -2241,21 +2161,21 @@ packages: /@react-native-community/cli-types/8.0.0: resolution: {integrity: sha512-1lZS1PEvMlFaN3Se1ksyoFWzMjk+YfKi490GgsqKJln9gvFm8tqVPdnXttI5Uf2DQf3BMse8Bk8dNH4oV6Ewow==} dependencies: - joi: 17.6.0 + joi: 17.6.2 - /@react-native-community/cli/8.0.5_mqmjqcyqm4trh6m6pjidkcb5na: - resolution: {integrity: sha512-X0AMNK+sKDJQX8eQRkqgddJsZPWlHgLryX7O9usj78UFEK8VqVYtpv08piWecfAhC2mZU4/Lww4bKu9uJ1rdyQ==} + /@react-native-community/cli/8.0.6_react-native@0.69.4: + resolution: {integrity: sha512-E36hU/if3quQCfJHGWVkpsCnwtByRCwORuAX0r6yr1ebKktpKeEO49zY9PAu/Z1gfyxCtgluXY0HfRxjKRFXTg==} engines: {node: '>=12'} hasBin: true peerDependencies: react-native: '*' dependencies: '@react-native-community/cli-clean': 8.0.4 - '@react-native-community/cli-config': 8.0.4 + '@react-native-community/cli-config': 8.0.6 '@react-native-community/cli-debugger-ui': 8.0.0 - '@react-native-community/cli-doctor': 8.0.4 + '@react-native-community/cli-doctor': 8.0.6 '@react-native-community/cli-hermes': 8.0.5 - '@react-native-community/cli-plugin-metro': 8.0.4_@babel+core@7.18.10 + '@react-native-community/cli-plugin-metro': 8.0.4 '@react-native-community/cli-server-api': 8.0.4 '@react-native-community/cli-tools': 8.0.4 '@react-native-community/cli-types': 8.0.0 @@ -2269,10 +2189,9 @@ packages: lodash: 4.17.21 minimist: 1.2.6 prompts: 2.4.2 - react-native: 0.69.4_k6xwmnqmgysg6weibx66ue6pyi + react-native: 0.69.4_react@18.0.0 semver: 6.3.0 transitivePeerDependencies: - - '@babel/core' - bufferutil - encoding - supports-color @@ -2285,7 +2204,7 @@ packages: react-native: '>=0.57' dependencies: react: 18.0.0 - react-native: 0.69.4_k6xwmnqmgysg6weibx66ue6pyi + react-native: 0.69.4_react@18.0.0 dev: false /@react-native/assets/1.0.0: @@ -2297,8 +2216,8 @@ packages: /@react-native/polyfills/2.0.0: resolution: {integrity: sha512-K0aGNn1TjalKj+65D7ycc1//H9roAQ51GJVk5ZJQFb2teECGmzd86bYDC0aYdbRf7gtovescq4Zt6FR0tgXiHQ==} - /@react-navigation/bottom-tabs/6.3.3_dd5e2d2op72fnp3nnpqh5tisfi: - resolution: {integrity: sha512-S5obigsDAgRD7hmGauijNITI2jPm7N40IIIwdQjJhT9Y9vos8ycLOKMVU06mchU6sRGJC2xIkPderPiwAUVvDg==} + /@react-navigation/bottom-tabs/6.4.0_6hd4c6zmgrilyj4zgihr4fzdu4: + resolution: {integrity: sha512-90CapiXjiWudbCiki9e6fOr/CECQRguIxv5OD7IBfbAMGX5GGiJpX8aqiHAz2DxpAz31v4JZcUr945+lFhXBfA==} peerDependencies: '@react-navigation/native': ^6.0.0 react: '*' @@ -2306,22 +2225,22 @@ packages: react-native-safe-area-context: '>= 3.0.0' react-native-screens: '>= 3.0.0' dependencies: - '@react-navigation/elements': 1.3.5_dqazekqm5xme4ddi4unpidbhym - '@react-navigation/native': 6.0.12_jk6ntyzimkrv4hwdmdgaaf5yaa + '@react-navigation/elements': 1.3.6_6f27umqsgv4rbuymln6ce53awe + '@react-navigation/native': 6.0.13_jk6ntyzimkrv4hwdmdgaaf5yaa color: 4.2.3 react: 18.0.0 - react-native: 0.69.4_k6xwmnqmgysg6weibx66ue6pyi + react-native: 0.69.4_react@18.0.0 react-native-safe-area-context: 4.3.1_jk6ntyzimkrv4hwdmdgaaf5yaa react-native-screens: 3.15.0_jk6ntyzimkrv4hwdmdgaaf5yaa warn-once: 0.1.1 dev: false - /@react-navigation/core/6.3.0_react@18.0.0: - resolution: {integrity: sha512-nyvReUB00SAfHdL/AA+GksdaTuiC31LxHp+f1kxuPNkcGR7zSMVT+Wrq4OHe+VPFfCxJxoseQ2ElsvE+4IYFoQ==} + /@react-navigation/core/6.4.0_react@18.0.0: + resolution: {integrity: sha512-tpc0Ak/DiHfU3LlYaRmIY7vI4sM/Ru0xCet6runLUh9aABf4wiLgxyFJ5BtoWq6xFF8ymYEA/KWtDhetQ24YiA==} peerDependencies: react: '*' dependencies: - '@react-navigation/routers': 6.1.2 + '@react-navigation/routers': 6.1.3 escape-string-regexp: 4.0.0 nanoid: 3.3.4 query-string: 7.1.1 @@ -2330,8 +2249,8 @@ packages: use-latest-callback: 0.1.5 dev: false - /@react-navigation/drawer/6.4.4_ywqefi2mkvedjihbydxse4r6wi: - resolution: {integrity: sha512-ckwnxX7foekkxgZc4nO38d4t9ISZqPnzNQjNgvWM7MiP9KPzI8/fWWpX8YFlk/5CmgaPV7RkgZoDWv8y8aeV7w==} + /@react-navigation/drawer/6.5.0_jtm7wd7ntucmrdxtzwrxvojwfq: + resolution: {integrity: sha512-ma3qPjAfbwF07xd1w1gaWdcvYWmT4F+Z098q2J7XGbHw8yTGQYiNTnD1NMKerXwxM24vui2tMuFHA54F1rIvHQ==} peerDependencies: '@react-navigation/native': ^6.0.0 react: '*' @@ -2341,54 +2260,54 @@ packages: react-native-safe-area-context: '>= 3.0.0' react-native-screens: '>= 3.0.0' dependencies: - '@react-navigation/elements': 1.3.5_dqazekqm5xme4ddi4unpidbhym - '@react-navigation/native': 6.0.12_jk6ntyzimkrv4hwdmdgaaf5yaa + '@react-navigation/elements': 1.3.6_6f27umqsgv4rbuymln6ce53awe + '@react-navigation/native': 6.0.13_jk6ntyzimkrv4hwdmdgaaf5yaa color: 4.2.3 react: 18.0.0 - react-native: 0.69.4_k6xwmnqmgysg6weibx66ue6pyi + react-native: 0.69.4_react@18.0.0 react-native-gesture-handler: 2.5.0_jk6ntyzimkrv4hwdmdgaaf5yaa - react-native-reanimated: 2.10.0_s4gdcbt2zwshcgkhtvkmdoj3my + react-native-reanimated: 2.10.0_ifayjdo6vuwky63y7hdw4ayxzu react-native-safe-area-context: 4.3.1_jk6ntyzimkrv4hwdmdgaaf5yaa react-native-screens: 3.15.0_jk6ntyzimkrv4hwdmdgaaf5yaa warn-once: 0.1.1 dev: false - /@react-navigation/elements/1.3.5_dqazekqm5xme4ddi4unpidbhym: - resolution: {integrity: sha512-3Ef5cYuQXqJRco7RG99fkDEciAuYTkAD7go5D8RFYG8rAp2aI/cDnGwFwvFVANlRsbFFPGU3ZLY8EUJihf4Hjw==} + /@react-navigation/elements/1.3.6_6f27umqsgv4rbuymln6ce53awe: + resolution: {integrity: sha512-pNJ8R9JMga6SXOw6wGVN0tjmE6vegwPmJBL45SEMX2fqTfAk2ykDnlJHodRpHpAgsv0DaI8qX76z3A+aqKSU0w==} peerDependencies: '@react-navigation/native': ^6.0.0 react: '*' react-native: '*' react-native-safe-area-context: '>= 3.0.0' dependencies: - '@react-navigation/native': 6.0.12_jk6ntyzimkrv4hwdmdgaaf5yaa + '@react-navigation/native': 6.0.13_jk6ntyzimkrv4hwdmdgaaf5yaa react: 18.0.0 - react-native: 0.69.4_k6xwmnqmgysg6weibx66ue6pyi + react-native: 0.69.4_react@18.0.0 react-native-safe-area-context: 4.3.1_jk6ntyzimkrv4hwdmdgaaf5yaa dev: false - /@react-navigation/native/6.0.12_jk6ntyzimkrv4hwdmdgaaf5yaa: - resolution: {integrity: sha512-23n0pDsFvFxPIkB4zrAip05uUj6Jr+5dinqrDdEU26cPoki3/iJlirvbSIs/64Om/OuTyUjFdB/zI75ng+m5Pg==} + /@react-navigation/native/6.0.13_jk6ntyzimkrv4hwdmdgaaf5yaa: + resolution: {integrity: sha512-CwaJcAGbhv3p3ECablxBkw8QBCGDWXqVRwQ4QbelajNW623m3sNTC9dOF6kjp8au6Rg9B5e0KmeuY0xWbPk79A==} peerDependencies: react: '*' react-native: '*' dependencies: - '@react-navigation/core': 6.3.0_react@18.0.0 + '@react-navigation/core': 6.4.0_react@18.0.0 escape-string-regexp: 4.0.0 fast-deep-equal: 3.1.3 nanoid: 3.3.4 react: 18.0.0 - react-native: 0.69.4_k6xwmnqmgysg6weibx66ue6pyi + react-native: 0.69.4_react@18.0.0 dev: false - /@react-navigation/routers/6.1.2: - resolution: {integrity: sha512-uJ+N7dyrZjA2L3ykyH0OyEiLNhzxDSfUqgOS4LmrLWlgly/oYFfPTqsxCD8zP0r3hv7ayLIPQPC1u1ubSO+42A==} + /@react-navigation/routers/6.1.3: + resolution: {integrity: sha512-idJotMEzHc3haWsCh7EvnnZMKxvaS4YF/x2UyFBkNFiEFUaEo/1ioQU6qqmVLspdEv4bI/dLm97hQo7qD8Yl7Q==} dependencies: nanoid: 3.3.4 dev: false - /@react-navigation/stack/6.2.3_g6rcykmgspzf2j66bcli5dyok4: - resolution: {integrity: sha512-DZXazhuyxefsO4RkkimPuoKpstc7zZOMqMBa7eqWy6iZNZX4yt8Wjji8KPMr5yn0OA1MxC5C4H8CKbMuy/kxIA==} + /@react-navigation/stack/6.3.2_ntymb6no7bst2puhvwy2ruexmm: + resolution: {integrity: sha512-wb8koMp4OTrG5geOqEFPDatTyl8dsSyRBHN4h0wzgNT29V/JjkS3LYwkGLLfUmMfeLXFyIfEPILAjYLFmnk3dA==} peerDependencies: '@react-navigation/native': ^6.0.0 react: '*' @@ -2397,19 +2316,19 @@ packages: react-native-safe-area-context: '>= 3.0.0' react-native-screens: '>= 3.0.0' dependencies: - '@react-navigation/elements': 1.3.5_dqazekqm5xme4ddi4unpidbhym - '@react-navigation/native': 6.0.12_jk6ntyzimkrv4hwdmdgaaf5yaa + '@react-navigation/elements': 1.3.6_6f27umqsgv4rbuymln6ce53awe + '@react-navigation/native': 6.0.13_jk6ntyzimkrv4hwdmdgaaf5yaa color: 4.2.3 react: 18.0.0 - react-native: 0.69.4_k6xwmnqmgysg6weibx66ue6pyi + react-native: 0.69.4_react@18.0.0 react-native-gesture-handler: 2.5.0_jk6ntyzimkrv4hwdmdgaaf5yaa react-native-safe-area-context: 4.3.1_jk6ntyzimkrv4hwdmdgaaf5yaa react-native-screens: 3.15.0_jk6ntyzimkrv4hwdmdgaaf5yaa warn-once: 0.1.1 dev: false - /@rnx-kit/babel-preset-metro-react-native/1.1.0_@babel+core@7.18.10: - resolution: {integrity: sha512-HJYNodzUIlFZF6CuDgouK4v6w3mPmhHqAPx0IBG90z2j1XVnLLFj5g5I4B3oKUFDS1uxquDVwYCA6NFdyNAn4Q==} + /@rnx-kit/babel-preset-metro-react-native/1.1.1_@babel+core@7.19.3: + resolution: {integrity: sha512-/BI7l1BVIszY9Emxfkdh+BIITJK7TOyMGkXyxdWFHFbPUfFvqEklGcZUJei/hZwyvqzVm34YaKwqdlUB3ttIHw==} peerDependencies: '@babel/plugin-transform-typescript': ^7.0.0 metro-react-native-babel-preset: '*' @@ -2417,24 +2336,31 @@ packages: '@babel/plugin-transform-typescript': optional: true dependencies: - babel-plugin-const-enum: 1.2.0_@babel+core@7.18.10 + babel-plugin-const-enum: 1.2.0_@babel+core@7.19.3 transitivePeerDependencies: - '@babel/core' - supports-color dev: true - /@rnx-kit/metro-config/1.2.37_s4gdcbt2zwshcgkhtvkmdoj3my: - resolution: {integrity: sha512-bztHJDOhZCmABsuz9CylzT2OTxXwzxhTWuvSf2CngrYCP6Ve25jVmfy/hp8bUQ8pnGw1P44yHY9R1lufY5/p6g==} + /@rnx-kit/console/1.0.11: + resolution: {integrity: sha512-2Iyx56e+kk9YBQt3G5YSqG91dEI+AZhK/S58J64C6muPOdnYi7zuzaX1P/vkDFRSMAybtBi639Onn268suihnA==} + dependencies: + chalk: 4.1.2 + dev: true + + /@rnx-kit/metro-config/1.3.1_ifayjdo6vuwky63y7hdw4ayxzu: + resolution: {integrity: sha512-HB4zApKYmaduyxgDVKpmjk5yuwFhSTUB2yrhCWsV98N27UK7v8Z3eI2gESKYkozuNXPUfcJKORdwjqwfiefNPg==} peerDependencies: metro-config: '>=0.58.0' react: '*' react-native: '*' dependencies: - '@rnx-kit/babel-preset-metro-react-native': 1.1.0_@babel+core@7.18.10 + '@rnx-kit/babel-preset-metro-react-native': 1.1.1_@babel+core@7.19.3 + '@rnx-kit/console': 1.0.11 '@rnx-kit/tools-node': 1.3.0 '@rnx-kit/tools-workspaces': 0.1.1 react: 18.0.0 - react-native: 0.69.4_k6xwmnqmgysg6weibx66ue6pyi + react-native: 0.69.4_react@18.0.0 transitivePeerDependencies: - '@babel/core' - '@babel/plugin-transform-typescript' @@ -2473,26 +2399,24 @@ packages: resolution: {integrity: sha512-zrNZR2qtzoyMSAuB8oOS4SmoIlsYXBjWokKoFLZQhgnSZnXNyHcXchP6e802HGlNaXumsy0UaMFGZKMvBahFxg==} engines: {node: '>=14.15'} dependencies: - fast-glob: 3.2.11 + fast-glob: 3.2.12 find-up: 5.0.0 read-yaml-file: 2.1.0 dev: true - /@rspc/client/0.0.6: - resolution: {integrity: sha512-NcJbmObbf+BzFcYWGvZaP7+a+KWTbAk9CkBRqW1nIu7TamV7tZtkHVmibwPHTeFnpAKPlKV7SH5vodV4yYETcw==} + /@rspc/client/0.1.2: + resolution: {integrity: sha512-MfgSZkrqVzzqCN4GU3LKhfy4qG+PS1LpEz/MMays6rtz5EFNJIvEVMA5Ooc+DH8KLe5h4/3bf4dfyEs7czhA2w==} dev: false - /@rspc/react/0.0.6_jk6ntyzimkrv4hwdmdgaaf5yaa: - resolution: {integrity: sha512-iU7DUbc0WkMW7q53sx0+t/gUhcShQ/a0KLpBmHGT6QTwhjnFsdqzW7GohCD4CTcT+RYUxirqHq6TvKPlmtKHcQ==} + /@rspc/react/0.1.2_42vf6jz3slhkhs3b6cxp5fqczu: + resolution: {integrity: sha512-uLyBPCx+Bwk2qkvIcVJQWHT1Z9WhvzbbX4zfEsrZdk2aVtwVb6q0anbIBM/eGc7QgLowaOcSi/o7MZTAL4Sbsw==} peerDependencies: + '@tanstack/react-query': ^4.8.0 react: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@rspc/client': 0.0.6 - '@tanstack/react-query': 4.2.3_jk6ntyzimkrv4hwdmdgaaf5yaa + '@rspc/client': 0.1.2 + '@tanstack/react-query': 4.10.1_jk6ntyzimkrv4hwdmdgaaf5yaa react: 18.0.0 - transitivePeerDependencies: - - react-dom - - react-native dev: false /@segment/loosely-validate-event/2.0.0: @@ -2513,147 +2437,149 @@ packages: /@sideway/pinpoint/2.0.0: resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} - /@svgr/babel-plugin-add-jsx-attribute/6.3.1_@babel+core@7.18.10: + /@svgr/babel-plugin-add-jsx-attribute/6.3.1_@babel+core@7.19.3: resolution: {integrity: sha512-jDBKArXYO1u0B1dmd2Nf8Oy6aTF5vLDfLoO9Oon/GLkqZ/NiggYWZA+a2HpUMH4ITwNqS3z43k8LWApB8S583w==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 + '@babel/core': 7.19.3 dev: true - /@svgr/babel-plugin-remove-jsx-attribute/6.3.1_@babel+core@7.18.10: + /@svgr/babel-plugin-remove-jsx-attribute/6.3.1_@babel+core@7.19.3: resolution: {integrity: sha512-dQzyJ4prwjcFd929T43Z8vSYiTlTu8eafV40Z2gO7zy/SV5GT+ogxRJRBIKWomPBOiaVXFg3jY4S5hyEN3IBjQ==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 + '@babel/core': 7.19.3 dev: true - /@svgr/babel-plugin-remove-jsx-empty-expression/6.3.1_@babel+core@7.18.10: + /@svgr/babel-plugin-remove-jsx-empty-expression/6.3.1_@babel+core@7.19.3: resolution: {integrity: sha512-HBOUc1XwSU67fU26V5Sfb8MQsT0HvUyxru7d0oBJ4rA2s4HW3PhyAPC7fV/mdsSGpAvOdd8Wpvkjsr0fWPUO7A==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 + '@babel/core': 7.19.3 dev: true - /@svgr/babel-plugin-replace-jsx-attribute-value/6.3.1_@babel+core@7.18.10: + /@svgr/babel-plugin-replace-jsx-attribute-value/6.3.1_@babel+core@7.19.3: resolution: {integrity: sha512-C12e6aN4BXAolRrI601gPn5MDFCRHO7C4TM8Kks+rDtl8eEq+NN1sak0eAzJu363x3TmHXdZn7+Efd2nr9I5dA==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 + '@babel/core': 7.19.3 dev: true - /@svgr/babel-plugin-svg-dynamic-title/6.3.1_@babel+core@7.18.10: + /@svgr/babel-plugin-svg-dynamic-title/6.3.1_@babel+core@7.19.3: resolution: {integrity: sha512-6NU55Mmh3M5u2CfCCt6TX29/pPneutrkJnnDCHbKZnjukZmmgUAZLtZ2g6ZoSPdarowaQmAiBRgAHqHmG0vuqA==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 + '@babel/core': 7.19.3 dev: true - /@svgr/babel-plugin-svg-em-dimensions/6.3.1_@babel+core@7.18.10: + /@svgr/babel-plugin-svg-em-dimensions/6.3.1_@babel+core@7.19.3: resolution: {integrity: sha512-HV1NGHYTTe1vCNKlBgq/gKuCSfaRlKcHIADn7P8w8U3Zvujdw1rmusutghJ1pZJV7pDt3Gt8ws+SVrqHnBO/Qw==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 + '@babel/core': 7.19.3 dev: true - /@svgr/babel-plugin-transform-react-native-svg/6.3.1_@babel+core@7.18.10: + /@svgr/babel-plugin-transform-react-native-svg/6.3.1_@babel+core@7.19.3: resolution: {integrity: sha512-2wZhSHvTolFNeKDAN/ZmIeSz2O9JSw72XD+o2bNp2QAaWqa8KGpn5Yk5WHso6xqfSAiRzAE+GXlsrBO4UP9LLw==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 + '@babel/core': 7.19.3 dev: true - /@svgr/babel-plugin-transform-svg-component/6.3.1_@babel+core@7.18.10: + /@svgr/babel-plugin-transform-svg-component/6.3.1_@babel+core@7.19.3: resolution: {integrity: sha512-cZ8Tr6ZAWNUFfDeCKn/pGi976iWSkS8ijmEYKosP+6ktdZ7lW9HVLHojyusPw3w0j8PI4VBeWAXAmi/2G7owxw==} engines: {node: '>=12'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 + '@babel/core': 7.19.3 dev: true - /@svgr/babel-preset/6.3.1_@babel+core@7.18.10: - resolution: {integrity: sha512-tQtWtzuMMQ3opH7je+MpwfuRA1Hf3cKdSgTtAYwOBDfmhabP7rcTfBi3E7V3MuwJNy/Y02/7/RutvwS1W4Qv9g==} + /@svgr/babel-preset/6.4.0_@babel+core@7.19.3: + resolution: {integrity: sha512-Ytuh7N282fv2Cy1JePf6HZ29/G5Hb8mQAjx4iykPjvfFl9NK6o5lZavmewgjOGT8kNPtwgvheuOQn4CifHRUhQ==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@svgr/babel-plugin-add-jsx-attribute': 6.3.1_@babel+core@7.18.10 - '@svgr/babel-plugin-remove-jsx-attribute': 6.3.1_@babel+core@7.18.10 - '@svgr/babel-plugin-remove-jsx-empty-expression': 6.3.1_@babel+core@7.18.10 - '@svgr/babel-plugin-replace-jsx-attribute-value': 6.3.1_@babel+core@7.18.10 - '@svgr/babel-plugin-svg-dynamic-title': 6.3.1_@babel+core@7.18.10 - '@svgr/babel-plugin-svg-em-dimensions': 6.3.1_@babel+core@7.18.10 - '@svgr/babel-plugin-transform-react-native-svg': 6.3.1_@babel+core@7.18.10 - '@svgr/babel-plugin-transform-svg-component': 6.3.1_@babel+core@7.18.10 + '@babel/core': 7.19.3 + '@svgr/babel-plugin-add-jsx-attribute': 6.3.1_@babel+core@7.19.3 + '@svgr/babel-plugin-remove-jsx-attribute': 6.3.1_@babel+core@7.19.3 + '@svgr/babel-plugin-remove-jsx-empty-expression': 6.3.1_@babel+core@7.19.3 + '@svgr/babel-plugin-replace-jsx-attribute-value': 6.3.1_@babel+core@7.19.3 + '@svgr/babel-plugin-svg-dynamic-title': 6.3.1_@babel+core@7.19.3 + '@svgr/babel-plugin-svg-em-dimensions': 6.3.1_@babel+core@7.19.3 + '@svgr/babel-plugin-transform-react-native-svg': 6.3.1_@babel+core@7.19.3 + '@svgr/babel-plugin-transform-svg-component': 6.3.1_@babel+core@7.19.3 dev: true - /@svgr/core/6.3.1: - resolution: {integrity: sha512-Sm3/7OdXbQreemf9aO25keerZSbnKMpGEfmH90EyYpj1e8wMD4TuwJIb3THDSgRMWk1kYJfSRulELBy4gVgZUA==} + /@svgr/core/6.4.0_@babel+core@7.19.3: + resolution: {integrity: sha512-wU9uyF6BUnwAqG7fDOowmDQzmbvovj1uq/iETfMK9xwQNaT+e7yN7SmDDcETXC72dnOrMcRuEWw0JEvpJha+yg==} engines: {node: '>=10'} dependencies: - '@svgr/plugin-jsx': 6.3.1_@svgr+core@6.3.1 + '@svgr/babel-preset': 6.4.0_@babel+core@7.19.3 + '@svgr/plugin-jsx': 6.4.0_@svgr+core@6.4.0 camelcase: 6.3.0 cosmiconfig: 7.0.1 transitivePeerDependencies: + - '@babel/core' - supports-color dev: true - /@svgr/hast-util-to-babel-ast/6.3.1: - resolution: {integrity: sha512-NgyCbiTQIwe3wHe/VWOUjyxmpUmsrBjdoIxKpXt3Nqc3TN30BpJG22OxBvVzsAh9jqep0w0/h8Ywvdk3D9niNQ==} + /@svgr/hast-util-to-babel-ast/6.4.0: + resolution: {integrity: sha512-PjcU8jCneKXJnrREycsgfgQ/bzR1ogSKC5MBeUu2wmEoJIjzXX7X14DDktUjU9bkBy26yMDiVHn46Nl82P3WEg==} engines: {node: '>=10'} dependencies: - '@babel/types': 7.18.13 - entities: 4.3.1 + '@babel/types': 7.19.3 + entities: 4.4.0 dev: true - /@svgr/plugin-jsx/6.3.1_@svgr+core@6.3.1: - resolution: {integrity: sha512-r9+0mYG3hD4nNtUgsTXWGYJomv/bNd7kC16zvsM70I/bGeoCi/3lhTmYqeN6ChWX317OtQCSZZbH4wq9WwoXbw==} + /@svgr/plugin-jsx/6.4.0_@svgr+core@6.4.0: + resolution: {integrity: sha512-gu6E7v8qRAtCxbymI1et3G7athogvKvzsJkSWiHVZsuVZbyx5O2b7+DIkKvAGh2RvEzgSvfGf8QD1BaHal2vBw==} engines: {node: '>=10'} peerDependencies: '@svgr/core': ^6.0.0 dependencies: - '@babel/core': 7.18.10 - '@svgr/babel-preset': 6.3.1_@babel+core@7.18.10 - '@svgr/core': 6.3.1 - '@svgr/hast-util-to-babel-ast': 6.3.1 + '@babel/core': 7.19.3 + '@svgr/babel-preset': 6.4.0_@babel+core@7.19.3 + '@svgr/core': 6.4.0_@babel+core@7.19.3 + '@svgr/hast-util-to-babel-ast': 6.4.0 svg-parser: 2.0.4 transitivePeerDependencies: - supports-color dev: true - /@svgr/plugin-svgo/6.3.1_@svgr+core@6.3.1: + /@svgr/plugin-svgo/6.3.1_@svgr+core@6.4.0: resolution: {integrity: sha512-yJIjTDKPYqzFVjmsbH5EdIwEsmKxjxdXSGJVLeUgwZOZPAkNQmD1v7LDbOdOKbR44FG8465Du+zWPdbYGnbMbw==} engines: {node: '>=10'} peerDependencies: '@svgr/core': ^6.0.0 dependencies: - '@svgr/core': 6.3.1 + '@svgr/core': 6.4.0_@babel+core@7.19.3 cosmiconfig: 7.0.1 deepmerge: 4.2.2 svgo: 2.8.0 dev: true - /@tanstack/query-core/4.2.3: - resolution: {integrity: sha512-zdt5lYWs1dZaA3IxJbCgtAfHZJScRZONpiLL7YkeOkrme5MfjQqTpjq7LYbzpyuwPOh2Jx68le0PLl57JFv5hQ==} + /@tanstack/query-core/4.10.1: + resolution: {integrity: sha512-UZRYzjgQSfYhQ+cJX0CspAbzutf8p93gR1xFjQuH3OYcb/7t3WnHkdb/qC9mbqrfWXN/JAbBTJlTU/XQHc5HbA==} dev: false - /@tanstack/react-query/4.2.3_jk6ntyzimkrv4hwdmdgaaf5yaa: - resolution: {integrity: sha512-JLaMOxoJTkiAu7QpevRCt2uI/0vd3E8K/rSlCuRgWlcW5DeJDFpDS5kfzmLO5MOcD97fgsJRrDbxDORxR1FdJA==} + /@tanstack/react-query/4.10.1_jk6ntyzimkrv4hwdmdgaaf5yaa: + resolution: {integrity: sha512-6GaLYAsAu/4aX6HR4krpOej9qbKWXe0X0eccikpv5hAw4CoAAPG29Pydql1nTl9cYF2zd21unVm4yApklFY0AA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -2664,10 +2590,9 @@ packages: react-native: optional: true dependencies: - '@tanstack/query-core': 4.2.3 - '@types/use-sync-external-store': 0.0.3 + '@tanstack/query-core': 4.10.1 react: 18.0.0 - react-native: 0.69.4_k6xwmnqmgysg6weibx66ue6pyi + react-native: 0.69.4_react@18.0.0 use-sync-external-store: 1.2.0_react@18.0.0 dev: false @@ -2679,7 +2604,7 @@ packages: /@types/graceful-fs/4.1.5: resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} dependencies: - '@types/node': 18.6.4 + '@types/node': 18.8.2 /@types/hammerjs/2.0.41: resolution: {integrity: sha512-ewXv/ceBaJprikMcxCmWU1FKyMAQ2X7a9Gtmzw8fcg2kIePI1crERDM818W+XYrxqdBBOdlf2rm137bU+BltCA==} @@ -2706,8 +2631,8 @@ packages: resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} dev: true - /@types/node/18.6.4: - resolution: {integrity: sha512-I4BD3L+6AWiUobfxZ49DlU43gtI+FTHSv9pE2Zekg6KjMpre4ByusaljW3vYSLJrvQ1ck1hUaeVu8HVlY3vzHg==} + /@types/node/18.8.2: + resolution: {integrity: sha512-cRMwIgdDN43GO4xMWAfJAecYn8wV4JbsOGHNfNUIDiuYkUYAR5ec4Rj7IO2SAhFPEfpPtLtUTbbny/TCT7aDwA==} /@types/parse-json/4.0.0: resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} @@ -2721,28 +2646,24 @@ packages: resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==} dev: false - /@types/react-native/0.69.5: - resolution: {integrity: sha512-mSUCuGUsW2kJlZiu4GmdYVDKZX/52iyC9rm6dxAmflJj1b7kSO/CMSDy5WbcfS8QerxTqbYGTrIwHD0GnXHzbQ==} + /@types/react-native/0.69.13: + resolution: {integrity: sha512-jEKIkqKjmYI7NeRssLrn/zRtFeI6S1FNe5p45OKbBxrQArXpF2lJelztFTEZKIv1PSfYKcAk5x6+1sdZFEFAkA==} dependencies: - '@types/react': 18.0.15 + '@types/react': 18.0.21 dev: true - /@types/react/18.0.15: - resolution: {integrity: sha512-iz3BtLuIYH1uWdsv6wXYdhozhqj20oD4/Hk2DNXIn1kFsmp9x8d9QB6FnPhfkbhd2PgEONt9Q1x/ebkwjfFLow==} + /@types/react/18.0.21: + resolution: {integrity: sha512-7QUCOxvFgnD5Jk8ZKlUAhVcRj7GuJRjnjjiY/IUBWKgOlnvDvTMLD4RTF7NPyVmbRhNrbomZiOepg7M/2Kj1mA==} dependencies: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.2 - csstype: 3.1.0 + csstype: 3.1.1 dev: true /@types/scheduler/0.16.2: resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==} dev: true - /@types/use-sync-external-store/0.0.3: - resolution: {integrity: sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==} - dev: false - /@types/yargs-parser/21.0.0: resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} @@ -2756,8 +2677,8 @@ packages: dependencies: '@types/yargs-parser': 21.0.0 - /@typescript-eslint/eslint-plugin/5.33.1_vsoshirnpb7xw6mr7xomgfas2i: - resolution: {integrity: sha512-S1iZIxrTvKkU3+m63YUOxYPKaP+yWDQrdhxTglVDVEVBf+aCSw85+BmJnyUaQQsk5TXFG/LpBu9fa+LrAQ91fQ==} + /@typescript-eslint/eslint-plugin/5.39.0_xyciw6oqjoiiono4dhv3uhn5my: + resolution: {integrity: sha512-xVfKOkBm5iWMNGKQ2fwX5GVgBuHmZBO1tCRwXmY5oAIsPscfwm2UADDuNB8ZVYCtpQvJK4xpjrK7jEhcJ0zY9A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -2767,24 +2688,23 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/parser': 5.33.1_4rv7y5c6xz3vfxwhbrcxxi73bq - '@typescript-eslint/scope-manager': 5.33.1 - '@typescript-eslint/type-utils': 5.33.1_4rv7y5c6xz3vfxwhbrcxxi73bq - '@typescript-eslint/utils': 5.33.1_4rv7y5c6xz3vfxwhbrcxxi73bq + '@typescript-eslint/parser': 5.39.0_ypn2ylkkyfa5i233caldtndbqa + '@typescript-eslint/scope-manager': 5.39.0 + '@typescript-eslint/type-utils': 5.39.0_ypn2ylkkyfa5i233caldtndbqa + '@typescript-eslint/utils': 5.39.0_ypn2ylkkyfa5i233caldtndbqa debug: 4.3.4 - eslint: 8.22.0 - functional-red-black-tree: 1.0.1 + eslint: 8.24.0 ignore: 5.2.0 regexpp: 3.2.0 - semver: 7.3.7 - tsutils: 3.21.0_typescript@4.7.4 - typescript: 4.7.4 + semver: 7.3.8 + tsutils: 3.21.0_typescript@4.8.4 + typescript: 4.8.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser/5.33.1_4rv7y5c6xz3vfxwhbrcxxi73bq: - resolution: {integrity: sha512-IgLLtW7FOzoDlmaMoXdxG8HOCByTBXrB1V2ZQYSEV1ggMmJfAkMWTwUjjzagS6OkfpySyhKFkBw7A9jYmcHpZA==} + /@typescript-eslint/parser/5.39.0_ypn2ylkkyfa5i233caldtndbqa: + resolution: {integrity: sha512-PhxLjrZnHShe431sBAGHaNe6BDdxAASDySgsBCGxcBecVCi8NQWxQZMcizNA4g0pN51bBAn/FUfkWG3SDVcGlA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -2793,26 +2713,26 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.33.1 - '@typescript-eslint/types': 5.33.1 - '@typescript-eslint/typescript-estree': 5.33.1_typescript@4.7.4 + '@typescript-eslint/scope-manager': 5.39.0 + '@typescript-eslint/types': 5.39.0 + '@typescript-eslint/typescript-estree': 5.39.0_typescript@4.8.4 debug: 4.3.4 - eslint: 8.22.0 - typescript: 4.7.4 + eslint: 8.24.0 + typescript: 4.8.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager/5.33.1: - resolution: {integrity: sha512-8ibcZSqy4c5m69QpzJn8XQq9NnqAToC8OdH/W6IXPXv83vRyEDPYLdjAlUx8h/rbusq6MkW4YdQzURGOqsn3CA==} + /@typescript-eslint/scope-manager/5.39.0: + resolution: {integrity: sha512-/I13vAqmG3dyqMVSZPjsbuNQlYS082Y7OMkwhCfLXYsmlI0ca4nkL7wJ/4gjX70LD4P8Hnw1JywUVVAwepURBw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.33.1 - '@typescript-eslint/visitor-keys': 5.33.1 + '@typescript-eslint/types': 5.39.0 + '@typescript-eslint/visitor-keys': 5.39.0 dev: true - /@typescript-eslint/type-utils/5.33.1_4rv7y5c6xz3vfxwhbrcxxi73bq: - resolution: {integrity: sha512-X3pGsJsD8OiqhNa5fim41YtlnyiWMF/eKsEZGsHID2HcDqeSC5yr/uLOeph8rNF2/utwuI0IQoAK3fpoxcLl2g==} + /@typescript-eslint/type-utils/5.39.0_ypn2ylkkyfa5i233caldtndbqa: + resolution: {integrity: sha512-KJHJkOothljQWzR3t/GunL0TPKY+fGJtnpl+pX+sJ0YiKTz3q2Zr87SGTmFqsCMFrLt5E0+o+S6eQY0FAXj9uA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -2821,22 +2741,23 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/utils': 5.33.1_4rv7y5c6xz3vfxwhbrcxxi73bq + '@typescript-eslint/typescript-estree': 5.39.0_typescript@4.8.4 + '@typescript-eslint/utils': 5.39.0_ypn2ylkkyfa5i233caldtndbqa debug: 4.3.4 - eslint: 8.22.0 - tsutils: 3.21.0_typescript@4.7.4 - typescript: 4.7.4 + eslint: 8.24.0 + tsutils: 3.21.0_typescript@4.8.4 + typescript: 4.8.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types/5.33.1: - resolution: {integrity: sha512-7K6MoQPQh6WVEkMrMW5QOA5FO+BOwzHSNd0j3+BlBwd6vtzfZceJ8xJ7Um2XDi/O3umS8/qDX6jdy2i7CijkwQ==} + /@typescript-eslint/types/5.39.0: + resolution: {integrity: sha512-gQMZrnfEBFXK38hYqt8Lkwt8f4U6yq+2H5VDSgP/qiTzC8Nw8JO3OuSUOQ2qW37S/dlwdkHDntkZM6SQhKyPhw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/typescript-estree/5.33.1_typescript@4.7.4: - resolution: {integrity: sha512-JOAzJ4pJ+tHzA2pgsWQi4804XisPHOtbvwUyqsuuq8+y5B5GMZs7lI1xDWs6V2d7gE/Ez5bTGojSK12+IIPtXA==} + /@typescript-eslint/typescript-estree/5.39.0_typescript@4.8.4: + resolution: {integrity: sha512-qLFQP0f398sdnogJoLtd43pUgB18Q50QSA+BTE5h3sUxySzbWDpTSdgt4UyxNSozY/oDK2ta6HVAzvGgq8JYnA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -2844,41 +2765,41 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.33.1 - '@typescript-eslint/visitor-keys': 5.33.1 + '@typescript-eslint/types': 5.39.0 + '@typescript-eslint/visitor-keys': 5.39.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.3.7 - tsutils: 3.21.0_typescript@4.7.4 - typescript: 4.7.4 + semver: 7.3.8 + tsutils: 3.21.0_typescript@4.8.4 + typescript: 4.8.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils/5.33.1_4rv7y5c6xz3vfxwhbrcxxi73bq: - resolution: {integrity: sha512-uphZjkMaZ4fE8CR4dU7BquOV6u0doeQAr8n6cQenl/poMaIyJtBu8eys5uk6u5HiDH01Mj5lzbJ5SfeDz7oqMQ==} + /@typescript-eslint/utils/5.39.0_ypn2ylkkyfa5i233caldtndbqa: + resolution: {integrity: sha512-+DnY5jkpOpgj+EBtYPyHRjXampJfC0yUZZzfzLuUWVZvCuKqSdJVC8UhdWipIw7VKNTfwfAPiOWzYkAwuIhiAg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: '@types/json-schema': 7.0.11 - '@typescript-eslint/scope-manager': 5.33.1 - '@typescript-eslint/types': 5.33.1 - '@typescript-eslint/typescript-estree': 5.33.1_typescript@4.7.4 - eslint: 8.22.0 + '@typescript-eslint/scope-manager': 5.39.0 + '@typescript-eslint/types': 5.39.0 + '@typescript-eslint/typescript-estree': 5.39.0_typescript@4.8.4 + eslint: 8.24.0 eslint-scope: 5.1.1 - eslint-utils: 3.0.0_eslint@8.22.0 + eslint-utils: 3.0.0_eslint@8.24.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/visitor-keys/5.33.1: - resolution: {integrity: sha512-nwIxOK8Z2MPWltLKMLOEZwmfBZReqUdbEoHQXeCpa+sRVARe5twpJGHCB4dk9903Yaf0nMAlGbQfaAH92F60eg==} + /@typescript-eslint/visitor-keys/5.39.0: + resolution: {integrity: sha512-yyE3RPwOG+XJBLrhvsxAidUgybJVQ/hG8BhiJo0k8JSAYfk/CshVcxf0HwP4Jt7WZZ6vLmxdo1p6EyN3tzFTkg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.33.1 + '@typescript-eslint/types': 5.39.0 eslint-visitor-keys: 3.3.0 dev: true @@ -2913,10 +2834,6 @@ packages: dependencies: event-target-shim: 5.0.1 - /abs-svg-path/0.1.1: - resolution: {integrity: sha512-d8XPSGjfyzlXC3Xx891DJRyZfqk5JU0BJrDQcsWomFIV1/BIzPW5HDH5iDdWpqWaav0YVIEzT1RHTwWr0FFshA==} - dev: false - /absolute-path/0.0.0: resolution: {integrity: sha512-HQiug4c+/s3WOvEnDRxXVmNtSG5s2gJM9r19BTcqjp7BWcE48PB+Y2G6jE65kqI0LpsQeMZygt/b60Gi4KxGyA==} @@ -3071,8 +2988,8 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.1.4 - es-abstract: 1.20.1 - get-intrinsic: 1.1.2 + es-abstract: 1.20.3 + get-intrinsic: 1.1.3 is-string: 1.0.7 dev: true @@ -3090,7 +3007,7 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.1.4 - es-abstract: 1.20.1 + es-abstract: 1.20.3 es-shim-unscopables: 1.0.0 dev: true @@ -3131,22 +3048,22 @@ packages: engines: {node: '>= 4.5.0'} hasBin: true - /babel-core/7.0.0-bridge.0_@babel+core@7.18.10: + /babel-core/7.0.0-bridge.0_@babel+core@7.19.3: resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 + '@babel/core': 7.19.3 - /babel-plugin-const-enum/1.2.0_@babel+core@7.18.10: + /babel-plugin-const-enum/1.2.0_@babel+core@7.19.3: resolution: {integrity: sha512-o1m/6iyyFnp9MRsK1dHF3bneqyf3AlM2q3A/YbgQr2pCat6B6XJVDv2TXqzfY2RYUi4mak6WAksSBPlyYGx9dg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 - '@babel/plugin-syntax-typescript': 7.18.6_@babel+core@7.18.10 - '@babel/traverse': 7.18.13 + '@babel/core': 7.19.3 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/plugin-syntax-typescript': 7.18.6_@babel+core@7.19.3 + '@babel/traverse': 7.19.3 transitivePeerDependencies: - supports-color dev: true @@ -3154,7 +3071,7 @@ packages: /babel-plugin-dynamic-import-node/2.3.3: resolution: {integrity: sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==} dependencies: - object.assign: 4.1.3 + object.assign: 4.1.4 /babel-plugin-module-resolver/4.1.0: resolution: {integrity: sha512-MlX10UDheRr3lb3P0WcaIdtCSRlxdQsB1sBqL7W0raF070bGl1HQQq5K3T2vf2XAYie+ww+5AKC/WrkjRO2knA==} @@ -3166,36 +3083,36 @@ packages: reselect: 4.1.6 resolve: 1.22.1 - /babel-plugin-polyfill-corejs2/0.3.2_@babel+core@7.18.10: - resolution: {integrity: sha512-LPnodUl3lS0/4wN3Rb+m+UK8s7lj2jcLRrjho4gLw+OJs+I4bvGXshINesY5xx/apM+biTnQ9reDI8yj+0M5+Q==} + /babel-plugin-polyfill-corejs2/0.3.3_@babel+core@7.19.3: + resolution: {integrity: sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.18.8 - '@babel/core': 7.18.10 - '@babel/helper-define-polyfill-provider': 0.3.2_@babel+core@7.18.10 + '@babel/compat-data': 7.19.3 + '@babel/core': 7.19.3 + '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.19.3 semver: 6.3.0 transitivePeerDependencies: - supports-color - /babel-plugin-polyfill-corejs3/0.5.3_@babel+core@7.18.10: - resolution: {integrity: sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw==} + /babel-plugin-polyfill-corejs3/0.6.0_@babel+core@7.19.3: + resolution: {integrity: sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-define-polyfill-provider': 0.3.2_@babel+core@7.18.10 - core-js-compat: 3.24.1 + '@babel/core': 7.19.3 + '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.19.3 + core-js-compat: 3.25.5 transitivePeerDependencies: - supports-color - /babel-plugin-polyfill-regenerator/0.4.0_@babel+core@7.18.10: - resolution: {integrity: sha512-RW1cnryiADFeHmfLS+WW/G431p1PsW5qdRdz0SDRi7TKcUgc7Oh/uXkT7MZ/+tGsT1BkczEAmD5XjUyJ5SWDTw==} + /babel-plugin-polyfill-regenerator/0.4.1_@babel+core@7.19.3: + resolution: {integrity: sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.10 - '@babel/helper-define-polyfill-provider': 0.3.2_@babel+core@7.18.10 + '@babel/core': 7.19.3 + '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.19.3 transitivePeerDependencies: - supports-color @@ -3206,52 +3123,52 @@ packages: /babel-plugin-syntax-trailing-function-commas/7.0.0-beta.0: resolution: {integrity: sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==} - /babel-preset-expo/9.2.0_@babel+core@7.18.10: + /babel-preset-expo/9.2.0_@babel+core@7.19.3: resolution: {integrity: sha512-aM2htiNx0H49H+MWCp9+cKVSdcdNSn0tbE5Dln/GO1xna4ZlnA30clbfClcYJFUcZtW90IsYeZwQ/hj8zyWhNA==} dependencies: - '@babel/plugin-proposal-decorators': 7.18.10_@babel+core@7.18.10 - '@babel/plugin-transform-react-jsx': 7.18.10_@babel+core@7.18.10 - '@babel/preset-env': 7.18.10_@babel+core@7.18.10 + '@babel/plugin-proposal-decorators': 7.19.3_@babel+core@7.19.3 + '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.19.3 + '@babel/preset-env': 7.19.3_@babel+core@7.19.3 babel-plugin-module-resolver: 4.1.0 babel-plugin-react-native-web: 0.18.9 - metro-react-native-babel-preset: 0.70.3_@babel+core@7.18.10 + metro-react-native-babel-preset: 0.70.3 transitivePeerDependencies: - '@babel/core' - supports-color dev: false - /babel-preset-fbjs/3.4.0_@babel+core@7.18.10: + /babel-preset-fbjs/3.4.0_@babel+core@7.19.3: resolution: {integrity: sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.18.10 - '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.18.10 - '@babel/plugin-proposal-object-rest-spread': 7.18.9_@babel+core@7.18.10 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.18.10 - '@babel/plugin-syntax-flow': 7.18.6_@babel+core@7.18.10 - '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.18.10 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.18.10 - '@babel/plugin-transform-arrow-functions': 7.18.6_@babel+core@7.18.10 - '@babel/plugin-transform-block-scoped-functions': 7.18.6_@babel+core@7.18.10 - '@babel/plugin-transform-block-scoping': 7.18.9_@babel+core@7.18.10 - '@babel/plugin-transform-classes': 7.18.9_@babel+core@7.18.10 - '@babel/plugin-transform-computed-properties': 7.18.9_@babel+core@7.18.10 - '@babel/plugin-transform-destructuring': 7.18.9_@babel+core@7.18.10 - '@babel/plugin-transform-flow-strip-types': 7.18.9_@babel+core@7.18.10 - '@babel/plugin-transform-for-of': 7.18.8_@babel+core@7.18.10 - '@babel/plugin-transform-function-name': 7.18.9_@babel+core@7.18.10 - '@babel/plugin-transform-literals': 7.18.9_@babel+core@7.18.10 - '@babel/plugin-transform-member-expression-literals': 7.18.6_@babel+core@7.18.10 - '@babel/plugin-transform-modules-commonjs': 7.18.6_@babel+core@7.18.10 - '@babel/plugin-transform-object-super': 7.18.6_@babel+core@7.18.10 - '@babel/plugin-transform-parameters': 7.18.8_@babel+core@7.18.10 - '@babel/plugin-transform-property-literals': 7.18.6_@babel+core@7.18.10 - '@babel/plugin-transform-react-display-name': 7.18.6_@babel+core@7.18.10 - '@babel/plugin-transform-react-jsx': 7.18.10_@babel+core@7.18.10 - '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.18.10 - '@babel/plugin-transform-spread': 7.18.9_@babel+core@7.18.10 - '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.18.10 + '@babel/core': 7.19.3 + '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-proposal-object-rest-spread': 7.18.9_@babel+core@7.19.3 + '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.19.3 + '@babel/plugin-syntax-flow': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.19.3 + '@babel/plugin-transform-arrow-functions': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-transform-block-scoped-functions': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-transform-block-scoping': 7.18.9_@babel+core@7.19.3 + '@babel/plugin-transform-classes': 7.19.0_@babel+core@7.19.3 + '@babel/plugin-transform-computed-properties': 7.18.9_@babel+core@7.19.3 + '@babel/plugin-transform-destructuring': 7.18.13_@babel+core@7.19.3 + '@babel/plugin-transform-flow-strip-types': 7.19.0_@babel+core@7.19.3 + '@babel/plugin-transform-for-of': 7.18.8_@babel+core@7.19.3 + '@babel/plugin-transform-function-name': 7.18.9_@babel+core@7.19.3 + '@babel/plugin-transform-literals': 7.18.9_@babel+core@7.19.3 + '@babel/plugin-transform-member-expression-literals': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-transform-modules-commonjs': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-transform-object-super': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-transform-parameters': 7.18.8_@babel+core@7.19.3 + '@babel/plugin-transform-property-literals': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-transform-react-display-name': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.19.3 + '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-transform-spread': 7.19.0_@babel+core@7.19.3 + '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.19.3 babel-plugin-syntax-trailing-function-commas: 7.0.0-beta.0 transitivePeerDependencies: - supports-color @@ -3372,15 +3289,15 @@ packages: dependencies: fill-range: 7.0.1 - /browserslist/4.21.3: - resolution: {integrity: sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==} + /browserslist/4.21.4: + resolution: {integrity: sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001374 - electron-to-chromium: 1.4.211 + caniuse-lite: 1.0.30001416 + electron-to-chromium: 1.4.274 node-releases: 2.0.6 - update-browserslist-db: 1.0.5_browserslist@4.21.3 + update-browserslist-db: 1.0.10_browserslist@4.21.4 /bser/2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} @@ -3473,7 +3390,7 @@ packages: resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: function-bind: 1.1.1 - get-intrinsic: 1.1.2 + get-intrinsic: 1.1.3 /caller-callsite/2.0.0: resolution: {integrity: sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==} @@ -3509,8 +3426,8 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - /caniuse-lite/1.0.30001374: - resolution: {integrity: sha512-mWvzatRx3w+j5wx/mpFN5v5twlPrabG8NqX2c6e45LCpymdoGqNvRkRutFUqpRTXKFQFNQJasvK0YT7suW6/Hw==} + /caniuse-lite/1.0.30001416: + resolution: {integrity: sha512-06wzzdAkCPZO+Qm4e/eNghZBDfVNDsCgw33T27OwBH9unE9S478OYw//Q2L7Npf/zBzs7rjZOszIFQkwQKAEqA==} /chalk/2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} @@ -3554,8 +3471,8 @@ packages: /ci-info/2.0.0: resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} - /ci-info/3.3.2: - resolution: {integrity: sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg==} + /ci-info/3.4.0: + resolution: {integrity: sha512-t5QdPT5jq3o262DOQ8zA6E1tlH2upmUc4Hlvrbx1pGYJuiiHl7O7rvVNI+l8HTVhd/q3Qc9vqimkNk5yiXsAug==} /class-utils/0.3.6: resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==} @@ -3566,7 +3483,7 @@ packages: isobject: 3.0.1 static-extend: 0.1.2 - /class-variance-authority/0.2.3_typescript@4.7.4: + /class-variance-authority/0.2.3_typescript@4.8.4: resolution: {integrity: sha512-q3VGDidOOFp5yqNpUljA8L6N78gdOPhP5oeFJPaGRnCAPRmyAw65qo+Kw2WVfKq9uiR1de7HzlcvTN871Gks/g==} peerDependencies: typescript: '>= 4.5.5 < 5' @@ -3574,7 +3491,7 @@ packages: typescript: optional: true dependencies: - typescript: 4.7.4 + typescript: 4.8.4 dev: false /clean-stack/2.2.0: @@ -3757,18 +3674,10 @@ packages: resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==} engines: {node: '>=0.10.0'} - /core-js-compat/3.24.1: - resolution: {integrity: sha512-XhdNAGeRnTpp8xbD+sR/HFDK9CbeeeqXT6TuofXh3urqEevzkWmLRgrVoykodsw8okqo2pu1BOmuCKrHx63zdw==} + /core-js-compat/3.25.5: + resolution: {integrity: sha512-ovcyhs2DEBUIE0MGEKHP4olCUW/XYte3Vroyxuh38rD1wAO4dHohsovUC4eAOuzFxE6b+RXvBU3UZ9o0YhUTkA==} dependencies: - browserslist: 4.21.3 - semver: 7.0.0 - - /core-js-compat/3.25.0: - resolution: {integrity: sha512-extKQM0g8/3GjFx9US12FAgx8KJawB7RCQ5y8ipYLbmfzEzmFRWdDjIlxDx82g7ygcNG85qMVUSRyABouELdow==} - dependencies: - browserslist: 4.21.3 - semver: 7.0.0 - dev: false + browserslist: 4.21.4 /core-util-is/1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} @@ -3877,21 +3786,21 @@ packages: css-tree: 1.1.3 dev: true - /csstype/3.1.0: - resolution: {integrity: sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==} + /csstype/3.1.1: + resolution: {integrity: sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==} dev: true /dag-map/1.0.2: resolution: {integrity: sha512-+LSAiGFwQ9dRnRdOeaj7g47ZFJcOUPukAP8J3A3fuZ1g9Y44BG+P1sgApjLXTQPOzC4+7S9Wr8kXsfpINM4jpw==} dev: false - /date-fns/2.29.2: - resolution: {integrity: sha512-0VNbwmWJDS/G3ySwFSJA3ayhbURMTJLtwM2DTxf9CWondCnh6DTNlO9JgRSq6ibf4eD0lfMJNBxUdEAHHix+bA==} + /date-fns/2.29.3: + resolution: {integrity: sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==} engines: {node: '>=0.11'} dev: false - /dayjs/1.11.4: - resolution: {integrity: sha512-Zj/lPM5hOvQ1Bf7uAvewDaUcsJoI6JmNqmHhHl3nyumwe0XHwt8sWdOVAPACJzCebL8gQCi+K49w7iKWnGwX9g==} + /dayjs/1.11.5: + resolution: {integrity: sha512-CAdX5Q3YW3Gclyo5Vpqkgpj8fSdLQcRuzfX6mC6Phy0nfJ0eGYOeS7m4mt2plDWLAtA4TqTakvbboHvUxfe4iA==} /debug/2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} @@ -4089,7 +3998,7 @@ packages: dependencies: domelementtype: 2.3.0 domhandler: 5.0.3 - entities: 4.3.1 + entities: 4.4.0 /domelementtype/2.3.0: resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} @@ -4125,8 +4034,8 @@ packages: /ee-first/1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - /electron-to-chromium/1.4.211: - resolution: {integrity: sha512-BZSbMpyFQU0KBJ1JG26XGeFI3i4op+qOYGxftmZXFZoHkhLgsSv4DHDJfl8ogII3hIuzGt51PaZ195OVu0yJ9A==} + /electron-to-chromium/1.4.274: + resolution: {integrity: sha512-Fgn7JZQzq85I81FpKUNxVLAzoghy8JZJ4NIue+YfUYBbu1AkpgzFvNwzF/ZNZH9ElkmJD0TSWu1F2gTpw/zZlg==} /emoji-regex/8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -4152,8 +4061,8 @@ packages: resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} dev: true - /entities/4.3.1: - resolution: {integrity: sha512-o4q/dYJlmyjP2zfnaWDUC6A3BQFmVTX+tZPezK7k0GLSU9QYCauscf5Y+qcEPzKL+EixVouYDgLQK5H9GrLpkg==} + /entities/4.4.0: + resolution: {integrity: sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==} engines: {node: '>=0.12'} /env-editor/0.4.2: @@ -4187,21 +4096,21 @@ packages: accepts: 1.3.8 escape-html: 1.0.3 - /es-abstract/1.20.1: - resolution: {integrity: sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==} + /es-abstract/1.20.3: + resolution: {integrity: sha512-AyrnaKVpMzljIdwjzrj+LxGmj8ik2LckwXacHqrJJ/jxz6dDDBcZ7I7nlHM0FvEW8MfbWJwOd+yT2XzYW49Frw==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 es-to-primitive: 1.2.1 function-bind: 1.1.1 function.prototype.name: 1.1.5 - get-intrinsic: 1.1.2 + get-intrinsic: 1.1.3 get-symbol-description: 1.0.0 has: 1.0.3 has-property-descriptors: 1.0.0 has-symbols: 1.0.3 internal-slot: 1.0.3 - is-callable: 1.2.4 + is-callable: 1.2.7 is-negative-zero: 2.0.2 is-regex: 1.1.4 is-shared-array-buffer: 1.0.2 @@ -4209,8 +4118,9 @@ packages: is-weakref: 1.0.2 object-inspect: 1.12.2 object-keys: 1.1.1 - object.assign: 4.1.3 + object.assign: 4.1.4 regexp.prototype.flags: 1.4.3 + safe-regex-test: 1.0.0 string.prototype.trimend: 1.0.5 string.prototype.trimstart: 1.0.5 unbox-primitive: 1.0.2 @@ -4226,7 +4136,7 @@ packages: resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} engines: {node: '>= 0.4'} dependencies: - is-callable: 1.2.4 + is-callable: 1.2.7 is-date-object: 1.0.5 is-symbol: 1.0.4 dev: true @@ -4246,42 +4156,42 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - /eslint-config-prettier/8.5.0_eslint@8.22.0: + /eslint-config-prettier/8.5.0_eslint@8.24.0: resolution: {integrity: sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.22.0 + eslint: 8.24.0 dev: true - /eslint-plugin-react-hooks/4.6.0_eslint@8.22.0: + /eslint-plugin-react-hooks/4.6.0_eslint@8.24.0: resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 dependencies: - eslint: 8.22.0 + eslint: 8.24.0 dev: true /eslint-plugin-react-native-globals/0.1.2: resolution: {integrity: sha512-9aEPf1JEpiTjcFAmmyw8eiIXmcNZOqaZyHO77wgm0/dWfT/oxC1SrIq8ET38pMxHYrcB6Uew+TzUVsBeczF88g==} dev: true - /eslint-plugin-react-native/4.0.0_eslint@8.22.0: + /eslint-plugin-react-native/4.0.0_eslint@8.24.0: resolution: {integrity: sha512-kMmdxrSY7A1WgdqaGC+rY/28rh7kBGNBRsk48ovqkQmdg5j4K+DaFmegENDzMrdLkoufKGRNkKX6bgSwQTCAxQ==} peerDependencies: eslint: ^3.17.0 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: - '@babel/traverse': 7.18.11 - eslint: 8.22.0 + '@babel/traverse': 7.19.3 + eslint: 8.24.0 eslint-plugin-react-native-globals: 0.1.2 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-react/7.30.1_eslint@8.22.0: - resolution: {integrity: sha512-NbEvI9jtqO46yJA3wcRF9Mo0lF9T/jhdHqhCHXiXtD+Zcb98812wvokjWpU7Q4QH5edo6dmqrukxVvWWXHlsUg==} + /eslint-plugin-react/7.31.8_eslint@8.24.0: + resolution: {integrity: sha512-5lBTZmgQmARLLSYiwI71tiGVTLUuqXantZM6vlSY39OaDSV0M7+32K5DnLkmFrwTe+Ksz0ffuLUC91RUviVZfw==} engines: {node: '>=4'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 @@ -4289,7 +4199,7 @@ packages: array-includes: 3.1.5 array.prototype.flatmap: 1.3.0 doctrine: 2.1.0 - eslint: 8.22.0 + eslint: 8.24.0 estraverse: 5.3.0 jsx-ast-utils: 3.3.3 minimatch: 3.1.2 @@ -4319,13 +4229,13 @@ packages: estraverse: 5.3.0 dev: true - /eslint-utils/3.0.0_eslint@8.22.0: + /eslint-utils/3.0.0_eslint@8.24.0: resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} peerDependencies: eslint: '>=5' dependencies: - eslint: 8.22.0 + eslint: 8.24.0 eslint-visitor-keys: 2.1.0 dev: true @@ -4339,14 +4249,15 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint/8.22.0: - resolution: {integrity: sha512-ci4t0sz6vSRKdmkOGmprBo6fmI4PrphDFMy5JEq/fNS0gQkJM3rLmrqcp8ipMcdobH3KtUP40KniAE9W19S4wA==} + /eslint/8.24.0: + resolution: {integrity: sha512-dWFaPhGhTAiPcCgm3f6LI2MBWbogMnTJzFBbhXVRQDJPkr9pGZvVjlVfXd+vyDcWPA2Ic9L2AXPIQM0+vk/cSQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint/eslintrc': 1.3.0 - '@humanwhocodes/config-array': 0.10.4 + '@eslint/eslintrc': 1.3.2 + '@humanwhocodes/config-array': 0.10.7 '@humanwhocodes/gitignore-to-minimatch': 1.0.2 + '@humanwhocodes/module-importer': 1.0.1 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 @@ -4354,15 +4265,14 @@ packages: doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.1.1 - eslint-utils: 3.0.0_eslint@8.22.0 + eslint-utils: 3.0.0_eslint@8.24.0 eslint-visitor-keys: 3.3.0 - espree: 9.3.3 + espree: 9.4.0 esquery: 1.4.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 6.0.1 find-up: 5.0.0 - functional-red-black-tree: 1.0.1 glob-parent: 6.0.2 globals: 13.17.0 globby: 11.1.0 @@ -4371,6 +4281,7 @@ packages: import-fresh: 3.3.0 imurmurhash: 0.1.4 is-glob: 4.0.3 + js-sdsl: 4.1.5 js-yaml: 4.1.0 json-stable-stringify-without-jsonify: 1.0.1 levn: 0.4.1 @@ -4382,13 +4293,12 @@ packages: strip-ansi: 6.0.1 strip-json-comments: 3.1.1 text-table: 0.2.0 - v8-compile-cache: 2.3.0 transitivePeerDependencies: - supports-color dev: true - /espree/9.3.3: - resolution: {integrity: sha512-ORs1Rt/uQTqUKjDdGCyrtYxbazf5umATSf/K4qxjmZHORR6HJk+2s/2Pqe+Kk49HHINC/xNIrGfgh8sZcll0ng==} + /espree/9.4.0: + resolution: {integrity: sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: acorn: 8.8.0 @@ -4467,20 +4377,20 @@ packages: transitivePeerDependencies: - supports-color - /expo-application/4.2.2_expo@46.0.10: + /expo-application/4.2.2_expo@46.0.15: resolution: {integrity: sha512-bFEaFRUdV6aK2iBd+HzkHNPYsyj88EAhaQW5leznmO0qQMJxpAQ3eoUXMey1hfDBh1qgkkHgSyCZ9BIgMAGJ1g==} peerDependencies: expo: '*' dependencies: - expo: 46.0.10_@babel+core@7.18.10 + expo: 46.0.15_@babel+core@7.19.3 dev: false - /expo-asset/8.6.1_expo@46.0.10: + /expo-asset/8.6.1_expo@46.0.15: resolution: {integrity: sha512-urbUp1YtwH2J0Qc3inGQJdqTjWKML77SeMNgff+iR9MUE8gDkFqSCDjrBi7i5Oj5DDtq43mmtDg8G8ei6Vchcg==} dependencies: blueimp-md5: 2.19.0 - expo-constants: 13.2.4_expo@46.0.10 - expo-file-system: 14.1.0_expo@46.0.10 + expo-constants: 13.2.4_expo@46.0.15 + expo-file-system: 14.1.0_expo@46.0.15 invariant: 2.2.4 md5-file: 3.2.3 path-browserify: 1.0.1 @@ -4490,62 +4400,62 @@ packages: - supports-color dev: false - /expo-constants/13.2.4_expo@46.0.10: + /expo-constants/13.2.4_expo@46.0.15: resolution: {integrity: sha512-Zobau8EuTk2GgafwkfGnWM6CmSLB7X8qnQXVuXe0nd3v92hfQUmRWGhJwH88uxXj3LrfqctM6PaJ8taG1vxfBw==} peerDependencies: expo: '*' dependencies: '@expo/config': 7.0.1 - expo: 46.0.10_@babel+core@7.18.10 + expo: 46.0.15_@babel+core@7.19.3 uuid: 3.4.0 transitivePeerDependencies: - supports-color dev: false - /expo-error-recovery/3.2.0_expo@46.0.10: + /expo-error-recovery/3.2.0_expo@46.0.15: resolution: {integrity: sha512-XZ630ks5HNxa9oc2Ya1hEn1ez031Cy4VnyxerPC2o9fKNKSrD/64cRqGF9NkGM3X2uf8+PCB9adxVflAIXBf6w==} requiresBuild: true peerDependencies: expo: '*' dependencies: - expo: 46.0.10_@babel+core@7.18.10 + expo: 46.0.15_@babel+core@7.19.3 dev: false optional: true - /expo-file-system/14.1.0_expo@46.0.10: + /expo-file-system/14.1.0_expo@46.0.15: resolution: {integrity: sha512-lJcPGQ8yKXVknVkD5TmcJnR/TpQbEL0JP8hknLejfq3FIqPqI/LBFn31YiP37grxW8lITz1al8pq5T6CSUjAzQ==} peerDependencies: expo: '*' dependencies: '@expo/config-plugins': 5.0.1 - expo: 46.0.10_@babel+core@7.18.10 + expo: 46.0.15_@babel+core@7.19.3 uuid: 3.4.0 transitivePeerDependencies: - supports-color dev: false - /expo-font/10.2.0_expo@46.0.10: - resolution: {integrity: sha512-2V4EcpmhNoppaLn+lPprZVS+3bmV9hxLPKttKh2u8ghjH/oX9bv3u4JVo77SYh0EfrWO4toqVyXn8pXH8GpbIg==} + /expo-font/10.2.1_expo@46.0.15: + resolution: {integrity: sha512-sxy5GrdtY+Ka8Wo5wnrcFFeO6MbYC6Dris5wMLqshvVK6BneJNMUsFvwRfvVgg0TzsmMAc3Rlca2xyZ8ettinw==} peerDependencies: expo: '*' dependencies: - expo: 46.0.10_@babel+core@7.18.10 + expo: 46.0.15_@babel+core@7.19.3 fontfaceobserver: 2.3.0 dev: false - /expo-keep-awake/10.2.0_expo@46.0.10: + /expo-keep-awake/10.2.0_expo@46.0.15: resolution: {integrity: sha512-kIRtO4Hmrvxh4E45IPWG/NiUZsuRe1AQwBT09pq+kx8nm6tUS4B9TeL6+1NFy+qVBLbGKDqoQD5Ez7XYTFtBeQ==} peerDependencies: expo: '*' dependencies: - expo: 46.0.10_@babel+core@7.18.10 + expo: 46.0.15_@babel+core@7.19.3 dev: false - /expo-linking/3.2.2_expo@46.0.10: + /expo-linking/3.2.2_expo@46.0.15: resolution: {integrity: sha512-2OY7WAyZXuc8zdTGm2rLu5ESJaFL2TYmPHsJuDJcfIJFaw+nS5vIVk5DGPlk+zCNC3uoqT02t7a5PZVp2bvqtQ==} dependencies: '@types/qs': 6.9.7 - expo-constants: 13.2.4_expo@46.0.10 + expo-constants: 13.2.4_expo@46.0.15 invariant: 2.2.4 qs: 6.11.0 url-parse: 1.5.10 @@ -4560,26 +4470,26 @@ packages: dependencies: chalk: 4.1.2 commander: 7.2.0 - fast-glob: 3.2.11 + fast-glob: 3.2.12 find-up: 5.0.0 fs-extra: 9.1.0 dev: false - /expo-modules-core/0.11.5: - resolution: {integrity: sha512-KmTHtaL21M1AzKOmu3YM5K8ddCbbr6wgooG4uCb+o+7zZXe+BPP4jAPs5LLez1Et34OQcyjopxUpJ8r43HImvQ==} + /expo-modules-core/0.11.7: + resolution: {integrity: sha512-lTH6MYULX99JK3zN4bhjRD3I9Y1CGx0RAhpZ6gCTO8GQ/DNw4xZRUwburKL9dJeZM5G1xJOcGoBkTfeMjUVe+g==} dependencies: compare-versions: 3.6.0 invariant: 2.2.4 dev: false - /expo-splash-screen/0.16.2_expo@46.0.10: + /expo-splash-screen/0.16.2_expo@46.0.15: resolution: {integrity: sha512-AHSRyGwu58WNt8shW5g/4cQ9e9IzUwNTC/WGWxshHCwgbWIJmHLvK3+D45MTmzGWteOoTI8oV7KSQKBNJSTiyw==} peerDependencies: expo: '*' dependencies: '@expo/configure-splash-screen': 0.6.0 '@expo/prebuild-config': 5.0.3 - expo: 46.0.10_@babel+core@7.18.10 + expo: 46.0.15_@babel+core@7.19.3 transitivePeerDependencies: - encoding - expo-modules-autolinking @@ -4590,23 +4500,23 @@ packages: resolution: {integrity: sha512-vh98g8qMIjig/2XTBsoAWS6Vo2dIIwDWjB3/GiuZ9Lazpxc9GO/APfJ4dar7MibzIDUKIrjotrcL6rLdPH13Ew==} dev: false - /expo/46.0.10_@babel+core@7.18.10: - resolution: {integrity: sha512-MUDLTnBYOOabzFo2HATTMXiAYoQ4n1IWBM3HlOmsQVoMBKOs6FcZDqte/lwK80KkhHIpr1Q37JD8Dq1Fk4b9eA==} + /expo/46.0.15_@babel+core@7.19.3: + resolution: {integrity: sha512-/uZLQgXKni/rLoJPUESte901Z8owZH4weItLGhac2T37zZEUHIqcWdI/1+BaN8Racz9x54PzgbIMh09QMgv9mQ==} hasBin: true dependencies: - '@babel/runtime': 7.18.9 - '@expo/cli': 0.2.11_ldu6zrsp2qyz4kn3c44jkm42fu + '@babel/runtime': 7.19.0 + '@expo/cli': 0.3.1_ldu6zrsp2qyz4kn3c44jkm42fu '@expo/vector-icons': 13.0.0 - babel-preset-expo: 9.2.0_@babel+core@7.18.10 + babel-preset-expo: 9.2.0_@babel+core@7.19.3 cross-spawn: 6.0.5 - expo-application: 4.2.2_expo@46.0.10 - expo-asset: 8.6.1_expo@46.0.10 - expo-constants: 13.2.4_expo@46.0.10 - expo-file-system: 14.1.0_expo@46.0.10 - expo-font: 10.2.0_expo@46.0.10 - expo-keep-awake: 10.2.0_expo@46.0.10 + expo-application: 4.2.2_expo@46.0.15 + expo-asset: 8.6.1_expo@46.0.15 + expo-constants: 13.2.4_expo@46.0.15 + expo-file-system: 14.1.0_expo@46.0.15 + expo-font: 10.2.1_expo@46.0.15 + expo-keep-awake: 10.2.0_expo@46.0.15 expo-modules-autolinking: 0.10.3 - expo-modules-core: 0.11.5 + expo-modules-core: 0.11.7 fbemitter: 3.0.0 getenv: 1.0.0 invariant: 2.2.4 @@ -4615,7 +4525,7 @@ packages: pretty-format: 26.6.2 uuid: 3.4.0 optionalDependencies: - expo-error-recovery: 3.2.0_expo@46.0.10 + expo-error-recovery: 3.2.0_expo@46.0.15 transitivePeerDependencies: - '@babel/core' - bluebird @@ -4654,8 +4564,8 @@ packages: /fast-deep-equal/3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - /fast-glob/3.2.11: - resolution: {integrity: sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==} + /fast-glob/3.2.12: + resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} engines: {node: '>=8.6.0'} dependencies: '@nodelib/fs.stat': 2.0.5 @@ -4677,8 +4587,8 @@ packages: dependencies: reusify: 1.0.4 - /fb-watchman/2.0.1: - resolution: {integrity: sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==} + /fb-watchman/2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} dependencies: bser: 2.1.1 @@ -4926,14 +4836,10 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.1.4 - es-abstract: 1.20.1 + es-abstract: 1.20.3 functions-have-names: 1.2.3 dev: true - /functional-red-black-tree/1.0.1: - resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} - dev: true - /functions-have-names/1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} dev: true @@ -4946,8 +4852,8 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - /get-intrinsic/1.1.2: - resolution: {integrity: sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==} + /get-intrinsic/1.1.3: + resolution: {integrity: sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==} dependencies: function-bind: 1.1.1 has: 1.0.3 @@ -4969,7 +4875,7 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - get-intrinsic: 1.1.2 + get-intrinsic: 1.1.3 dev: true /get-value/2.0.6: @@ -5042,7 +4948,7 @@ packages: dependencies: array-union: 2.1.0 dir-glob: 3.0.1 - fast-glob: 3.2.11 + fast-glob: 3.2.12 ignore: 5.2.0 merge2: 1.4.1 slash: 3.0.0 @@ -5084,7 +4990,7 @@ packages: /has-property-descriptors/1.0.0: resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} dependencies: - get-intrinsic: 1.1.2 + get-intrinsic: 1.1.3 /has-symbols/1.0.3: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} @@ -5265,7 +5171,7 @@ packages: resolution: {integrity: sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.1.2 + get-intrinsic: 1.1.3 has: 1.0.3 side-channel: 1.0.4 dev: true @@ -5335,8 +5241,8 @@ packages: /is-buffer/1.1.6: resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} - /is-callable/1.2.4: - resolution: {integrity: sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==} + /is-callable/1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} dev: true @@ -5584,9 +5490,9 @@ packages: dependencies: '@jest/types': 27.5.1 '@types/graceful-fs': 4.1.5 - '@types/node': 18.6.4 + '@types/node': 18.8.2 anymatch: 3.1.2 - fb-watchman: 2.0.1 + fb-watchman: 2.0.2 graceful-fs: 4.2.10 jest-regex-util: 27.5.1 jest-serializer: 27.5.1 @@ -5605,7 +5511,7 @@ packages: resolution: {integrity: sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@types/node': 18.6.4 + '@types/node': 18.8.2 graceful-fs: 4.2.10 /jest-util/27.5.1: @@ -5613,9 +5519,9 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@jest/types': 27.5.1 - '@types/node': 18.6.4 + '@types/node': 18.8.2 chalk: 4.1.2 - ci-info: 3.3.2 + ci-info: 3.4.0 graceful-fs: 4.2.10 picomatch: 2.3.1 @@ -5634,7 +5540,7 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.6.4 + '@types/node': 18.8.2 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -5646,8 +5552,8 @@ packages: resolution: {integrity: sha512-dZ6Ra7u1G8c4Letq/B5EzAxj4tLFHL+cGtdpR+PVm4yzPDj+lCk+AbivWt1eOM+ikzkowtyV7qSqX6qr3t71Ww==} dev: false - /joi/17.6.0: - resolution: {integrity: sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw==} + /joi/17.6.2: + resolution: {integrity: sha512-+gqqdh1xc1wb+Lor0J9toqgeReyDOCqOdG8QSdRcEvwrcRiFQZneUCGKjFjuyBWUb3uaFOgY56yMaZ5FIc+H4w==} dependencies: '@hapi/hoek': 9.3.0 '@hapi/topo': 5.1.0 @@ -5659,6 +5565,10 @@ packages: resolution: {integrity: sha512-bF7vcQxbODoGK1imE2P9GS9aw4zD0Sd+Hni68IMZLj7zRnquH7dXUmMw9hDI5S/Jzt7q+IyTXN0rSg2GI0IKhQ==} dev: false + /js-sdsl/4.1.5: + resolution: {integrity: sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==} + dev: true + /js-tokens/4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -5684,16 +5594,16 @@ packages: peerDependencies: '@babel/preset-env': ^7.1.6 dependencies: - '@babel/core': 7.18.10 - '@babel/parser': 7.18.11 - '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.18.10 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.18.10 - '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.18.10 - '@babel/plugin-transform-modules-commonjs': 7.18.6_@babel+core@7.18.10 - '@babel/preset-flow': 7.18.6_@babel+core@7.18.10 - '@babel/preset-typescript': 7.18.6_@babel+core@7.18.10 - '@babel/register': 7.18.9_@babel+core@7.18.10 - babel-core: 7.0.0-bridge.0_@babel+core@7.18.10 + '@babel/core': 7.19.3 + '@babel/parser': 7.19.3 + '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.19.3 + '@babel/plugin-transform-modules-commonjs': 7.18.6_@babel+core@7.19.3 + '@babel/preset-flow': 7.18.6_@babel+core@7.19.3 + '@babel/preset-typescript': 7.18.6_@babel+core@7.19.3 + '@babel/register': 7.18.9_@babel+core@7.19.3 + babel-core: 7.0.0-bridge.0_@babel+core@7.19.3 chalk: 4.1.2 flow-parser: 0.121.0 graceful-fs: 4.2.10 @@ -5783,7 +5693,7 @@ packages: engines: {node: '>=4.0'} dependencies: array-includes: 3.1.5 - object.assign: 4.1.3 + object.assign: 4.1.4 dev: true /kind-of/3.2.2: @@ -5890,7 +5800,7 @@ packages: hasBin: true dependencies: ansi-fragments: 0.2.1 - dayjs: 1.11.4 + dayjs: 1.11.5 yargs: 15.4.1 /loose-envify/1.4.0: @@ -5912,7 +5822,7 @@ packages: dependencies: invariant: 2.2.4 react: 18.0.0 - react-native: 0.69.4_k6xwmnqmgysg6weibx66ue6pyi + react-native: 0.69.4_react@18.0.0 react-native-safe-modules: 1.0.3_react-native@0.69.4 dev: false @@ -6004,7 +5914,7 @@ packages: /metro-babel-transformer/0.70.3: resolution: {integrity: sha512-bWhZRMn+mIOR/s3BDpFevWScz9sV8FGktVfMlF1eJBLoX24itHDbXvTktKBYi38PWIKcHedh6THSFpJogfuwNA==} dependencies: - '@babel/core': 7.18.10 + '@babel/core': 7.19.3 hermes-parser: 0.6.0 metro-source-map: 0.70.3 nullthrows: 1.1.1 @@ -6058,10 +5968,10 @@ packages: - supports-color - utf-8-validate - /metro-minify-terser/0.72.1: - resolution: {integrity: sha512-1zr49362u7IG9HfutP18/oXxg3FiJHusCBOyDJL3nOkEvNhN6r6sfi0hNvMh5ac9U01qogYC5CfU9Thx57N3Sw==} + /metro-minify-terser/0.72.3: + resolution: {integrity: sha512-FiATtv/NBT6LBSoz2zlQri+KFyI4Z0xV+D17YCntufRWxYjs193HaKrZB/f/Bevq5QtSfIZzS9glWurTgKr/Xg==} dependencies: - terser: 5.15.0 + terser: 5.15.1 dev: true /metro-minify-uglify/0.70.3: @@ -6069,63 +5979,59 @@ packages: dependencies: uglify-es: 3.3.9 - /metro-react-native-babel-preset/0.70.3_@babel+core@7.18.10: + /metro-react-native-babel-preset/0.70.3: resolution: {integrity: sha512-4Nxc1zEiHEu+GTdEMEsHnRgfaBkg8f/Td3+FcQ8NTSvs+xL3LBrQy6N07idWSQZHIdGFf+tTHvRfSIWLD8u8Tg==} - peerDependencies: - '@babel/core': '*' dependencies: - '@babel/core': 7.18.10 - '@babel/plugin-proposal-async-generator-functions': 7.18.10_@babel+core@7.18.10 - '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.18.10 - '@babel/plugin-proposal-export-default-from': 7.18.10_@babel+core@7.18.10 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.18.10 - '@babel/plugin-proposal-object-rest-spread': 7.18.9_@babel+core@7.18.10 - '@babel/plugin-proposal-optional-catch-binding': 7.18.6_@babel+core@7.18.10 - '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.18.10 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.18.10 - '@babel/plugin-syntax-export-default-from': 7.18.6_@babel+core@7.18.10 - '@babel/plugin-syntax-flow': 7.18.6_@babel+core@7.18.10 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.18.10 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.18.10 - '@babel/plugin-transform-arrow-functions': 7.18.6_@babel+core@7.18.10 - '@babel/plugin-transform-async-to-generator': 7.18.6_@babel+core@7.18.10 - '@babel/plugin-transform-block-scoping': 7.18.9_@babel+core@7.18.10 - '@babel/plugin-transform-classes': 7.18.9_@babel+core@7.18.10 - '@babel/plugin-transform-computed-properties': 7.18.9_@babel+core@7.18.10 - '@babel/plugin-transform-destructuring': 7.18.9_@babel+core@7.18.10 - '@babel/plugin-transform-exponentiation-operator': 7.18.6_@babel+core@7.18.10 - '@babel/plugin-transform-flow-strip-types': 7.18.9_@babel+core@7.18.10 - '@babel/plugin-transform-function-name': 7.18.9_@babel+core@7.18.10 - '@babel/plugin-transform-literals': 7.18.9_@babel+core@7.18.10 - '@babel/plugin-transform-modules-commonjs': 7.18.6_@babel+core@7.18.10 - '@babel/plugin-transform-named-capturing-groups-regex': 7.18.6_@babel+core@7.18.10 - '@babel/plugin-transform-parameters': 7.18.8_@babel+core@7.18.10 - '@babel/plugin-transform-react-display-name': 7.18.6_@babel+core@7.18.10 - '@babel/plugin-transform-react-jsx': 7.18.10_@babel+core@7.18.10 - '@babel/plugin-transform-react-jsx-self': 7.18.6_@babel+core@7.18.10 - '@babel/plugin-transform-react-jsx-source': 7.18.6_@babel+core@7.18.10 - '@babel/plugin-transform-runtime': 7.18.10_@babel+core@7.18.10 - '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.18.10 - '@babel/plugin-transform-spread': 7.18.9_@babel+core@7.18.10 - '@babel/plugin-transform-sticky-regex': 7.18.6_@babel+core@7.18.10 - '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.18.10 - '@babel/plugin-transform-typescript': 7.18.10_@babel+core@7.18.10 - '@babel/plugin-transform-unicode-regex': 7.18.6_@babel+core@7.18.10 + '@babel/core': 7.19.3 + '@babel/plugin-proposal-async-generator-functions': 7.19.1_@babel+core@7.19.3 + '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-proposal-export-default-from': 7.18.10_@babel+core@7.19.3 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-proposal-object-rest-spread': 7.18.9_@babel+core@7.19.3 + '@babel/plugin-proposal-optional-catch-binding': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.19.3 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.19.3 + '@babel/plugin-syntax-export-default-from': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-syntax-flow': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.19.3 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.19.3 + '@babel/plugin-transform-arrow-functions': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-transform-async-to-generator': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-transform-block-scoping': 7.18.9_@babel+core@7.19.3 + '@babel/plugin-transform-classes': 7.19.0_@babel+core@7.19.3 + '@babel/plugin-transform-computed-properties': 7.18.9_@babel+core@7.19.3 + '@babel/plugin-transform-destructuring': 7.18.13_@babel+core@7.19.3 + '@babel/plugin-transform-exponentiation-operator': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-transform-flow-strip-types': 7.19.0_@babel+core@7.19.3 + '@babel/plugin-transform-function-name': 7.18.9_@babel+core@7.19.3 + '@babel/plugin-transform-literals': 7.18.9_@babel+core@7.19.3 + '@babel/plugin-transform-modules-commonjs': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-transform-named-capturing-groups-regex': 7.19.1_@babel+core@7.19.3 + '@babel/plugin-transform-parameters': 7.18.8_@babel+core@7.19.3 + '@babel/plugin-transform-react-display-name': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.19.3 + '@babel/plugin-transform-react-jsx-self': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-transform-react-jsx-source': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-transform-runtime': 7.19.1_@babel+core@7.19.3 + '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-transform-spread': 7.19.0_@babel+core@7.19.3 + '@babel/plugin-transform-sticky-regex': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.19.3 + '@babel/plugin-transform-typescript': 7.19.3_@babel+core@7.19.3 + '@babel/plugin-transform-unicode-regex': 7.18.6_@babel+core@7.19.3 '@babel/template': 7.18.10 react-refresh: 0.4.3 transitivePeerDependencies: - supports-color - /metro-react-native-babel-transformer/0.70.3_@babel+core@7.18.10: + /metro-react-native-babel-transformer/0.70.3: resolution: {integrity: sha512-WKBU6S/G50j9cfmFM4k4oRYprd8u3qjleD4so1E2zbTNILg+gYla7ZFGCAvi2G0ZcqS2XuGCR375c2hF6VVvwg==} - peerDependencies: - '@babel/core': '*' dependencies: - '@babel/core': 7.18.10 - babel-preset-fbjs: 3.4.0_@babel+core@7.18.10 + '@babel/core': 7.19.3 + babel-preset-fbjs: 3.4.0_@babel+core@7.19.3 hermes-parser: 0.6.0 metro-babel-transformer: 0.70.3 - metro-react-native-babel-preset: 0.70.3_@babel+core@7.18.10 + metro-react-native-babel-preset: 0.70.3 metro-source-map: 0.70.3 nullthrows: 1.1.1 transitivePeerDependencies: @@ -6139,13 +6045,13 @@ packages: /metro-runtime/0.70.3: resolution: {integrity: sha512-22xU7UdXZacniTIDZgN2EYtmfau2pPyh97Dcs+cWrLcJYgfMKjWBtesnDcUAQy3PHekDYvBdJZkoQUeskYTM+w==} dependencies: - '@babel/runtime': 7.18.9 + '@babel/runtime': 7.19.0 /metro-source-map/0.70.3: resolution: {integrity: sha512-zsYtZGrwRbbGEFHtmMqqeCH9K9aTGNVPsurMOWCUeQA3VGyVGXPGtLMC+CdAM9jLpUyg6jw2xh0esxi+tYH7Uw==} dependencies: - '@babel/traverse': 7.18.11 - '@babel/types': 7.18.10 + '@babel/traverse': 7.19.3 + '@babel/types': 7.19.3 invariant: 2.2.4 metro-symbolicate: 0.70.3 nullthrows: 1.1.1 @@ -6172,10 +6078,10 @@ packages: /metro-transform-plugins/0.70.3: resolution: {integrity: sha512-dQRIJoTkWZN2IVS2KzgS1hs7ZdHDX3fS3esfifPkqFAEwHiLctCf0EsPgIknp0AjMLvmGWfSLJigdRB/dc0ASw==} dependencies: - '@babel/core': 7.18.10 - '@babel/generator': 7.18.10 + '@babel/core': 7.19.3 + '@babel/generator': 7.19.3 '@babel/template': 7.18.10 - '@babel/traverse': 7.18.11 + '@babel/traverse': 7.19.3 nullthrows: 1.1.1 transitivePeerDependencies: - supports-color @@ -6183,11 +6089,11 @@ packages: /metro-transform-worker/0.70.3: resolution: {integrity: sha512-MtVVsnHhhBOp9GRLCdAb2mD1dTCsIzT4+m34KMRdBDCEbDIb90YafT5prpU8qbj5uKd0o2FOQdrJ5iy5zQilHw==} dependencies: - '@babel/core': 7.18.10 - '@babel/generator': 7.18.10 - '@babel/parser': 7.18.11 - '@babel/types': 7.18.10 - babel-preset-fbjs: 3.4.0_@babel+core@7.18.10 + '@babel/core': 7.19.3 + '@babel/generator': 7.19.3 + '@babel/parser': 7.19.3 + '@babel/types': 7.19.3 + babel-preset-fbjs: 3.4.0_@babel+core@7.19.3 metro: 0.70.3 metro-babel-transformer: 0.70.3 metro-cache: 0.70.3 @@ -6207,12 +6113,12 @@ packages: hasBin: true dependencies: '@babel/code-frame': 7.18.6 - '@babel/core': 7.18.10 - '@babel/generator': 7.18.10 - '@babel/parser': 7.18.11 + '@babel/core': 7.19.3 + '@babel/generator': 7.19.3 + '@babel/parser': 7.19.3 '@babel/template': 7.18.10 - '@babel/traverse': 7.18.11 - '@babel/types': 7.18.10 + '@babel/traverse': 7.19.3 + '@babel/types': 7.19.3 absolute-path: 0.0.0 accepts: 1.3.8 async: 3.2.4 @@ -6238,7 +6144,7 @@ packages: metro-hermes-compiler: 0.70.3 metro-inspector-proxy: 0.70.3 metro-minify-uglify: 0.70.3 - metro-react-native-babel-preset: 0.70.3_@babel+core@7.18.10 + metro-react-native-babel-preset: 0.70.3 metro-resolver: 0.70.3 metro-runtime: 0.70.3 metro-source-map: 0.70.3 @@ -6507,12 +6413,6 @@ packages: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} - /normalize-svg-path/1.1.0: - resolution: {integrity: sha512-r9KHKG2UUeB5LoTouwDzBy2VxXlHsiM6fyLQvnJa0S5hrhzqElH/CH7TUGhT1fVvIYBIKf3OpY4YJ4CK+iaqHg==} - dependencies: - svg-arc-to-cubic-bezier: 3.2.0 - dev: false - /npm-package-arg/7.0.0: resolution: {integrity: sha512-xXxr8y5U0kl8dVkz2oK7yZjPBvqM2fwaO5l3Yg13p03v8+E3qQcD0JNhHzjL1vyGgxcKkD0cco+NLR72iuPk3g==} dependencies: @@ -6569,8 +6469,8 @@ packages: dependencies: isobject: 3.0.1 - /object.assign/4.1.3: - resolution: {integrity: sha512-ZFJnX3zltyjcYJL0RoCJuzb+11zWGyaDbjgxZbdV7rFEcHQuYxrZqhow67aA7xpes6LhojyFDaBKAFfogQrikA==} + /object.assign/4.1.4: + resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 @@ -6584,7 +6484,7 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.1.4 - es-abstract: 1.20.1 + es-abstract: 1.20.3 dev: true /object.fromentries/2.0.5: @@ -6593,14 +6493,14 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.1.4 - es-abstract: 1.20.1 + es-abstract: 1.20.3 dev: true /object.hasown/1.1.1: resolution: {integrity: sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A==} dependencies: define-properties: 1.1.4 - es-abstract: 1.20.1 + es-abstract: 1.20.3 dev: true /object.pick/1.3.0: @@ -6615,7 +6515,7 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.1.4 - es-abstract: 1.20.1 + es-abstract: 1.20.3 dev: true /on-finished/2.3.0: @@ -6797,10 +6697,6 @@ packages: pngjs: 3.4.0 dev: false - /parse-svg-path/0.1.2: - resolution: {integrity: sha512-JyPSBnkTJ0AI8GGJLfMXvKq42cj5c006fnLz6fXy6zfoVjJizi8BNTpu8on8ziI1cKy9d9DGNuY17Ce7wuejpQ==} - dev: false - /parseurl/1.3.3: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} engines: {node: '>= 0.8'} @@ -6859,9 +6755,9 @@ packages: react-native: '*' react-native-svg: '*' dependencies: - caniuse-lite: 1.0.30001374 + caniuse-lite: 1.0.30001416 react: 18.0.0 - react-native: 0.69.4_k6xwmnqmgysg6weibx66ue6pyi + react-native: 0.69.4_react@18.0.0 react-native-svg: 13.0.0_jk6ntyzimkrv4hwdmdgaaf5yaa dev: false @@ -6934,29 +6830,29 @@ packages: resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==} engines: {node: '>=0.10.0'} - /postcss-import/14.1.0_postcss@8.4.14: + /postcss-import/14.1.0_postcss@8.4.17: resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==} engines: {node: '>=10.0.0'} peerDependencies: postcss: ^8.0.0 dependencies: - postcss: 8.4.14 + postcss: 8.4.17 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.1 dev: false - /postcss-js/4.0.0_postcss@8.4.14: + /postcss-js/4.0.0_postcss@8.4.17: resolution: {integrity: sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==} engines: {node: ^12 || ^14 || >= 16} peerDependencies: postcss: ^8.3.3 dependencies: camelcase-css: 2.0.1 - postcss: 8.4.14 + postcss: 8.4.17 dev: false - /postcss-load-config/3.1.4_postcss@8.4.14: + /postcss-load-config/3.1.4_postcss@8.4.17: resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} engines: {node: '>= 10'} peerDependencies: @@ -6969,17 +6865,17 @@ packages: optional: true dependencies: lilconfig: 2.0.6 - postcss: 8.4.14 + postcss: 8.4.17 yaml: 1.10.2 dev: false - /postcss-nested/5.0.6_postcss@8.4.14: + /postcss-nested/5.0.6_postcss@8.4.17: resolution: {integrity: sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==} engines: {node: '>=12.0'} peerDependencies: postcss: ^8.2.14 dependencies: - postcss: 8.4.14 + postcss: 8.4.17 postcss-selector-parser: 6.0.10 dev: false @@ -6995,8 +6891,8 @@ packages: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} dev: false - /postcss/8.4.14: - resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==} + /postcss/8.4.17: + resolution: {integrity: sha512-UNxNOLQydcOFi41yHNMcKRZ39NeXlr8AxGuZJsdub8vIb12fHzcq37DTU/QtbI6WLxNg2gF9Z+8qtRwTj1UI1Q==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.4 @@ -7046,8 +6942,8 @@ packages: asap: 2.0.6 dev: false - /promise/8.1.0: - resolution: {integrity: sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q==} + /promise/8.2.0: + resolution: {integrity: sha512-+CMAlLHqwRYwBMXKCP+o8ns7DN+xHDUiI+0nArsiJ9y+kJVPLFxEaSw6Ha9s9H0tftxg2Yzl25wqj9G7m5wLZg==} dependencies: asap: 2.0.6 @@ -7167,10 +7063,13 @@ packages: /react-is/17.0.2: resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} - /react-native-codegen/0.69.1: - resolution: {integrity: sha512-TOZEqBarczcyYN3iZE3VpKkooOevaAzBq9n7lU0h9mQUvtRhLVyolc+a5K6cWI0e4v4K69I0MqzjPcPeFKo32Q==} + /react-is/18.2.0: + resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + + /react-native-codegen/0.69.2: + resolution: {integrity: sha512-yPcgMHD4mqLbckqnWjFBaxomDnBREfRjDi2G/WxNyPBQLD+PXUEmZTkDx6QoOXN+Bl2SkpnNOSsLE2+/RUHoPw==} dependencies: - '@babel/parser': 7.18.11 + '@babel/parser': 7.19.3 flow-parser: 0.121.0 jscodeshift: 0.13.1 nullthrows: 1.1.1 @@ -7190,7 +7089,7 @@ packages: lodash: 4.17.21 prop-types: 15.8.1 react: 18.0.0 - react-native: 0.69.4_k6xwmnqmgysg6weibx66ue6pyi + react-native: 0.69.4_react@18.0.0 dev: false /react-native-gradle-plugin/0.0.7: @@ -7206,44 +7105,27 @@ packages: react-native-svg: 13.0.0_jk6ntyzimkrv4hwdmdgaaf5yaa dev: false - /react-native-reanimated/2.10.0_s4gdcbt2zwshcgkhtvkmdoj3my: + /react-native-reanimated/2.10.0_ifayjdo6vuwky63y7hdw4ayxzu: resolution: {integrity: sha512-jKm3xz5nX7ABtHzzuuLmawP0pFWP77lXNdIC6AWOceBs23OHUaJ29p4prxr/7Sb588GwTbkPsYkDqVFaE3ezNQ==} peerDependencies: '@babel/core': ^7.0.0-0 react: '*' react-native: '*' dependencies: - '@babel/core': 7.18.10 - '@babel/plugin-transform-object-assign': 7.18.6_@babel+core@7.18.10 - '@babel/preset-typescript': 7.18.6_@babel+core@7.18.10 + '@babel/core': 7.19.3 + '@babel/plugin-transform-object-assign': 7.18.6_@babel+core@7.19.3 + '@babel/preset-typescript': 7.18.6_@babel+core@7.19.3 '@types/invariant': 2.2.35 invariant: 2.2.4 lodash.isequal: 4.5.0 react: 18.0.0 - react-native: 0.69.4_k6xwmnqmgysg6weibx66ue6pyi + react-native: 0.69.4_react@18.0.0 setimmediate: 1.0.5 string-hash-64: 1.0.3 transitivePeerDependencies: - supports-color dev: false - /react-native-redash/16.3.0_vlgoh3gg3ptp2ic2mlqzb2jwsy: - resolution: {integrity: sha512-dhmeYbQ/usGzxZSGZmzmRuIFF2LrtJUKqgseKgf9Jdj0JQ7VM20m/LqTg60+wjxeiyAh2D/vKsQ2U7rMkuoplQ==} - peerDependencies: - react: '*' - react-native: '*' - react-native-gesture-handler: '*' - react-native-reanimated: '>=2.0.0' - dependencies: - abs-svg-path: 0.1.1 - normalize-svg-path: 1.1.0 - parse-svg-path: 0.1.2 - react: 18.0.0 - react-native: 0.69.4_k6xwmnqmgysg6weibx66ue6pyi - react-native-gesture-handler: 2.5.0_jk6ntyzimkrv4hwdmdgaaf5yaa - react-native-reanimated: 2.10.0_s4gdcbt2zwshcgkhtvkmdoj3my - dev: false - /react-native-safe-area-context/4.3.1_jk6ntyzimkrv4hwdmdgaaf5yaa: resolution: {integrity: sha512-cEr7fknJCToTrSyDCVNg0GRdRMhyLeQa2NZwVCuzEQcWedOw/59ExomjmzCE4rxrKXs6OJbyfNtFRNyewDaHuA==} peerDependencies: @@ -7251,7 +7133,7 @@ packages: react-native: '*' dependencies: react: 18.0.0 - react-native: 0.69.4_k6xwmnqmgysg6weibx66ue6pyi + react-native: 0.69.4_react@18.0.0 dev: false /react-native-safe-modules/1.0.3_react-native@0.69.4: @@ -7260,7 +7142,7 @@ packages: react-native: '*' dependencies: dedent: 0.6.0 - react-native: 0.69.4_k6xwmnqmgysg6weibx66ue6pyi + react-native: 0.69.4_react@18.0.0 dev: false /react-native-screens/3.15.0_jk6ntyzimkrv4hwdmdgaaf5yaa: @@ -7271,22 +7153,23 @@ packages: dependencies: react: 18.0.0 react-freeze: 1.0.3_react@18.0.0 - react-native: 0.69.4_k6xwmnqmgysg6weibx66ue6pyi - warn-once: 0.1.0 + react-native: 0.69.4_react@18.0.0 + warn-once: 0.1.1 dev: false - /react-native-svg-transformer/1.0.0_slyhrj4rhac6kym2xxm3raxghe: + /react-native-svg-transformer/1.0.0_tnz3sx6ysqoq7sjxw372rvqnoq: resolution: {integrity: sha512-ALHU5VvLLyKM/BvyEG7VYJmqglvaXtU7mGRCxrEwwpJO/GBf1ZMUzc4AeJAjSodj7yYtlDYRxNSt9ySWpaa6JQ==} peerDependencies: react-native: '>=0.59.0' react-native-svg: '>=12.0.0' dependencies: - '@svgr/core': 6.3.1 - '@svgr/plugin-svgo': 6.3.1_@svgr+core@6.3.1 + '@svgr/core': 6.4.0_@babel+core@7.19.3 + '@svgr/plugin-svgo': 6.3.1_@svgr+core@6.4.0 path-dirname: 1.0.2 - react-native: 0.69.4_k6xwmnqmgysg6weibx66ue6pyi + react-native: 0.69.4_react@18.0.0 react-native-svg: 13.0.0_jk6ntyzimkrv4hwdmdgaaf5yaa transitivePeerDependencies: + - '@babel/core' - supports-color dev: true @@ -7299,9 +7182,9 @@ packages: css-select: 5.1.0 css-tree: 1.1.3 react: 18.0.0 - react-native: 0.69.4_k6xwmnqmgysg6weibx66ue6pyi + react-native: 0.69.4_react@18.0.0 - /react-native/0.69.4_k6xwmnqmgysg6weibx66ue6pyi: + /react-native/0.69.4_react@18.0.0: resolution: {integrity: sha512-rqNMialM/T4pHRKWqTIpOxA65B/9kUjtnepxwJqvsdCeMP9Q2YdSx4VASFR9RoEFYcPRU41yGf6EKrChNfns3g==} engines: {node: '>=14'} hasBin: true @@ -7309,9 +7192,9 @@ packages: react: 18.0.0 dependencies: '@jest/create-cache-key-function': 27.5.1 - '@react-native-community/cli': 8.0.5_mqmjqcyqm4trh6m6pjidkcb5na + '@react-native-community/cli': 8.0.6_react-native@0.69.4 '@react-native-community/cli-platform-android': 8.0.5 - '@react-native-community/cli-platform-ios': 8.0.4 + '@react-native-community/cli-platform-ios': 8.0.6 '@react-native/assets': 1.0.0 '@react-native/normalize-color': 2.0.0 '@react-native/polyfills': 2.0.0 @@ -7323,16 +7206,16 @@ packages: invariant: 2.2.4 jsc-android: 250230.2.1 memoize-one: 5.2.1 - metro-react-native-babel-transformer: 0.70.3_@babel+core@7.18.10 + metro-react-native-babel-transformer: 0.70.3 metro-runtime: 0.70.3 metro-source-map: 0.70.3 mkdirp: 0.5.6 nullthrows: 1.1.1 pretty-format: 26.6.2 - promise: 8.1.0 + promise: 8.2.0 react: 18.0.0 react-devtools-core: 4.24.0 - react-native-codegen: 0.69.1 + react-native-codegen: 0.69.2 react-native-gradle-plugin: 0.0.7 react-refresh: 0.4.3 react-shallow-renderer: 16.15.0_react@18.0.0 @@ -7343,7 +7226,6 @@ packages: whatwg-fetch: 3.6.2 ws: 6.2.2 transitivePeerDependencies: - - '@babel/core' - '@babel/preset-env' - bufferutil - encoding @@ -7361,7 +7243,7 @@ packages: dependencies: object-assign: 4.1.1 react: 18.0.0 - react-is: 17.0.2 + react-is: 18.2.0 /react/18.0.0: resolution: {integrity: sha512-x+VL6wbT4JRVPm7EGxXhZ8w8LTROaxPXOqhlGyVSrv0sB1jkyFGgXxJ8LVoPRLvPR6/CIZGFmfzqUa2NYeMr2A==} @@ -7421,8 +7303,8 @@ packages: source-map: 0.6.1 tslib: 2.4.0 - /regenerate-unicode-properties/10.0.1: - resolution: {integrity: sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==} + /regenerate-unicode-properties/10.1.0: + resolution: {integrity: sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==} engines: {node: '>=4'} dependencies: regenerate: 1.4.2 @@ -7436,7 +7318,7 @@ packages: /regenerator-transform/0.15.0: resolution: {integrity: sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==} dependencies: - '@babel/runtime': 7.18.9 + '@babel/runtime': 7.19.0 dev: false /regex-not/1.0.2: @@ -7460,22 +7342,22 @@ packages: engines: {node: '>=8'} dev: true - /regexpu-core/5.1.0: - resolution: {integrity: sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA==} + /regexpu-core/5.2.1: + resolution: {integrity: sha512-HrnlNtpvqP1Xkb28tMhBUO2EbyUHdQlsnlAhzWcwHy8WJR53UWr7/MAvqrsQKMbV4qdpv03oTMG8iIhfsPFktQ==} engines: {node: '>=4'} dependencies: regenerate: 1.4.2 - regenerate-unicode-properties: 10.0.1 - regjsgen: 0.6.0 - regjsparser: 0.8.4 + regenerate-unicode-properties: 10.1.0 + regjsgen: 0.7.1 + regjsparser: 0.9.1 unicode-match-property-ecmascript: 2.0.0 unicode-match-property-value-ecmascript: 2.0.0 - /regjsgen/0.6.0: - resolution: {integrity: sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==} + /regjsgen/0.7.1: + resolution: {integrity: sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==} - /regjsparser/0.8.4: - resolution: {integrity: sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==} + /regjsparser/0.9.1: + resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} hasBin: true dependencies: jsesc: 0.5.0 @@ -7631,6 +7513,14 @@ packages: dev: false optional: true + /safe-regex-test/1.0.0: + resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.1.3 + is-regex: 1.1.4 + dev: true + /safe-regex/1.1.0: resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==} dependencies: @@ -7657,18 +7547,14 @@ packages: resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} hasBin: true - /semver/7.0.0: - resolution: {integrity: sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==} - hasBin: true - /semver/7.3.2: resolution: {integrity: sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==} engines: {node: '>=10'} hasBin: true dev: false - /semver/7.3.7: - resolution: {integrity: sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==} + /semver/7.3.8: + resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} engines: {node: '>=10'} hasBin: true dependencies: @@ -7774,7 +7660,7 @@ packages: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: call-bind: 1.0.2 - get-intrinsic: 1.1.2 + get-intrinsic: 1.1.3 object-inspect: 1.12.2 /signal-exit/3.0.7: @@ -7963,8 +7849,8 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.1.4 - es-abstract: 1.20.1 - get-intrinsic: 1.1.2 + es-abstract: 1.20.3 + get-intrinsic: 1.1.3 has-symbols: 1.0.3 internal-slot: 1.0.3 regexp.prototype.flags: 1.4.3 @@ -7976,7 +7862,7 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.1.4 - es-abstract: 1.20.1 + es-abstract: 1.20.3 dev: true /string.prototype.trimstart/1.0.5: @@ -7984,7 +7870,7 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.1.4 - es-abstract: 1.20.1 + es-abstract: 1.20.3 dev: true /string_decoder/1.1.1: @@ -8039,8 +7925,8 @@ packages: tslib: 2.4.0 dev: false - /sucrase/3.25.0: - resolution: {integrity: sha512-WxTtwEYXSmZArPGStGBicyRsg5TBEFhT5b7N+tF+zauImP0Acy+CoUK0/byJ8JNPK/5lbpWIVuFagI4+0l85QQ==} + /sucrase/3.28.0: + resolution: {integrity: sha512-TK9600YInjuiIhVM3729rH4ZKPOsGeyXUwY+Ugu9eilNbdTFyHr6XcAGYbRVZPDgWj6tgI7bx95aaJjHnbffag==} engines: {node: '>=8'} hasBin: true dependencies: @@ -8081,8 +7967,8 @@ packages: dependencies: has-flag: 4.0.0 - /supports-hyperlinks/2.2.0: - resolution: {integrity: sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==} + /supports-hyperlinks/2.3.0: + resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} engines: {node: '>=8'} dependencies: has-flag: 4.0.0 @@ -8093,10 +7979,6 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - /svg-arc-to-cubic-bezier/3.2.0: - resolution: {integrity: sha512-djbJ/vZKZO+gPoSDThGNpKDO+o+bAeA4XQKovvkNCqnIS2t+S4qnLAGQhyyrulhCFRl1WWzAp0wUDV8PpTVU3g==} - dev: false - /svg-parser/2.0.4: resolution: {integrity: sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==} dev: true @@ -8115,8 +7997,8 @@ packages: stable: 0.1.8 dev: true - /tailwindcss/3.1.7: - resolution: {integrity: sha512-r7mgumZ3k0InfVPpGWcX8X/Ut4xBfv+1O/+C73ar/m01LxGVzWvPxF/w6xIUPEztrCoz7axfx0SMdh8FH8ZvRQ==} + /tailwindcss/3.1.8: + resolution: {integrity: sha512-YSneUCZSFDYMwk+TGq8qYFdCA3yfBRdBlS7txSq0LUmzyeqRe3a8fBQzbz9M3WS/iFT4BNf/nmw9mEzrnSaC0g==} engines: {node: '>=12.13.0'} hasBin: true dependencies: @@ -8126,18 +8008,18 @@ packages: detective: 5.2.1 didyoumean: 1.2.2 dlv: 1.1.3 - fast-glob: 3.2.11 + fast-glob: 3.2.12 glob-parent: 6.0.2 is-glob: 4.0.3 lilconfig: 2.0.6 normalize-path: 3.0.0 object-hash: 3.0.0 picocolors: 1.0.0 - postcss: 8.4.14 - postcss-import: 14.1.0_postcss@8.4.14 - postcss-js: 4.0.0_postcss@8.4.14 - postcss-load-config: 3.1.4_postcss@8.4.14 - postcss-nested: 5.0.6_postcss@8.4.14 + postcss: 8.4.17 + postcss-import: 14.1.0_postcss@8.4.17 + postcss-js: 4.0.0_postcss@8.4.17 + postcss-load-config: 3.1.4_postcss@8.4.17 + postcss-nested: 5.0.6_postcss@8.4.17 postcss-selector-parser: 6.0.10 postcss-value-parser: 4.2.0 quick-lru: 5.1.1 @@ -8211,11 +8093,11 @@ packages: engines: {node: '>=8'} dependencies: ansi-escapes: 4.3.2 - supports-hyperlinks: 2.2.0 + supports-hyperlinks: 2.3.0 dev: false - /terser/5.15.0: - resolution: {integrity: sha512-L1BJiXVmheAQQy+as0oF3Pwtlo4s3Wi1X2zNZ2NxOB4wx9bdS9Vk67XQENLFdLYGCK/Z2di53mTj/hBafR+dTA==} + /terser/5.15.1: + resolution: {integrity: sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==} engines: {node: '>=10'} hasBin: true dependencies: @@ -8322,14 +8204,14 @@ packages: /tslib/2.4.0: resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} - /tsutils/3.21.0_typescript@4.7.4: + /tsutils/3.21.0_typescript@4.8.4: resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' dependencies: tslib: 1.14.1 - typescript: 4.7.4 + typescript: 4.8.4 dev: true /twrnc/3.4.0_react-native@0.69.4: @@ -8337,8 +8219,8 @@ packages: peerDependencies: react-native: '>=0.63.0' dependencies: - react-native: 0.69.4_k6xwmnqmgysg6weibx66ue6pyi - tailwindcss: 3.1.7 + react-native: 0.69.4_react@18.0.0 + tailwindcss: 3.1.8 transitivePeerDependencies: - ts-node dev: false @@ -8387,8 +8269,8 @@ packages: mime-types: 2.1.35 dev: false - /typescript/4.7.4: - resolution: {integrity: sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==} + /typescript/4.8.4: + resolution: {integrity: sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==} engines: {node: '>=4.2.0'} hasBin: true @@ -8423,14 +8305,14 @@ packages: engines: {node: '>=4'} dependencies: unicode-canonical-property-names-ecmascript: 2.0.0 - unicode-property-aliases-ecmascript: 2.0.0 + unicode-property-aliases-ecmascript: 2.1.0 /unicode-match-property-value-ecmascript/2.0.0: resolution: {integrity: sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==} engines: {node: '>=4'} - /unicode-property-aliases-ecmascript/2.0.0: - resolution: {integrity: sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==} + /unicode-property-aliases-ecmascript/2.1.0: + resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} engines: {node: '>=4'} /union-value/1.0.1: @@ -8493,13 +8375,13 @@ packages: has-value: 0.3.1 isobject: 3.0.1 - /update-browserslist-db/1.0.5_browserslist@4.21.3: - resolution: {integrity: sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==} + /update-browserslist-db/1.0.10_browserslist@4.21.4: + resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' dependencies: - browserslist: 4.21.3 + browserslist: 4.21.4 escalade: 3.1.1 picocolors: 1.0.0 @@ -8579,10 +8461,6 @@ packages: hasBin: true dev: false - /v8-compile-cache/2.3.0: - resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} - dev: true - /valid-url/1.0.9: resolution: {integrity: sha512-QQDsV8OnSf5Uc30CKSwG9lnhMPe6exHtTXLRYX8uMwKENy640pU+2BgBL0LRbDh/eYRahNCS7aewCx0wf3NYVA==} dev: false @@ -8643,10 +8521,6 @@ packages: dependencies: makeerror: 1.0.12 - /warn-once/0.1.0: - resolution: {integrity: sha512-recZTSvuaH/On5ZU5ywq66y99lImWqzP93+AiUo9LUwG8gXHW+LJjhOd6REJHm7qb0niYqrEQJvbHSQfuJtTqA==} - dev: false - /warn-once/0.1.1: resolution: {integrity: sha512-VkQZJbO8zVImzYFteBXvBOZEl1qL175WH8VmZcxF2fZAoudNhNDvHi+doCaAEdU2l2vtcIwa2zn0QK5+I1HQ3Q==} dev: false diff --git a/apps/mobile/rust/Cargo.toml b/apps/mobile/rust/Cargo.toml index dde522bbe..06eefe59e 100644 --- a/apps/mobile/rust/Cargo.toml +++ b/apps/mobile/rust/Cargo.toml @@ -8,18 +8,18 @@ rust-version = "1.64.0" crate-type = ["staticlib", "cdylib"] # staticlib for IOS and cdylib for Android [dependencies] -once_cell = "1.13.0" +once_cell = "1.15.0" sd-core = { path = "../../../core", features = [ "mobile", "p2p", ], default-features = false } -rspc = { version = "0.0.5", features = [] } -serde_json = "1.0.83" -tokio = "1.20.1" -openssl = { version = "0.10.41", features = [ +rspc = { workspace = true } +serde_json = "1.0.85" +tokio = "1.21.2" +openssl = { version = "0.10.42", features = [ "vendored", ] } # Override features of transitive dependencies -openssl-sys = { version = "0.9.75", features = [ +openssl-sys = { version = "0.9.76", features = [ "vendored", ] } # Override features of transitive dependencies to support IOS Simulator on M1 diff --git a/apps/mobile/rust/src/android.rs b/apps/mobile/rust/src/android.rs index e7af9be6f..ed93a44de 100644 --- a/apps/mobile/rust/src/android.rs +++ b/apps/mobile/rust/src/android.rs @@ -1,43 +1,72 @@ -use crate::{CLIENT_CONTEXT, EVENT_SENDER, NODE, RUNTIME}; -use jni::objects::{JClass, JObject, JString}; -use jni::JNIEnv; -use rspc::Request; +use std::panic; + +use crate::{EVENT_SENDER, NODE, RUNTIME, SUBSCRIPTIONS}; +use jni::objects::{GlobalRef, JClass, JObject, JString}; +use jni::{JNIEnv, JavaVM}; +use rspc::internal::jsonrpc::{handle_json_rpc, Request, Sender, SubscriptionMap}; use sd_core::Node; use tokio::sync::mpsc::unbounded_channel; +// fn print(jvm: &JavaVM, class: &GlobalRef, msg: &str) { +// let env = jvm.attach_current_thread().unwrap(); +// env.call_method( +// class, +// "print", +// "(Ljava/lang/String;)V", +// &[env +// .new_string(msg) +// .expect("Couldn't create java string!") +// .into()], +// ) +// .unwrap() +// .l() +// .unwrap(); +// } + #[no_mangle] pub extern "system" fn Java_com_spacedrive_app_SDCore_registerCoreEventListener( env: JNIEnv, class: JClass, ) { - let jvm = env.get_java_vm().unwrap(); - let class = env.new_global_ref(class).unwrap(); - let (tx, mut rx) = unbounded_channel(); - let _ = EVENT_SENDER.set(tx); + let result = panic::catch_unwind(|| { + let jvm = env.get_java_vm().unwrap(); + let class = env.new_global_ref(class).unwrap(); + let (tx, mut rx) = unbounded_channel(); + let _ = EVENT_SENDER.set(tx); - RUNTIME.spawn(async move { - while let Some(event) = rx.recv().await { - let data = match serde_json::to_string(&event) { - Ok(json) => json, - Err(err) => { - println!("Failed to serialize event: {}", err); - continue; - } - }; + RUNTIME.spawn(async move { + while let Some(event) = rx.recv().await { + let data = match serde_json::to_string(&event) { + Ok(json) => json, + Err(err) => { + println!("Failed to serialize event: {}", err); + continue; + } + }; - let env = jvm.attach_current_thread().unwrap(); - env.call_method( - &class, - "sendCoreEvent", - "(Ljava/lang/String;)V", - &[env - .new_string(data) - .expect("Couldn't create java string!") - .into()], - ) - .unwrap(); - } + let env = jvm.attach_current_thread().unwrap(); + env.call_method( + &class, + "sendCoreEvent", + "(Ljava/lang/String;)V", + &[env + .new_string(data) + .expect("Couldn't create java string!") + .into()], + ) + .unwrap(); + } + }); }); + + if let Err(err) = result { + // TODO: Send rspc error or something here so we can show this in the UI. + // TODO: Maybe reinitialise the core cause it could be in an invalid state? + println!( + "Error in Java_com_spacedrive_app_SDCore_registerCoreEventListener: {:?}", + err + ); + } } #[no_mangle] @@ -47,60 +76,75 @@ pub extern "system" fn Java_com_spacedrive_app_SDCore_handleCoreMsg( query: JString, callback: JObject, ) { - let jvm = env.get_java_vm().unwrap(); - let query: String = env - .get_string(query) - .expect("Couldn't get java string!") - .into(); - let class = env.new_global_ref(class).unwrap(); - let callback = env.new_global_ref(callback).unwrap(); + let result = panic::catch_unwind(|| { + let jvm = env.get_java_vm().unwrap(); + let query: String = env + .get_string(query) + .expect("Couldn't get java string!") + .into(); + let class = env.new_global_ref(class).unwrap(); + let callback = env.new_global_ref(callback).unwrap(); - RUNTIME.spawn(async move { - let request: Request = serde_json::from_str(&query).unwrap(); + RUNTIME.spawn(async move { + let request: Request = serde_json::from_str(&query).unwrap(); - let node = &mut *NODE.lock().await; - let (node, router) = match node { - Some(node) => node.clone(), - None => { - let data_dir: String = { + let node = &mut *NODE.lock().await; + let (node, router) = match node { + Some(node) => node.clone(), + None => { + let data_dir: String = { + let env = jvm.attach_current_thread().unwrap(); + let data_dir = env + .call_method(&class, "getDataDirectory", "()Ljava/lang/String;", &[]) + .unwrap() + .l() + .unwrap(); + + env.get_string(data_dir.into()).unwrap().into() + }; + + let new_node = Node::new(data_dir).await.unwrap(); + node.replace(new_node.clone()); + new_node + } + }; + + let mut channel = EVENT_SENDER.get().unwrap().clone(); + let mut resp = Sender::ResponseAndChannel(None, &mut channel); + handle_json_rpc( + node.get_request_context(), + request, + &router, + &mut resp, + &mut SubscriptionMap::Mutex(&SUBSCRIPTIONS), + ) + .await; + + match resp { + Sender::Response(Some(resp)) => { let env = jvm.attach_current_thread().unwrap(); - let data_dir = env - .call_method(&class, "getDataDirectory", "()Ljava/lang/String;", &[]) - .unwrap() - .l() - .unwrap(); - - env.get_string(data_dir.into()).unwrap().into() - }; - - let new_node = Node::new(data_dir).await.expect("Unable to create node"); - node.replace(new_node.clone()); - new_node + env.call_method( + &callback, + "resolve", + "(Ljava/lang/Object;)V", + &[env + .new_string(serde_json::to_string(&resp).unwrap()) + .expect("Couldn't create java string!") + .into()], + ) + .unwrap(); + } + _ => unreachable!(), } - }; - - let resp = serde_json::to_string( - &request - .handle( - node.get_request_context(), - &router, - &CLIENT_CONTEXT, - EVENT_SENDER.get(), - ) - .await, - ) - .unwrap(); - - let env = jvm.attach_current_thread().unwrap(); - env.call_method( - &callback, - "resolve", - "(Ljava/lang/Object;)V", - &[env - .new_string(resp) - .expect("Couldn't create java string!") - .into()], - ) - .unwrap(); + }); }); + + if let Err(err) = result { + // TODO: Send rspc error or something here so we can show this in the UI. + // TODO: Maybe reinitialise the core cause it could be in an invalid state? + println!( + "Error in Java_com_spacedrive_app_SDCore_registerCoreEventListener: {:?}", + err + ); + } } diff --git a/apps/mobile/rust/src/ios.rs b/apps/mobile/rust/src/ios.rs index 19d26d8eb..a21ead310 100644 --- a/apps/mobile/rust/src/ios.rs +++ b/apps/mobile/rust/src/ios.rs @@ -1,16 +1,16 @@ -use crate::{CLIENT_CONTEXT, EVENT_SENDER, NODE, RUNTIME}; +use crate::{EVENT_SENDER, NODE, RUNTIME, SUBSCRIPTIONS}; +use objc::{msg_send, runtime::Object, sel, sel_impl}; +use objc_foundation::{INSString, NSString}; +use objc_id::Id; +use rspc::internal::jsonrpc::{handle_json_rpc, Request, Sender, SubscriptionMap}; +use sd_core::Node; use std::{ ffi::{CStr, CString}, os::raw::{c_char, c_void}, + panic, }; use tokio::sync::mpsc::unbounded_channel; -use objc::{class, msg_send, runtime::Object, sel, sel_impl}; -use objc_foundation::{INSString, NSString}; -use objc_id::Id; -use rspc::Request; -use sd_core::Node; - extern "C" { fn get_data_directory() -> *const c_char; fn call_resolve(resolve: *const c_void, result: *const c_char); @@ -33,64 +33,81 @@ impl RNPromise { #[no_mangle] pub unsafe extern "C" fn register_core_event_listener(id: *mut Object) { - let id = Id::::from_ptr(id); + let result = panic::catch_unwind(|| { + let id = Id::::from_ptr(id); - let (tx, mut rx) = unbounded_channel(); - let _ = EVENT_SENDER.set(tx); + let (tx, mut rx) = unbounded_channel(); + let _ = EVENT_SENDER.set(tx); - RUNTIME.spawn(async move { - while let Some(event) = rx.recv().await { - let data = match serde_json::to_string(&event) { - Ok(json) => json, - Err(err) => { - println!("Failed to serialize event: {}", err); - continue; - } - }; - let data = NSString::from_str(&data); - let _: () = msg_send![id, sendCoreEvent: data]; - } + RUNTIME.spawn(async move { + while let Some(event) = rx.recv().await { + let data = match serde_json::to_string(&event) { + Ok(json) => json, + Err(err) => { + println!("Failed to serialize event: {}", err); + continue; + } + }; + let data = NSString::from_str(&data); + let _: () = msg_send![id, sendCoreEvent: data]; + } + }); }); + + if let Err(err) = result { + // TODO: Send rspc error or something here so we can show this in the UI. + // TODO: Maybe reinitialise the core cause it could be in an invalid state? + println!("Error in register_core_event_listener: {:?}", err); + } } #[no_mangle] pub unsafe extern "C" fn sd_core_msg(query: *const c_char, resolve: *const c_void) { - // This string is cloned to the Rust heap. This is important as Objective-C may remove the query once this function completions but prior to the async block finishing. - let query = CStr::from_ptr(query).to_str().unwrap().to_string(); + let result = panic::catch_unwind(|| { + // This string is cloned to the Rust heap. This is important as Objective-C may remove the query once this function completions but prior to the async block finishing. + let query = CStr::from_ptr(query).to_str().unwrap().to_string(); - let resolve = RNPromise(resolve); - RUNTIME.spawn(async move { - let request: Request = serde_json::from_str(&query).unwrap(); + let resolve = RNPromise(resolve); + RUNTIME.spawn(async move { + let request: Request = serde_json::from_str(&query).unwrap(); - let node = &mut *NODE.lock().await; - let (node, router) = match node { - Some(node) => node.clone(), - None => { - let doc_dir = CStr::from_ptr(get_data_directory()) - .to_str() - .unwrap() - .to_string(); - let new_node = Node::new(doc_dir).await.unwrap(); - node.replace(new_node.clone()); - new_node - } - }; + let node = &mut *NODE.lock().await; + let (node, router) = match node { + Some(node) => node.clone(), + None => { + let doc_dir = CStr::from_ptr(get_data_directory()) + .to_str() + .unwrap() + .to_string(); + let new_node = Node::new(doc_dir).await.unwrap(); + node.replace(new_node.clone()); + new_node + } + }; - resolve.resolve( - CString::new( - serde_json::to_vec( - &request - .handle( - node.get_request_context(), - &router, - &CLIENT_CONTEXT, - EVENT_SENDER.get(), - ) - .await, - ) - .unwrap(), + let mut channel = EVENT_SENDER.get().unwrap().clone(); + let mut resp = Sender::ResponseAndChannel(None, &mut channel); + handle_json_rpc( + node.get_request_context(), + request, + &router, + &mut resp, + &mut SubscriptionMap::Mutex(&SUBSCRIPTIONS), ) - .unwrap(), - ) + .await; + + match resp { + Sender::ResponseAndChannel(Some(resp), _) => { + resolve.resolve(CString::new(serde_json::to_vec(&resp).unwrap()).unwrap()); + } + _ => unreachable!(), + } + }); }); + + if let Err(err) = result { + // TODO: Send rspc error or something here so we can show this in the UI. + // TODO: Maybe reinitialise the core cause it could be in an invalid state? + println!("Error in sd_core_msg: {:?}", err); + } } diff --git a/apps/mobile/rust/src/lib.rs b/apps/mobile/rust/src/lib.rs index fb837282c..b887d887e 100644 --- a/apps/mobile/rust/src/lib.rs +++ b/apps/mobile/rust/src/lib.rs @@ -1,24 +1,24 @@ -use std::sync::Arc; +use std::{collections::HashMap, sync::Arc}; use once_cell::sync::{Lazy, OnceCell}; -use rspc::{ClientContext, Response}; +use rspc::internal::jsonrpc::{RequestId, Response}; use sd_core::{api::Router, Node}; use tokio::{ runtime::Runtime, - sync::{mpsc::UnboundedSender, Mutex}, + sync::{mpsc::UnboundedSender, oneshot, Mutex}, }; #[allow(dead_code)] pub(crate) static RUNTIME: Lazy = Lazy::new(|| Runtime::new().unwrap()); -type LazyNode = Lazy, Arc)>>>; -#[allow(dead_code)] -pub(crate) static NODE: LazyNode = Lazy::new(|| Mutex::new(None)); +type NodeType = Lazy, Arc)>>>; #[allow(dead_code)] -pub(crate) static CLIENT_CONTEXT: Lazy = Lazy::new(|| ClientContext { - subscriptions: Default::default(), -}); +pub(crate) static NODE: NodeType = Lazy::new(|| Mutex::new(None)); + +#[allow(dead_code)] +pub(crate) static SUBSCRIPTIONS: Lazy>>> = + Lazy::new(Default::default); #[allow(dead_code)] pub(crate) static EVENT_SENDER: OnceCell> = OnceCell::new(); diff --git a/apps/mobile/src/App.tsx b/apps/mobile/src/App.tsx index 08ecaa158..7dfa19e47 100644 --- a/apps/mobile/src/App.tsx +++ b/apps/mobile/src/App.tsx @@ -22,9 +22,9 @@ import RootNavigator from './navigation'; import OnboardingNavigator from './navigation/OnboardingNavigator'; import { libraryStore } from './stores/libraryStore'; import { onboardingStore } from './stores/onboardingStore'; -import type { Operations } from './types/bindings'; +import type { Procedures } from './types/bindings'; -const client = createClient({ +const client = createClient({ transport: new ReactNativeTransport() }); diff --git a/apps/mobile/src/components/modals/FileModal.tsx b/apps/mobile/src/components/modals/FileModal.tsx index f46017c73..35d4434d0 100644 --- a/apps/mobile/src/components/modals/FileModal.tsx +++ b/apps/mobile/src/components/modals/FileModal.tsx @@ -1,5 +1,5 @@ import { BottomSheetModal, BottomSheetScrollView } from '@gorhom/bottom-sheet'; -import { format } from 'date-fns'; +import dayjs from 'dayjs'; import React, { useRef } from 'react'; import { Button, Pressable, Text, View } from 'react-native'; import { ChevronLeftIcon } from 'react-native-heroicons/outline'; @@ -98,12 +98,12 @@ export const FileModal = () => { diff --git a/apps/mobile/src/hooks/rspc.ts b/apps/mobile/src/hooks/rspc.ts index 0df3939c0..774f03b7c 100644 --- a/apps/mobile/src/hooks/rspc.ts +++ b/apps/mobile/src/hooks/rspc.ts @@ -1,144 +1,109 @@ -import { ClientTransformer, OperationKey, OperationType, RSPCError, Transport } from '@rspc/client'; +import { OperationType, ProcedureDef, RSPCError, Transport } from '@rspc/client'; import { createReactQueryHooks } from '@rspc/react'; -import { - QueryClient, - UseMutationOptions, - UseMutationResult, - UseQueryOptions, - UseQueryResult, - useMutation as _useMutation -} from '@tanstack/react-query'; +import { QueryClient } from '@tanstack/react-query'; import { NativeEventEmitter, NativeModules } from 'react-native'; -import { useSnapshot } from 'valtio'; -import { libraryStore } from '../stores/libraryStore'; -import type { LibraryArgs, Operations } from '../types/bindings'; +import { getLibraryIdRaw } from '../stores/libraryStore'; +import { LibraryArgs, Procedures } from '../types/bindings'; export const queryClient = new QueryClient(); -export const rspc = createReactQueryHooks(); +export const rspc = createReactQueryHooks(); const { SDCore } = NativeModules; const eventEmitter = new NativeEventEmitter(NativeModules.SDCore); // TODO(@Oscar): Replace this with a better abstraction when it's released in rspc. This relies on internal details of rspc which will change without warning. export class ReactNativeTransport implements Transport { - transformer?: ClientTransformer; - clientSubscriptionCallback?: (id: string, key: string, value: any) => void; + clientSubscriptionCallback?: (id: string, value: any) => void; constructor() { const subscriptionEventListener = eventEmitter.addListener('SDCoreEvent', (event) => { - const body = JSON.parse(event); - if (body.type === 'event') { - const { id, key, result } = body; - this.clientSubscriptionCallback(id, key, result); - } else if (body.type === 'response' || body.type === 'error') { + const { id, result } = JSON.parse(event); + if (result.type === 'event') { + if (this.clientSubscriptionCallback) this.clientSubscriptionCallback(id, result.data); + } else if (result.type === 'response' || result.type === 'error') { throw new Error( - `Recieved event of type '${body.type}'. This should be impossible with the React Native transport!` + `Recieved event of type '${result.type}'. This should be impossible with the React Native transport!` ); } else { - console.error(`Received event of unknown method '${body.type}'`); + console.error(`Received event of unknown method '${result.type}'`); } }); } - async doRequest(operation: OperationType, key: OperationKey): Promise { - const body = JSON.parse( + async doRequest(operation: OperationType, key: string, input: any): Promise { + const resp = JSON.parse( await SDCore.sd_core_msg( JSON.stringify({ - operation, - key: this.transformer?.serialize(operation, key) || key + id: null, + method: operation, + params: { + path: key, + input + } }) ) ); + + const body = resp.result; if (body.type === 'error') { - const { status_code, message } = body; - throw new RSPCError(status_code, message); + const { code, message } = body; + throw new RSPCError(code, message); } else if (body.type === 'response') { - return this.transformer?.deserialize(operation, key, body.result) || body.result; + return body.data; } else if (body.type !== 'none') { throw new Error(`RSPC ReactNative doRequest received invalid body type '${body?.type}'`); } } } -type NonLibraryQueries = Exclude] }> & - Extract; -type NonLibraryQuery = Extract; -type NonLibraryQueryKey = NonLibraryQueries['key'][0]; -type NonLibraryQueryResult = NonLibraryQuery['result']; +type NonLibraryProcedure = + | Exclude }> + | Extract; -export function useBridgeQuery( - key: K, - options?: UseQueryOptions, RSPCError> -): UseQueryResult, RSPCError> { - // @ts-ignore - return rspc.useQuery(key, options); -} - -type LibraryQueries = Extract] }>; -type LibraryQuery = Extract; -type LibraryQueryKey = LibraryQueries['key'][0]; -type LibraryQueryArgs = LibraryQuery['key'][1] extends LibraryArgs - ? A - : never; -type LibraryQueryResult = LibraryQuery['result']; - -export function useLibraryQuery( - key: LibraryQueryArgs extends null | undefined ? [K] : [K, LibraryQueryArgs], - options?: UseQueryOptions, RSPCError> -): UseQueryResult, RSPCError> { - const store = useSnapshot(libraryStore); - const library_id = store.currentLibraryUuid; - if (!library_id) throw new Error(`Attempted to do library query with no library set!`); - // @ts-ignore - return rspc.useQuery([key[0], { library_id: library_id || '', arg: key[1] || null }], options); -} - -type LibraryMutations = Extract] }>; -type LibraryMutation = Extract; -type LibraryMutationKey = LibraryMutations['key'][0]; -type LibraryMutationArgs = - LibraryMutation['key'][1] extends LibraryArgs ? A : never; -type LibraryMutationResult = LibraryMutation['result']; -export function useLibraryMutation( - key: K, - options?: UseMutationOptions, RSPCError> -) { - const ctx = rspc.useContext(); - const store = useSnapshot(libraryStore); - const library_id = store.currentLibraryUuid; - if (!library_id) throw new Error(`Attempted to do library query with no library set!`); - - // @ts-ignore - return _useMutation, RSPCError, LibraryMutationArgs>( - async (data) => ctx.client.mutation([key, { library_id: library_id || '', arg: data || null }]), - { - ...options, - context: rspc.ReactQueryContext - } - ); -} - -type NonLibraryMutations = Exclude] }>; -type NonLibraryMutation = Extract< - NonLibraryMutations, - { key: [K] | [K, any] } +type LibraryProcedures = Exclude< + Extract }>, + { input: never } >; -type NonLibraryMutationKey = NonLibraryMutations['key'][0]; -type NonLibraryMutationArgs = NonLibraryMutation['key'][1]; -type NonLibraryMutationResult = NonLibraryMutation['result']; -export function useBridgeMutation( - key: K, - options?: UseMutationOptions, RSPCError> -): UseMutationResult, RSPCError, NonLibraryMutationArgs> { - // @ts-ignore - return rspc.useMutation(key, options); -} + +type MoreConstrainedQueries = T extends any + ? T['input'] extends LibraryArgs + ? { + key: T['key']; + input: E; + result: T['result']; + } + : never + : never; + +export const useBridgeQuery = rspc.customQuery>( + (keyAndInput) => keyAndInput as any +); + +export const useBridgeMutation = rspc.customMutation>( + (keyAndInput) => keyAndInput +); + +export const useLibraryQuery = rspc.customQuery< + MoreConstrainedQueries> +>((keyAndInput) => { + const library_id = getLibraryIdRaw(); + if (library_id === null) throw new Error('Attempted to do library query with no library set!'); + return [keyAndInput[0], { library_id, arg: keyAndInput[1] || null }]; +}); + +export const useLibraryMutation = rspc.customMutation< + MoreConstrainedQueries> +>((keyAndInput) => { + const library_id = getLibraryIdRaw(); + if (library_id === null) throw new Error('Attempted to do library query with no library set!'); + return [keyAndInput[0], { library_id, arg: keyAndInput[1] || null }]; +}); export function useInvalidateQuery() { const context = rspc.useContext(); rspc.useSubscription(['invalidateQuery'], { - onNext: (invalidateOperation) => { + onData: (invalidateOperation) => { const key = [invalidateOperation.key]; if (invalidateOperation.arg !== null) { key.concat(invalidateOperation.arg); diff --git a/apps/mobile/src/stores/libraryStore.ts b/apps/mobile/src/stores/libraryStore.ts index 73cf04544..20f6197c8 100644 --- a/apps/mobile/src/stores/libraryStore.ts +++ b/apps/mobile/src/stores/libraryStore.ts @@ -27,6 +27,10 @@ export const libraryStore = proxyWithPersist({ getStorage: () => StorageEngine }); +export function getLibraryIdRaw(): string | null { + return libraryStore.currentLibraryUuid; +} + // this must be used at least once in the app to correct the initial state // is memorized and can be used safely in any component export const useCurrentLibrary = () => { diff --git a/apps/mobile/src/types/bindings.ts b/apps/mobile/src/types/bindings.ts index 454d21f64..7baccfece 100644 --- a/apps/mobile/src/types/bindings.ts +++ b/apps/mobile/src/types/bindings.ts @@ -1,112 +1,359 @@ /* eslint-disable */ // This file was generated by [rspc](https://github.com/oscartbeaumont/rspc). Do not edit this file manually. -export type Operations = { - queries: - { key: ["files.readMetadata", LibraryArgs], result: null } | - { key: ["getNode"], result: NodeState } | - { key: ["jobs.getHistory", LibraryArgs], result: Array } | - { key: ["jobs.getRunning", LibraryArgs], result: Array } | - { key: ["library.getStatistics", LibraryArgs], result: Statistics } | - { key: ["library.list"], result: Array } | - { key: ["locations.getById", LibraryArgs], result: Location | null } | - { key: ["locations.getExplorerData", LibraryArgs], result: ExplorerData } | - { key: ["locations.indexer_rules.get", LibraryArgs], result: IndexerRule } | - { key: ["locations.indexer_rules.list", LibraryArgs], result: Array } | - { key: ["locations.list", LibraryArgs], result: Array<{ id: number, pub_id: Array, node_id: number, name: string | null, local_path: string | null, total_capacity: number | null, available_capacity: number | null, filesystem: string | null, disk_type: number | null, is_removable: boolean | null, is_online: boolean, is_archived: boolean, date_created: string, node: Node }> } | - { key: ["tags.get", LibraryArgs], result: Tag | null } | - { key: ["tags.getExplorerData", LibraryArgs], result: ExplorerData } | - { key: ["tags.getForFile", LibraryArgs], result: Array } | - { key: ["tags.list", LibraryArgs], result: Array } | - { key: ["version"], result: string } | - { key: ["volumes.list"], result: Array }, - mutations: - { key: ["files.delete", LibraryArgs], result: null } | - { key: ["files.setFavorite", LibraryArgs], result: null } | - { key: ["files.setNote", LibraryArgs], result: null } | - { key: ["jobs.generateThumbsForLocation", LibraryArgs], result: null } | - { key: ["jobs.identifyUniqueFiles", LibraryArgs], result: null } | - { key: ["library.create", string], result: LibraryConfigWrapped } | - { key: ["library.delete", string], result: null } | - { key: ["library.edit", EditLibraryArgs], result: null } | - { key: ["locations.create", LibraryArgs], result: null } | - { key: ["locations.delete", LibraryArgs], result: null } | - { key: ["locations.fullRescan", LibraryArgs], result: null } | - { key: ["locations.indexer_rules.create", LibraryArgs], result: IndexerRule } | - { key: ["locations.indexer_rules.delete", LibraryArgs], result: null } | - { key: ["locations.quickRescan", LibraryArgs], result: null } | - { key: ["locations.update", LibraryArgs], result: null } | - { key: ["tags.assign", LibraryArgs], result: null } | - { key: ["tags.create", LibraryArgs], result: Tag } | - { key: ["tags.delete", LibraryArgs], result: null } | - { key: ["tags.update", LibraryArgs], result: null }, - subscriptions: - { key: ["invalidateQuery"], result: InvalidateOperationEvent } | - { key: ["jobs.newThumbnail", LibraryArgs], result: string } +export type Procedures = { + queries: + | { key: 'files.readMetadata'; input: LibraryArgs; result: null } + | { key: 'getNode'; input: never; result: NodeState } + | { key: 'jobs.getHistory'; input: LibraryArgs; result: Array } + | { key: 'jobs.getRunning'; input: LibraryArgs; result: Array } + | { key: 'library.getStatistics'; input: LibraryArgs; result: Statistics } + | { key: 'library.list'; input: never; result: Array } + | { key: 'locations.getById'; input: LibraryArgs; result: Location | null } + | { + key: 'locations.getExplorerData'; + input: LibraryArgs; + result: ExplorerData; + } + | { key: 'locations.indexer_rules.get'; input: LibraryArgs; result: IndexerRule } + | { key: 'locations.indexer_rules.list'; input: LibraryArgs; result: Array } + | { + key: 'locations.list'; + input: LibraryArgs; + result: Array<{ + id: number; + pub_id: Array; + node_id: number; + name: string | null; + local_path: string | null; + total_capacity: number | null; + available_capacity: number | null; + filesystem: string | null; + disk_type: number | null; + is_removable: boolean | null; + is_online: boolean; + is_archived: boolean; + date_created: string; + node: Node; + }>; + } + | { key: 'tags.get'; input: LibraryArgs; result: Tag | null } + | { key: 'tags.getExplorerData'; input: LibraryArgs; result: ExplorerData } + | { key: 'tags.getForObject'; input: LibraryArgs; result: Array } + | { key: 'tags.list'; input: LibraryArgs; result: Array } + | { key: 'version'; input: never; result: string } + | { key: 'volumes.list'; input: never; result: Array }; + mutations: + | { key: 'files.delete'; input: LibraryArgs; result: null } + | { key: 'files.setFavorite'; input: LibraryArgs; result: null } + | { key: 'files.setNote'; input: LibraryArgs; result: null } + | { + key: 'jobs.generateThumbsForLocation'; + input: LibraryArgs; + result: null; + } + | { key: 'jobs.identifyUniqueFiles'; input: LibraryArgs; result: null } + | { key: 'library.create'; input: string; result: LibraryConfigWrapped } + | { key: 'library.delete'; input: string; result: null } + | { key: 'library.edit'; input: EditLibraryArgs; result: null } + | { key: 'locations.create'; input: LibraryArgs; result: null } + | { key: 'locations.delete'; input: LibraryArgs; result: null } + | { key: 'locations.fullRescan'; input: LibraryArgs; result: null } + | { + key: 'locations.indexer_rules.create'; + input: LibraryArgs; + result: IndexerRule; + } + | { key: 'locations.indexer_rules.delete'; input: LibraryArgs; result: null } + | { key: 'locations.quickRescan'; input: LibraryArgs; result: null } + | { key: 'locations.update'; input: LibraryArgs; result: null } + | { key: 'tags.assign'; input: LibraryArgs; result: null } + | { key: 'tags.create'; input: LibraryArgs; result: Tag } + | { key: 'tags.delete'; input: LibraryArgs; result: null } + | { key: 'tags.update'; input: LibraryArgs; result: null }; + subscriptions: + | { key: 'invalidateQuery'; input: never; result: InvalidateOperationEvent } + | { key: 'jobs.newThumbnail'; input: LibraryArgs; result: string }; }; -export interface ConfigMetadata { version: string | null } +export interface ConfigMetadata { + version: string | null; +} -export interface EditLibraryArgs { id: string, name: string | null, description: string | null } +export interface EditLibraryArgs { + id: string; + name: string | null; + description: string | null; +} -export type ExplorerContext = { type: "Location" } & Location | { type: "Tag" } & Tag +export type ExplorerContext = ({ type: 'Location' } & Location) | ({ type: 'Tag' } & Tag); -export interface ExplorerData { context: ExplorerContext, items: Array } +export interface ExplorerData { + context: ExplorerContext; + items: Array; +} -export type ExplorerItem = { type: "Path" } & { id: number, is_dir: boolean, location_id: number, materialized_path: string, name: string, extension: string | null, object_id: number | null, parent_id: number | null, key_id: number | null, date_created: string, date_modified: string, date_indexed: string, object: Object | null } | { type: "Object" } & { id: number, cas_id: string, integrity_checksum: string | null, name: string | null, extension: string | null, kind: number, size_in_bytes: string, key_id: number | null, hidden: boolean, favorite: boolean, important: boolean, has_thumbnail: boolean, has_thumbstrip: boolean, has_video_preview: boolean, ipfs_id: string | null, note: string | null, date_created: string, date_modified: string, date_indexed: string, file_paths: Array } +export type ExplorerItem = + | ({ type: 'Path' } & { + id: number; + is_dir: boolean; + location_id: number; + materialized_path: string; + name: string; + extension: string | null; + object_id: number | null; + parent_id: number | null; + key_id: number | null; + date_created: string; + date_modified: string; + date_indexed: string; + object: Object | null; + }) + | ({ type: 'Object' } & { + id: number; + cas_id: string; + integrity_checksum: string | null; + name: string | null; + extension: string | null; + kind: number; + size_in_bytes: string; + key_id: number | null; + hidden: boolean; + favorite: boolean; + important: boolean; + has_thumbnail: boolean; + has_thumbstrip: boolean; + has_video_preview: boolean; + ipfs_id: string | null; + note: string | null; + date_created: string; + date_modified: string; + date_indexed: string; + file_paths: Array; + }); -export interface FilePath { id: number, is_dir: boolean, location_id: number, materialized_path: string, name: string, extension: string | null, object_id: number | null, parent_id: number | null, key_id: number | null, date_created: string, date_modified: string, date_indexed: string } +export interface FilePath { + id: number; + is_dir: boolean; + location_id: number; + materialized_path: string; + name: string; + extension: string | null; + object_id: number | null; + parent_id: number | null; + key_id: number | null; + date_created: string; + date_modified: string; + date_indexed: string; +} -export interface GenerateThumbsForLocationArgs { id: number, path: string } +export interface GenerateThumbsForLocationArgs { + id: number; + path: string; +} -export interface IdentifyUniqueFilesArgs { id: number, path: string } +export interface IdentifyUniqueFilesArgs { + id: number; + path: string; +} -export interface IndexerRule { id: number, kind: number, name: string, parameters: Array, date_created: string, date_modified: string } +export interface IndexerRule { + id: number; + kind: number; + name: string; + parameters: Array; + date_created: string; + date_modified: string; +} -export interface IndexerRuleCreateArgs { kind: RuleKind, name: string, parameters: Array } +export interface IndexerRuleCreateArgs { + kind: RuleKind; + name: string; + parameters: Array; +} -export interface InvalidateOperationEvent { key: string, arg: any } +export interface InvalidateOperationEvent { + key: string; + arg: any; +} -export interface JobReport { id: string, name: string, data: Array | null, metadata: any | null, date_created: string, date_modified: string, status: JobStatus, task_count: number, completed_task_count: number, message: string, seconds_elapsed: number } +export interface JobReport { + id: string; + name: string; + data: Array | null; + metadata: any | null; + date_created: string; + date_modified: string; + status: JobStatus; + task_count: number; + completed_task_count: number; + message: string; + seconds_elapsed: number; +} -export type JobStatus = "Queued" | "Running" | "Completed" | "Canceled" | "Failed" | "Paused" +export type JobStatus = 'Queued' | 'Running' | 'Completed' | 'Canceled' | 'Failed' | 'Paused'; -export interface LibraryArgs { library_id: string, arg: T } +export interface LibraryArgs { + library_id: string; + arg: T; +} -export interface LibraryConfig { version: string | null, name: string, description: string } +export interface LibraryConfig { + version: string | null; + name: string; + description: string; +} -export interface LibraryConfigWrapped { uuid: string, config: LibraryConfig } +export interface LibraryConfigWrapped { + uuid: string; + config: LibraryConfig; +} -export interface Location { id: number, pub_id: Array, node_id: number, name: string | null, local_path: string | null, total_capacity: number | null, available_capacity: number | null, filesystem: string | null, disk_type: number | null, is_removable: boolean | null, is_online: boolean, is_archived: boolean, date_created: string } +export interface Location { + id: number; + pub_id: Array; + node_id: number; + name: string | null; + local_path: string | null; + total_capacity: number | null; + available_capacity: number | null; + filesystem: string | null; + disk_type: number | null; + is_removable: boolean | null; + is_online: boolean; + is_archived: boolean; + date_created: string; +} -export interface LocationCreateArgs { path: string, indexer_rules_ids: Array } +export interface LocationCreateArgs { + path: string; + indexer_rules_ids: Array; +} -export interface LocationExplorerArgs { location_id: number, path: string, limit: number, cursor: string | null } +export interface LocationExplorerArgs { + location_id: number; + path: string; + limit: number; + cursor: string | null; +} -export interface LocationUpdateArgs { id: number, name: string | null, indexer_rules_ids: Array } +export interface LocationUpdateArgs { + id: number; + name: string | null; + indexer_rules_ids: Array; +} -export interface Node { id: number, pub_id: Array, name: string, platform: number, version: string | null, last_seen: string, timezone: string | null, date_created: string } +export interface Node { + id: number; + pub_id: Array; + name: string; + platform: number; + version: string | null; + last_seen: string; + timezone: string | null; + date_created: string; +} -export interface NodeConfig { version: string | null, id: string, name: string, p2p_port: number | null } +export interface NodeConfig { + version: string | null; + id: string; + name: string; + p2p_port: number | null; +} -export interface NodeState { version: string | null, id: string, name: string, p2p_port: number | null, data_path: string } +export interface NodeState { + version: string | null; + id: string; + name: string; + p2p_port: number | null; + data_path: string; +} -export interface Object { id: number, cas_id: string, integrity_checksum: string | null, name: string | null, extension: string | null, kind: number, size_in_bytes: string, key_id: number | null, hidden: boolean, favorite: boolean, important: boolean, has_thumbnail: boolean, has_thumbstrip: boolean, has_video_preview: boolean, ipfs_id: string | null, note: string | null, date_created: string, date_modified: string, date_indexed: string } +export interface Object { + id: number; + cas_id: string; + integrity_checksum: string | null; + name: string | null; + extension: string | null; + kind: number; + size_in_bytes: string; + key_id: number | null; + hidden: boolean; + favorite: boolean; + important: boolean; + has_thumbnail: boolean; + has_thumbstrip: boolean; + has_video_preview: boolean; + ipfs_id: string | null; + note: string | null; + date_created: string; + date_modified: string; + date_indexed: string; +} -export type RuleKind = "AcceptFilesByGlob" | "RejectFilesByGlob" | "AcceptIfChildrenDirectoriesArePresent" | "RejectIfChildrenDirectoriesArePresent" +export type RuleKind = + | 'AcceptFilesByGlob' + | 'RejectFilesByGlob' + | 'AcceptIfChildrenDirectoriesArePresent' + | 'RejectIfChildrenDirectoriesArePresent'; -export interface SetFavoriteArgs { id: number, favorite: boolean } +export interface SetFavoriteArgs { + id: number; + favorite: boolean; +} -export interface SetNoteArgs { id: number, note: string | null } +export interface SetNoteArgs { + id: number; + note: string | null; +} -export interface Statistics { id: number, date_captured: string, total_object_count: number, library_db_size: string, total_bytes_used: string, total_bytes_capacity: string, total_unique_bytes: string, total_bytes_free: string, preview_media_bytes: string } +export interface Statistics { + id: number; + date_captured: string; + total_object_count: number; + library_db_size: string; + total_bytes_used: string; + total_bytes_capacity: string; + total_unique_bytes: string; + total_bytes_free: string; + preview_media_bytes: string; +} -export interface Tag { id: number, pub_id: Array, name: string | null, color: string | null, total_objects: number | null, redundancy_goal: number | null, date_created: string, date_modified: string } +export interface Tag { + id: number; + pub_id: Array; + name: string | null; + color: string | null; + total_objects: number | null; + redundancy_goal: number | null; + date_created: string; + date_modified: string; +} -export interface TagAssignArgs { object_id: number, tag_id: number, unassign: boolean } +export interface TagAssignArgs { + object_id: number; + tag_id: number; + unassign: boolean; +} -export interface TagCreateArgs { name: string, color: string } +export interface TagCreateArgs { + name: string; + color: string; +} -export interface TagUpdateArgs { id: number, name: string | null, color: string | null } +export interface TagUpdateArgs { + id: number; + name: string | null; + color: string | null; +} -export interface Volume { name: string, mount_point: string, total_capacity: bigint, available_capacity: bigint, is_removable: boolean, disk_type: string | null, file_system: string | null, is_root_filesystem: boolean } +export interface Volume { + name: string; + mount_point: string; + total_capacity: bigint; + available_capacity: bigint; + is_removable: boolean; + disk_type: string | null; + file_system: string | null; + is_root_filesystem: boolean; +} diff --git a/apps/server/Cargo.toml b/apps/server/Cargo.toml index 1344cc92d..115adbfa4 100644 --- a/apps/server/Cargo.toml +++ b/apps/server/Cargo.toml @@ -5,8 +5,8 @@ edition = "2021" [dependencies] sd-core = { path = "../../core", features = [] } -rspc = { version = "0.0.5", features = ["axum"] } -axum = "0.5.13" -tokio = { version = "1.17.0", features = ["sync", "rt-multi-thread", "signal"] } -tracing = "0.1.35" -ctrlc = "3.2.2" +rspc = { workspace = true, features = ["axum"] } +axum = "0.5.16" +tokio = { version = "1.21.2", features = ["sync", "rt-multi-thread", "signal"] } +tracing = "0.1.36" +ctrlc = "3.2.3" diff --git a/apps/server/src/main.rs b/apps/server/src/main.rs index d4063c43d..5b19a4d7a 100644 --- a/apps/server/src/main.rs +++ b/apps/server/src/main.rs @@ -55,8 +55,8 @@ async fn main() { }) }) .route( - "/rspcws", - router.axum_ws_handler(move || node.get_request_context()), + "/rspc/:id", + router.endpoint(move || node.get_request_context()).axum(), ) .fallback((|| async { "404 Not Found: We're past the event horizon..." }).into_service()); diff --git a/apps/web/package.json b/apps/web/package.json index 67d29d392..15588492d 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -8,25 +8,27 @@ "preview": "vite preview" }, "dependencies": { - "@fontsource/inter": "^4.5.11", - "@rspc/client": "^0.0.6", + "@fontsource/inter": "^4.5.13", + "@rspc/client": "^0.1.2", "@sd/client": "workspace:*", "@sd/interface": "workspace:*", "@sd/ui": "workspace:*", - "@tanstack/react-query": "^4.0.10", + "@tanstack/react-query": "^4.10.1", "react": "^18.2.0", "react-dom": "^18.2.0" }, "devDependencies": { - "@types/react": "^18.0.15", + "@types/react": "^18.0.21", "@types/react-dom": "^18.0.6", - "@vitejs/plugin-react": "^2.0.0", - "autoprefixer": "^10.4.7", - "postcss": "^8.4.14", + "@vitejs/plugin-react": "^2.1.0", + "autoprefixer": "^10.4.12", + "postcss": "^8.4.17", + "rollup-plugin-visualizer": "^5.8.2", "tailwind": "^4.0.0", - "typescript": "^4.7.4", - "vite": "^3.0.3", + "typescript": "^4.8.4", + "vite": "^3.1.4", + "vite-plugin-html": "^3.2.0", "vite-plugin-svgr": "^2.2.1", - "vite-plugin-tsconfig-paths": "^1.1.0" + "vite-plugin-tsconfig-paths": "^1.2.0" } } diff --git a/apps/web/src/App.tsx b/apps/web/src/App.tsx index 52090595a..f944d8a85 100644 --- a/apps/web/src/App.tsx +++ b/apps/web/src/App.tsx @@ -1,11 +1,11 @@ import { WebsocketTransport, createClient } from '@rspc/client'; -import { Operations, PlatformProvider, queryClient, rspc } from '@sd/client'; +import { PlatformProvider, Procedures, queryClient, rspc } from '@sd/client'; import SpacedriveInterface, { Platform } from '@sd/interface'; import { useEffect } from 'react'; -const client = createClient({ +const client = createClient({ transport: new WebsocketTransport( - import.meta.env.VITE_SDSERVER_BASE_URL || 'ws://localhost:8080/rspcws' + import.meta.env.VITE_SDSERVER_BASE_URL || 'ws://localhost:8080/rspc/ws' ) }); diff --git a/apps/web/src/index.html b/apps/web/src/index.html index 49ea9cd2f..2ca3b4c6f 100644 --- a/apps/web/src/index.html +++ b/apps/web/src/index.html @@ -1,15 +1,13 @@ + + + Spacedrive + + - - - Spacedrive - - - - -
- - - + +
+ + diff --git a/apps/web/src/index.tsx b/apps/web/src/index.tsx index f806c6bf4..5ec95c5f6 100644 --- a/apps/web/src/index.tsx +++ b/apps/web/src/index.tsx @@ -1,8 +1,10 @@ -import App from './App'; -import '@sd/ui/style'; import React from 'react'; import ReactDOM from 'react-dom/client'; +import App from './App'; + +import '@sd/ui/style'; + const root = ReactDOM.createRoot(document.getElementById('root') as HTMLElement); root.render( diff --git a/apps/web/tsconfig.json b/apps/web/tsconfig.json index 0cec03c37..168f12434 100644 --- a/apps/web/tsconfig.json +++ b/apps/web/tsconfig.json @@ -1,7 +1,5 @@ { - "extends": "../../packages/config/interface.tsconfig.json", - "compilerOptions": {}, - "include": [ - "src" - ] + "extends": "../../packages/config/interface.tsconfig.json", + "compilerOptions": {}, + "include": ["src"] } diff --git a/apps/web/vite.config.ts b/apps/web/vite.config.ts index b22575e2e..affc565fe 100644 --- a/apps/web/vite.config.ts +++ b/apps/web/vite.config.ts @@ -1,5 +1,7 @@ import react from '@vitejs/plugin-react'; +import { visualizer } from 'rollup-plugin-visualizer'; import { defineConfig } from 'vite'; +import { createHtmlPlugin } from 'vite-plugin-html'; import svg from 'vite-plugin-svgr'; import tsconfigPaths from 'vite-plugin-tsconfig-paths'; @@ -10,7 +12,18 @@ export default defineConfig({ server: { port: 8002 }, - plugins: [react(), svg({ svgrOptions: { icon: true } }), tsconfigPaths()], + plugins: [ + react(), + svg({ svgrOptions: { icon: true } }), + tsconfigPaths(), + createHtmlPlugin({ + minify: true + }), + visualizer({ + gzipSize: true, + brotliSize: true + }) + ], root: 'src', publicDir: '../../packages/interface/src/assets', define: { diff --git a/core/Cargo.toml b/core/Cargo.toml index 9d7bbfb50..3ad5da6a2 100644 --- a/core/Cargo.toml +++ b/core/Cargo.toml @@ -25,44 +25,46 @@ hostname = "0.3.1" # Universal Dependencies base64 = "0.13.0" serde = { version = "1.0", features = ["derive"] } -chrono = { version = "0.4.19", features = ["serde"] } +chrono = { version = "0.4.22", features = ["serde"] } serde_json = "1.0" futures = "0.3" data-encoding = "2.3.2" -ring = "0.17.0-alpha.10" +ring = "0.17.0-alpha.11" int-enum = "0.4.0" rmp = "^0.8.11" -rmp-serde = "^1.1.0" +rmp-serde = "^1.1.1" # Project dependencies +rspc = { workspace = true, features = ["uuid", "chrono", "tracing"] } prisma-client-rust = { workspace = true } -rspc = { version = "0.0.5", features = ["uuid", "chrono", "tracing"] } uuid = { version = "1.1.2", features = ["v4", "serde"] } -sysinfo = "0.23.9" -thiserror = "1.0.30" +sysinfo = "0.26.4" +thiserror = "1.0.37" -tokio = { version = "1.17.0", features = [ +tokio = { version = "1.21.2", features = [ "sync", "rt-multi-thread", "io-util", ] } include_dir = { version = "0.7.2", features = ["glob"] } -async-trait = "^0.1.52" -image = "0.24.1" +async-trait = "^0.1.57" +image = "0.24.4" webp = "0.2.2" -ffmpeg-next = { version = "5.0.3", optional = true, features = [] } +ffmpeg-next = { version = "5.1.1", optional = true, features = [] } sd-ffmpeg = { path = "../crates/ffmpeg", optional = true } sd-file-ext = { path = "../crates/file-ext"} fs_extra = "1.2.0" -tracing = "0.1.35" -tracing-subscriber = { version = "0.3.14", features = ["env-filter"] } +tracing = "0.1.36" +tracing-subscriber = { version = "0.3.15", features = ["env-filter"] } async-stream = "0.3.3" -once_cell = "1.13.0" -ctor = "0.1.22" +once_cell = "1.15.0" +ctor = "0.1.23" globset = { version = "^0.4.9", features = ["serde1"] } -itertools = "^0.10.3" +itertools = "^0.10.5" enumflags2 = "0.7.5" +openssl-sys = "0.9.76" # We don't use this in the core but it exists so that the workspace level patch doesn't complain that the dependency isn't used. + [dev-dependencies] tempfile = "^3.3.0" tracing-test = "^0.2.3" diff --git a/core/src/api/files.rs b/core/src/api/files.rs index 251b5234c..e973fb299 100644 --- a/core/src/api/files.rs +++ b/core/src/api/files.rs @@ -5,42 +5,45 @@ use serde::Deserialize; use super::{utils::LibraryRequest, RouterBuilder}; -#[derive(Type, Deserialize)] -pub struct SetNoteArgs { - pub id: i32, - pub note: Option, -} - -#[derive(Type, Deserialize)] -pub struct SetFavoriteArgs { - pub id: i32, - pub favorite: bool, -} - pub(crate) fn mount() -> RouterBuilder { ::new() - .library_query("readMetadata", |_, _id: i32, _| async move { - #[allow(unreachable_code)] - Ok(todo!()) + .library_query("readMetadata", |t| { + t(|_, _id: i32, _| async move { + #[allow(unreachable_code)] + Ok(todo!()) + }) }) - .library_mutation("setNote", |_, args: SetNoteArgs, library| async move { - library - .db - .object() - .update( - object::id::equals(args.id), - vec![object::note::set(args.note)], - ) - .exec() - .await?; + .library_mutation("setNote", |t| { + #[derive(Type, Deserialize)] + pub struct SetNoteArgs { + pub id: i32, + pub note: Option, + } - invalidate_query!(library, "locations.getExplorerData"); + t(|_, args: SetNoteArgs, library| async move { + library + .db + .object() + .update( + object::id::equals(args.id), + vec![object::note::set(args.note)], + ) + .exec() + .await?; - Ok(()) + invalidate_query!(library, "locations.getExplorerData"); + + Ok(()) + }) }) - .library_mutation( - "setFavorite", - |_, args: SetFavoriteArgs, library| async move { + .library_mutation("setFavorite", |t| { + #[derive(Type, Deserialize)] + pub struct SetFavoriteArgs { + pub id: i32, + pub favorite: bool, + } + + t(|_, args: SetFavoriteArgs, library| async move { library .db .object() @@ -54,17 +57,19 @@ pub(crate) fn mount() -> RouterBuilder { invalidate_query!(library, "locations.getExplorerData"); Ok(()) - }, - ) - .library_mutation("delete", |_, id: i32, library| async move { - library - .db - .object() - .delete(object::id::equals(id)) - .exec() - .await?; + }) + }) + .library_mutation("delete", |t| { + t(|_, id: i32, library| async move { + library + .db + .object() + .delete(object::id::equals(id)) + .exec() + .await?; - invalidate_query!(library, "locations.getExplorerData"); - Ok(()) + invalidate_query!(library, "locations.getExplorerData"); + Ok(()) + }) }) } diff --git a/core/src/api/jobs.rs b/core/src/api/jobs.rs index 95525f3ab..c27092f47 100644 --- a/core/src/api/jobs.rs +++ b/core/src/api/jobs.rs @@ -14,56 +14,56 @@ use std::path::PathBuf; use super::{utils::LibraryRequest, CoreEvent, RouterBuilder}; -#[derive(Type, Deserialize)] -pub struct GenerateThumbsForLocationArgs { - pub id: i32, - pub path: PathBuf, -} - -#[derive(Type, Deserialize)] -pub struct IdentifyUniqueFilesArgs { - pub id: i32, - pub path: PathBuf, -} - pub(crate) fn mount() -> RouterBuilder { ::new() - .library_query("getRunning", |ctx, _: (), _| async move { - Ok(ctx.jobs.get_running().await) + .library_query("getRunning", |t| { + t(|ctx, _: (), _| async move { Ok(ctx.jobs.get_running().await) }) }) - .library_query("getHistory", |_, _: (), library| async move { - Ok(JobManager::get_history(&library).await?) + .library_query("getHistory", |t| { + t(|_, _: (), library| async move { Ok(JobManager::get_history(&library).await?) }) }) - .library_mutation( - "generateThumbsForLocation", - |_, args: GenerateThumbsForLocationArgs, library| async move { - if library - .db - .location() - .count(vec![location::id::equals(args.id)]) - .exec() - .await? == 0 - { - return Err(LocationError::IdNotFound(args.id).into()); - } + .library_mutation("generateThumbsForLocation", |t| { + #[derive(Type, Deserialize)] + pub struct GenerateThumbsForLocationArgs { + pub id: i32, + pub path: PathBuf, + } - library - .spawn_job(Job::new( - ThumbnailJobInit { - location_id: args.id, - path: PathBuf::new(), - background: true, - }, - Box::new(ThumbnailJob {}), - )) - .await; + t( + |_, args: GenerateThumbsForLocationArgs, library| async move { + if library + .db + .location() + .count(vec![location::id::equals(args.id)]) + .exec() + .await? == 0 + { + return Err(LocationError::IdNotFound(args.id).into()); + } - Ok(()) - }, - ) - .library_mutation( - "identifyUniqueFiles", - |_, args: IdentifyUniqueFilesArgs, library| async move { + library + .spawn_job(Job::new( + ThumbnailJobInit { + location_id: args.id, + path: PathBuf::new(), + background: true, + }, + Box::new(ThumbnailJob {}), + )) + .await; + + Ok(()) + }, + ) + }) + .library_mutation("identifyUniqueFiles", |t| { + #[derive(Type, Deserialize)] + pub struct IdentifyUniqueFilesArgs { + pub id: i32, + pub path: PathBuf, + } + + t(|_, args: IdentifyUniqueFilesArgs, library| async move { if fetch_location(&library, args.id).exec().await?.is_none() { return Err(rspc::Error::new( ErrorCode::NotFound, @@ -82,19 +82,21 @@ pub(crate) fn mount() -> RouterBuilder { .await; Ok(()) - }, - ) - .library_subscription("newThumbnail", |ctx, _: (), _| { - // TODO: Only return event for the library that was subscribed to + }) + }) + .library_subscription("newThumbnail", |t| { + t(|ctx, _: (), _| { + // TODO: Only return event for the library that was subscribed to - let mut event_bus_rx = ctx.event_bus.subscribe(); - async_stream::stream! { - while let Ok(event) = event_bus_rx.recv().await { - match event { - CoreEvent::NewThumbnail { cas_id } => yield cas_id, - _ => {} + let mut event_bus_rx = ctx.event_bus.subscribe(); + async_stream::stream! { + while let Ok(event) = event_bus_rx.recv().await { + match event { + CoreEvent::NewThumbnail { cas_id } => yield cas_id, + _ => {} + } } } - } + }) }) } diff --git a/core/src/api/libraries.rs b/core/src/api/libraries.rs index c89e00663..44d0180fc 100644 --- a/core/src/api/libraries.rs +++ b/core/src/api/libraries.rs @@ -12,87 +12,93 @@ use serde::Deserialize; use tokio::fs; use uuid::Uuid; -#[derive(Type, Deserialize)] -pub struct EditLibraryArgs { - pub id: Uuid, - pub name: Option, - pub description: Option, -} - pub(crate) fn mount() -> RouterBuilder { ::new() - .query("list", |ctx, _: ()| async move { - ctx.library_manager.get_all_libraries_config().await + .query("list", |t| { + t(|ctx, _: ()| async move { ctx.library_manager.get_all_libraries_config().await }) }) - .library_query("getStatistics", |_, _: (), library| async move { - let _statistics = library - .db - .statistics() - .find_unique(statistics::id::equals(library.node_local_id)) - .exec() - .await?; + .library_query("getStatistics", |t| { + t(|_, _: (), library| async move { + let _statistics = library + .db + .statistics() + .find_unique(statistics::id::equals(library.node_local_id)) + .exec() + .await?; - // TODO: get from database, not sys - let volumes = get_volumes(); - save_volume(&library).await?; + // TODO: get from database, not sys + let volumes = get_volumes(); + save_volume(&library).await?; - let mut available_capacity: u64 = 0; - let mut total_capacity: u64 = 0; - if volumes.is_ok() { - for volume in volumes? { - total_capacity += volume.total_capacity; - available_capacity += volume.available_capacity; + let mut available_capacity: u64 = 0; + let mut total_capacity: u64 = 0; + if volumes.is_ok() { + for volume in volumes? { + total_capacity += volume.total_capacity; + available_capacity += volume.available_capacity; + } } + + let library_db_size = match fs::metadata(library.config().data_directory()).await { + Ok(metadata) => metadata.len(), + Err(_) => 0, + }; + + let thumbnail_folder_size = + get_size(library.config().data_directory().join("thumbnails")); + + use statistics::*; + let params = vec![ + id::set(1), // Each library is a database so only one of these ever exists + date_captured::set(Utc::now().into()), + total_object_count::set(0), + library_db_size::set(library_db_size.to_string()), + total_bytes_used::set(0.to_string()), + total_bytes_capacity::set(total_capacity.to_string()), + total_unique_bytes::set(0.to_string()), + total_bytes_free::set(available_capacity.to_string()), + preview_media_bytes::set(thumbnail_folder_size.unwrap_or(0).to_string()), + ]; + + Ok(library + .db + .statistics() + .upsert( + statistics::id::equals(1), // Each library is a database so only one of these ever exists + params.clone(), + params, + ) + .exec() + .await?) + }) + }) + .mutation("create", |t| { + t(|ctx, name: String| async move { + Ok(ctx + .library_manager + .create(LibraryConfig { + name: name.to_string(), + ..Default::default() + }) + .await?) + }) + }) + .mutation("edit", |t| { + #[derive(Type, Deserialize)] + pub struct EditLibraryArgs { + pub id: Uuid, + pub name: Option, + pub description: Option, } - let library_db_size = match fs::metadata(library.config().data_directory()).await { - Ok(metadata) => metadata.len(), - Err(_) => 0, - }; - - let thumbnail_folder_size = - get_size(library.config().data_directory().join("thumbnails")); - - use statistics::*; - let params = vec![ - id::set(1), // Each library is a database so only one of these ever exists - date_captured::set(Utc::now().into()), - total_object_count::set(0), - library_db_size::set(library_db_size.to_string()), - total_bytes_used::set(0.to_string()), - total_bytes_capacity::set(total_capacity.to_string()), - total_unique_bytes::set(0.to_string()), - total_bytes_free::set(available_capacity.to_string()), - preview_media_bytes::set(thumbnail_folder_size.unwrap_or(0).to_string()), - ]; - - Ok(library - .db - .statistics() - .upsert( - statistics::id::equals(1), // Each library is a database so only one of these ever exists - params.clone(), - params, - ) - .exec() - .await?) + t(|ctx, args: EditLibraryArgs| async move { + Ok(ctx + .library_manager + .edit(args.id, args.name, args.description) + .await?) + }) }) - .mutation("create", |ctx, name: String| async move { - Ok(ctx - .library_manager - .create(LibraryConfig { - name: name.to_string(), - ..Default::default() - }) - .await?) - }) - .mutation("edit", |ctx, args: EditLibraryArgs| async move { - Ok(ctx - .library_manager - .edit(args.id, args.name, args.description) - .await?) - }) - .mutation("delete", |ctx, id: Uuid| async move { - Ok(ctx.library_manager.delete_library(id).await?) + .mutation("delete", |t| { + t(|ctx, id: Uuid| async move { Ok(ctx.library_manager.delete_library(id).await?) }) }) } diff --git a/core/src/api/locations.rs b/core/src/api/locations.rs index 18754df3d..d5a0b617f 100644 --- a/core/src/api/locations.rs +++ b/core/src/api/locations.rs @@ -9,17 +9,11 @@ use crate::{ prisma::{file_path, indexer_rule, indexer_rules_in_location, location, object, tag}, }; -use rspc::{self, ErrorCode, Type}; +use rspc::{self, internal::MiddlewareBuilderLike, ErrorCode, Type}; use serde::{Deserialize, Serialize}; use tracing::info; -use super::{utils::LibraryRequest, RouterBuilder}; - -#[derive(Serialize, Deserialize, Type, Debug)] -pub struct ExplorerData { - pub context: ExplorerContext, - pub items: Vec, -} +use super::{utils::LibraryRequest, Ctx, RouterBuilder}; #[derive(Serialize, Deserialize, Type, Debug)] #[serde(tag = "type")] @@ -29,9 +23,6 @@ pub enum ExplorerContext { // Space(object_in_space::Data), } -file_path::include!(file_path_with_object { object }); -object::include!(object_with_file_paths { file_paths }); - #[derive(Serialize, Deserialize, Type, Debug)] #[serde(tag = "type")] pub enum ExplorerItem { @@ -39,36 +30,53 @@ pub enum ExplorerItem { Object(Box), } -#[derive(Clone, Serialize, Deserialize, Type, Debug)] -pub struct LocationExplorerArgs { - pub location_id: i32, - pub path: String, - pub limit: i32, - pub cursor: Option, +#[derive(Serialize, Deserialize, Type, Debug)] +pub struct ExplorerData { + pub context: ExplorerContext, + pub items: Vec, } -pub(crate) fn mount() -> RouterBuilder { +file_path::include!(file_path_with_object { object }); +object::include!(object_with_file_paths { file_paths }); + +// TODO(@Oscar): This return type sucks. Add an upstream rspc solution. +pub(crate) fn mount() -> rspc::RouterBuilder< + Ctx, + (), + impl MiddlewareBuilderLike + Send + 'static, +> { ::new() - .library_query("list", |_, _: (), library| async move { - Ok(library - .db - .location() - .find_many(vec![]) - .include(location::include!({ node })) - .exec() - .await?) + .library_query("list", |t| { + t(|_, _: (), library| async move { + Ok(library + .db + .location() + .find_many(vec![]) + .include(location::include!({ node })) + .exec() + .await?) + }) }) - .library_query("getById", |_, location_id: i32, library| async move { - Ok(library - .db - .location() - .find_unique(location::id::equals(location_id)) - .exec() - .await?) + .library_query("getById", |t| { + t(|_, location_id: i32, library| async move { + Ok(library + .db + .location() + .find_unique(location::id::equals(location_id)) + .exec() + .await?) + }) }) - .library_query( - "getExplorerData", - |_, args: LocationExplorerArgs, library| async move { + .library_query("getExplorerData", |t| { + #[derive(Clone, Serialize, Deserialize, Type, Debug)] + pub struct LocationExplorerArgs { + pub location_id: i32, + pub path: String, + pub limit: i32, + pub cursor: Option, + } + + t(|_, args: LocationExplorerArgs, library| async move { let location = library .db .location() @@ -124,119 +132,128 @@ pub(crate) fn mount() -> RouterBuilder { }) .collect(), }) - }, - ) - .library_mutation( - "create", - |_, args: LocationCreateArgs, library| async move { + }) + }) + .library_mutation("create", |t| { + t(|_, args: LocationCreateArgs, library| async move { let location = args.create(&library).await?; scan_location(&library, location).await?; Ok(()) - }, - ) - .library_mutation( - "update", - |_, args: LocationUpdateArgs, library| async move { + }) + }) + .library_mutation("update", |t| { + t(|_, args: LocationUpdateArgs, library| async move { args.update(&library).await.map_err(Into::into) - }, - ) - .library_mutation("delete", |_, location_id: i32, library| async move { - library - .db - .file_path() - .delete_many(vec![file_path::location_id::equals(location_id)]) - .exec() - .await?; - - library - .db - .indexer_rules_in_location() - .delete_many(vec![indexer_rules_in_location::location_id::equals( - location_id, - )]) - .exec() - .await?; - - library - .db - .location() - .delete(location::id::equals(location_id)) - .exec() - .await?; - - invalidate_query!(library, "locations.list"); - - info!("Location {} deleted", location_id); - - Ok(()) + }) }) - .library_mutation("fullRescan", |_, location_id: i32, library| async move { - scan_location( - &library, - fetch_location(&library, location_id) - .include(indexer_job_location::include()) + .library_mutation("delete", |t| { + t(|_, location_id: i32, library| async move { + library + .db + .file_path() + .delete_many(vec![file_path::location_id::equals(location_id)]) .exec() - .await? - .ok_or(LocationError::IdNotFound(location_id))?, - ) - .await - .map_err(Into::into) + .await?; + + library + .db + .indexer_rules_in_location() + .delete_many(vec![indexer_rules_in_location::location_id::equals( + location_id, + )]) + .exec() + .await?; + + library + .db + .location() + .delete(location::id::equals(location_id)) + .exec() + .await?; + + invalidate_query!(library, "locations.list"); + + info!("Location {} deleted", location_id); + + Ok(()) + }) }) - .library_mutation("quickRescan", |_, _: (), _| async move { - #[allow(unreachable_code)] - Ok(todo!()) + .library_mutation("fullRescan", |t| { + t(|_, location_id: i32, library| async move { + scan_location( + &library, + fetch_location(&library, location_id) + .include(indexer_job_location::include()) + .exec() + .await? + .ok_or(LocationError::IdNotFound(location_id))?, + ) + .await + .map_err(Into::into) + }) + }) + .library_mutation("quickRescan", |t| { + t(|_, _: (), _| async move { + #[allow(unreachable_code)] + Ok(todo!()) + }) }) .merge("indexer_rules.", mount_indexer_rule_routes()) } fn mount_indexer_rule_routes() -> RouterBuilder { ::new() - .library_mutation( - "create", - |_, args: IndexerRuleCreateArgs, library| async move { + .library_mutation("create", |t| { + t(|_, args: IndexerRuleCreateArgs, library| async move { args.create(&library).await.map_err(Into::into) - }, - ) - .library_mutation("delete", |_, indexer_rule_id: i32, library| async move { - library - .db - .indexer_rules_in_location() - .delete_many(vec![indexer_rules_in_location::indexer_rule_id::equals( - indexer_rule_id, - )]) - .exec() - .await?; - - library - .db - .indexer_rule() - .delete(indexer_rule::id::equals(indexer_rule_id)) - .exec() - .await?; - - Ok(()) + }) }) - .library_query("get", |_, indexer_rule_id: i32, library| async move { - library - .db - .indexer_rule() - .find_unique(indexer_rule::id::equals(indexer_rule_id)) - .exec() - .await? - .ok_or_else(|| { - rspc::Error::new( - ErrorCode::NotFound, - format!("Indexer rule not found"), - ) - }) + .library_mutation("delete", |t| { + t(|_, indexer_rule_id: i32, library| async move { + library + .db + .indexer_rules_in_location() + .delete_many(vec![indexer_rules_in_location::indexer_rule_id::equals( + indexer_rule_id, + )]) + .exec() + .await?; + + library + .db + .indexer_rule() + .delete(indexer_rule::id::equals(indexer_rule_id)) + .exec() + .await?; + + Ok(()) + }) }) - .library_query("list", |_, _: (), library| async move { - library - .db - .indexer_rule() - .find_many(vec![]) - .exec() - .await - .map_err(Into::into) + .library_query("get", |t| { + t(|_, indexer_rule_id: i32, library| async move { + library + .db + .indexer_rule() + .find_unique(indexer_rule::id::equals(indexer_rule_id)) + .exec() + .await? + .ok_or_else(|| { + rspc::Error::new( + ErrorCode::NotFound, + format!("Indexer rule not found"), + ) + }) + }) + }) + .library_query("list", |t| { + t(|_, _: (), library| async move { + library + .db + .indexer_rule() + .find_many(vec![]) + .exec() + .await + .map_err(Into::into) + }) }) } diff --git a/core/src/api/mod.rs b/core/src/api/mod.rs index 2266bf330..a50376443 100644 --- a/core/src/api/mod.rs +++ b/core/src/api/mod.rs @@ -1,4 +1,5 @@ use std::{ + path::PathBuf, sync::Arc, time::{Duration, Instant}, }; @@ -62,12 +63,14 @@ pub(crate) fn mount() -> Arc { // .export_ts_bindings(PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("./index.ts")), .set_ts_bindings_header("/* eslint-disable */"), ) - .query("version", |_, _: ()| env!("CARGO_PKG_VERSION")) - .query("getNode", |ctx, _: ()| async move { - Ok(NodeState { - config: ctx.config.get().await, - // We are taking the assumption here that this value is only used on the frontend for display purposes - data_path: ctx.config.data_directory().to_string_lossy().into_owned(), + .query("version", |t| t(|_, _: ()| env!("CARGO_PKG_VERSION"))) + .query("getNode", |t| { + t(|ctx, _: ()| async move { + Ok(NodeState { + config: ctx.config.get().await, + // We are taking the assumption here that this value is only used on the frontend for display purposes + data_path: ctx.config.data_directory().to_string_lossy().into_owned(), + }) }) }) .merge("library.", libraries::mount()) @@ -77,46 +80,48 @@ pub(crate) fn mount() -> Arc { .merge("files.", files::mount()) .merge("jobs.", jobs::mount()) // TODO: Scope the invalidate queries to a specific library (filtered server side) - .subscription("invalidateQuery", |ctx, _: ()| { - let mut event_bus_rx = ctx.event_bus.subscribe(); - let mut last = Instant::now(); - async_stream::stream! { - while let Ok(event) = event_bus_rx.recv().await { - match event { - CoreEvent::InvalidateOperation(op) => yield op, - CoreEvent::InvalidateOperationDebounced(op) => { - let current = Instant::now(); - if current.duration_since(last) > Duration::from_millis(1000 / 60) { - last = current; - yield op; - } - }, - _ => {} + .subscription("invalidateQuery", |t| { + t(|ctx, _: ()| { + let mut event_bus_rx = ctx.event_bus.subscribe(); + let mut last = Instant::now(); + async_stream::stream! { + while let Ok(event) = event_bus_rx.recv().await { + match event { + CoreEvent::InvalidateOperation(op) => yield op, + CoreEvent::InvalidateOperationDebounced(op) => { + let current = Instant::now(); + if current.duration_since(last) > Duration::from_millis(1000 / 60) { + last = current; + yield op; + } + }, + _ => {} + } } } - } + }) }) .build() .arced(); InvalidRequests::validate(r.clone()); // This validates all invalidation calls. + export_ts_bindings(&r); r } +pub fn export_ts_bindings(r: &Router) { + r.export_ts(PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("../packages/client/src/core.ts")) + .expect("Error exporting rspc Typescript bindings!"); + r.export_ts( + PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("../apps/mobile/src/types/bindings.ts"), + ) + .expect("Error exporting rspc Typescript bindings!"); +} + #[cfg(test)] mod tests { - use std::path::PathBuf; - /// This test will ensure the rspc router and all calls to `invalidate_query` are valid and also export an updated version of the Typescript bindings. #[test] fn test_and_export_rspc_bindings() { - let r = super::mount(); - r.export_ts( - PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("../packages/client/src/core.ts"), - ) - .expect("Error exporting rspc Typescript bindings!"); - r.export_ts( - PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("../apps/mobile/src/types/bindings.ts"), - ) - .expect("Error exporting rspc Typescript bindings!"); + super::export_ts_bindings(&super::mount()); } } diff --git a/core/src/api/p2p.rs b/core/src/api/p2p.rs new file mode 100644 index 000000000..71cd2420f --- /dev/null +++ b/core/src/api/p2p.rs @@ -0,0 +1,78 @@ +// use std::collections::HashMap; + +// use p2p::PeerId; +// use rspc::Type; +// use serde::Deserialize; + +// use super::{LibraryArgs, RouterBuilder}; + +// #[derive(Type, Deserialize)] +// pub struct AcceptPairingRequestArgs { +// pub peer_id: PeerId, +// pub preshared_key: String, +// } + +// pub(crate) fn mount() -> RouterBuilder { +// RouterBuilder::new() +// .query("getNodes", |ctx, arg: LibraryArgs<()>| async move { +// let (_, library) = arg.get_library(&ctx).await?; + +// Ok( +// library.db.node().find_many(vec![]).exec().await?, // TODO: Make this work +// // .into_iter() +// // .filter_map(|v| { +// // if v.id == ctx.node_local_id { +// // None +// // } else { +// // Some(v.into()) +// // } +// // }) +// // .collect::>() +// ) +// }) +// .query("connectedPeers", |ctx, _: ()| async move { +// ctx.p2p +// .nm +// .connected_peers() +// .into_iter() +// .map(|(_, v)| (v.id, v.metadata)) +// .collect::>() +// }) +// .query("discoveredPeers", |ctx, _: ()| async move { +// ctx.p2p +// .nm +// .discovered_peers() +// .into_iter() +// // TODO: Make this better +// .map(|(_, v)| v) +// .collect::>() +// }) +// .mutation("pairNode", |ctx, arg: LibraryArgs| async move { +// let (peer_id, library) = arg.get_library(&ctx).await?; + +// let preshared_key = ctx.p2p.pair(&library, peer_id).await.unwrap(); + +// // TODO: These aren't library queries so they can't be invalidated with the current system. We can fix this with the normalised cache! +// // invalidate_query!(ctx, "p2p.discoveredPeers": (), ()); +// // invalidate_query!(ctx, "p2p.connectedPeers": (), ()); + +// Ok(preshared_key) +// }) +// .mutation( +// "unpairNode", +// |_, _: LibraryArgs| async move { todo!() }, +// ) +// .mutation( +// "acceptPairingRequest", +// |ctx, arg: AcceptPairingRequestArgs| async move { +// ctx.p2p +// .pairing_requests +// .lock() +// .unwrap() +// .remove(&arg.peer_id) +// .unwrap() +// .send(Ok(arg.preshared_key)) +// .unwrap(); // TODO: Remove unwrap +// }, +// ) +// } diff --git a/core/src/api/tags.rs b/core/src/api/tags.rs index acc727fc5..b69238220 100644 --- a/core/src/api/tags.rs +++ b/core/src/api/tags.rs @@ -12,168 +12,187 @@ use crate::{ use super::{utils::LibraryRequest, RouterBuilder}; -#[derive(Type, Deserialize)] -pub struct TagCreateArgs { - pub name: String, - pub color: String, -} - -#[derive(Debug, Type, Deserialize)] -pub struct TagAssignArgs { - pub object_id: i32, - pub tag_id: i32, - pub unassign: bool, -} - -#[derive(Type, Deserialize)] -pub struct TagUpdateArgs { - pub id: i32, - pub name: Option, - pub color: Option, -} - pub(crate) fn mount() -> RouterBuilder { RouterBuilder::new() - .library_query("list", |_, _: (), library| async move { - Ok(library.db.tag().find_many(vec![]).exec().await?) + .library_query("list", |t| { + t( + |_, _: (), library| async move { Ok(library.db.tag().find_many(vec![]).exec().await?) }, + ) }) - .library_query("getExplorerData", |_, tag_id: i32, library| async move { - info!("Getting files for tag {}", tag_id); + .library_query("getExplorerData", |t| { + t(|_, tag_id: i32, library| async move { + info!("Getting files for tag {}", tag_id); - let tag = library - .db - .tag() - .find_unique(tag::id::equals(tag_id)) - .exec() - .await? - .ok_or_else(|| { - rspc::Error::new(ErrorCode::NotFound, format!("Tag not found")) - })?; + let tag = library + .db + .tag() + .find_unique(tag::id::equals(tag_id)) + .exec() + .await? + .ok_or_else(|| { + rspc::Error::new( + ErrorCode::NotFound, + format!("Tag not found"), + ) + })?; - let files: Vec = library - .db - .object() - .find_many(vec![object::tags::some(vec![ - tag_on_object::tag_id::equals(tag_id), - ])]) - .include(object_with_file_paths::include()) - .exec() - .await? - .into_iter() - .map(|mut object| { - // sorry brendan - // grab the first path and tac on the name - let oldest_path = &object.file_paths[0]; - object.name = Some(oldest_path.name.clone()); - object.extension = oldest_path.extension.clone(); - // a long term fix for this would be to have the indexer give the Object a name and extension, sacrificing its own and only store newly found Path names that differ from the Object name + let objects: Vec = library + .db + .object() + .find_many(vec![object::tags::some(vec![ + tag_on_object::tag_id::equals(tag_id), + ])]) + .include(object_with_file_paths::include()) + .exec() + .await? + .into_iter() + .map(|mut object| { + // sorry brendan + // grab the first path and tac on the name + let oldest_path = &object.file_paths[0]; + object.name = Some(oldest_path.name.clone()); + object.extension = oldest_path.extension.clone(); + // a long term fix for this would be to have the indexer give the Object a name and extension, sacrificing its own and only store newly found Path names that differ from the Object name - let thumb_path = library - .config() - .data_directory() - .join(THUMBNAIL_CACHE_DIR_NAME) - .join(&object.cas_id) - .with_extension("webp"); + let thumb_path = library + .config() + .data_directory() + .join(THUMBNAIL_CACHE_DIR_NAME) + .join(&object.cas_id) + .with_extension("webp"); - object.has_thumbnail = thumb_path.exists(); + object.has_thumbnail = thumb_path.exists(); - ExplorerItem::Object(Box::new(object)) + ExplorerItem::Object(Box::new(object)) + }) + .collect(); + + info!("Got objects {}", objects.len()); + + Ok(ExplorerData { + context: ExplorerContext::Tag(tag), + items: objects, }) - .collect(); - - info!("Got files {}", files.len()); - - Ok(ExplorerData { - context: ExplorerContext::Tag(tag), - items: files, }) }) - .library_query("getForFile", |_, object_id: i32, library| async move { - Ok(library - .db - .tag() - .find_many(vec![tag::tag_objects::some(vec![ - tag_on_object::object_id::equals(object_id), - ])]) - .exec() - .await?) - }) - .library_query("get", |_, tag_id: i32, library| async move { - Ok(library - .db - .tag() - .find_unique(tag::id::equals(tag_id)) - .exec() - .await?) - }) - .library_mutation("create", |_, args: TagCreateArgs, library| async move { - let created_tag = library - .db - .tag() - .create( - Uuid::new_v4().as_bytes().to_vec(), - vec![ - tag::name::set(Some(args.name)), - tag::color::set(Some(args.color)), - ], - ) - .exec() - .await?; - - invalidate_query!(library, "tags.list"); - - Ok(created_tag) - }) - .library_mutation("assign", |_, args: TagAssignArgs, library| async move { - if args.unassign { - library + .library_query("getForObject", |t| { + t(|_, object_id: i32, library| async move { + Ok(library .db - .tag_on_object() - .delete(tag_on_object::tag_id_object_id(args.tag_id, args.object_id)) + .tag() + .find_many(vec![tag::tag_objects::some(vec![ + tag_on_object::object_id::equals(object_id), + ])]) .exec() - .await?; - } else { - library + .await?) + }) + }) + .library_query("get", |t| { + t(|_, tag_id: i32, library| async move { + Ok(library .db - .tag_on_object() + .tag() + .find_unique(tag::id::equals(tag_id)) + .exec() + .await?) + }) + }) + .library_mutation("create", |t| { + #[derive(Type, Deserialize)] + pub struct TagCreateArgs { + pub name: String, + pub color: String, + } + + t(|_, args: TagCreateArgs, library| async move { + let created_tag = library + .db + .tag() .create( - tag::id::equals(args.tag_id), - object::id::equals(args.object_id), - vec![], + Uuid::new_v4().as_bytes().to_vec(), + vec![ + tag::name::set(Some(args.name)), + tag::color::set(Some(args.color)), + ], ) .exec() .await?; + + invalidate_query!(library, "tags.list"); + + Ok(created_tag) + }) + }) + .library_mutation("assign", |t| { + #[derive(Debug, Type, Deserialize)] + pub struct TagAssignArgs { + pub object_id: i32, + pub tag_id: i32, + pub unassign: bool, } - invalidate_query!(library, "tags.getForFile"); + t(|_, args: TagAssignArgs, library| async move { + if args.unassign { + library + .db + .tag_on_object() + .delete(tag_on_object::tag_id_object_id(args.tag_id, args.object_id)) + .exec() + .await?; + } else { + library + .db + .tag_on_object() + .create( + tag::id::equals(args.tag_id), + object::id::equals(args.object_id), + vec![], + ) + .exec() + .await?; + } - Ok(()) + invalidate_query!(library, "tags.getForObject"); + + Ok(()) + }) }) - .library_mutation("update", |_, args: TagUpdateArgs, library| async move { - library - .db - .tag() - .update( - tag::id::equals(args.id), - vec![tag::name::set(args.name), tag::color::set(args.color)], - ) - .exec() - .await?; + .library_mutation("update", |t| { + #[derive(Type, Deserialize)] + pub struct TagUpdateArgs { + pub id: i32, + pub name: Option, + pub color: Option, + } - invalidate_query!(library, "tags.list"); + t(|_, args: TagUpdateArgs, library| async move { + library + .db + .tag() + .update( + tag::id::equals(args.id), + vec![tag::name::set(args.name), tag::color::set(args.color)], + ) + .exec() + .await?; - Ok(()) + invalidate_query!(library, "tags.list"); + + Ok(()) + }) }) - .library_mutation("delete", |_, tag_id: i32, library| async move { - library - .db - .tag() - .delete(tag::id::equals(tag_id)) - .exec() - .await?; + .library_mutation("delete", |t| { + t(|_, tag_id: i32, library| async move { + library + .db + .tag() + .delete(tag::id::equals(tag_id)) + .exec() + .await?; - invalidate_query!(library, "tags.list"); + invalidate_query!(library, "tags.list"); - Ok(()) + Ok(()) + }) }) } diff --git a/core/src/api/utils/library.rs b/core/src/api/utils/library.rs index 4062b94d4..aff888476 100644 --- a/core/src/api/utils/library.rs +++ b/core/src/api/utils/library.rs @@ -1,5 +1,13 @@ +use std::sync::Arc; + use futures::{Future, Stream}; -use rspc::{internal::specta, ErrorCode, IntoLayerResult, Type}; +use rspc::{ + internal::{ + specta, BuiltProcedureBuilder, MiddlewareBuilderLike, RequestResult, + UnbuiltProcedureBuilder, + }, + ErrorCode, Type, +}; use serde::{de::DeserializeOwned, Deserialize, Serialize}; use uuid::Uuid; @@ -12,116 +20,172 @@ pub(crate) struct LibraryArgs { pub arg: T, } +// WARNING: This is system is using internal API's which means it will break between rspc release. I would avoid copying it unless you understand the cost of maintaining it! pub trait LibraryRequest { - fn library_query( + fn library_query( self, key: &'static str, - resolver: fn(Ctx, TArg, LibraryContext) -> TResult, + builder: impl FnOnce( + UnbuiltProcedureBuilder, + ) -> BuiltProcedureBuilder, ) -> Self where - TArg: DeserializeOwned + specta::Type + Send + 'static, - TResult: Future> + Send + 'static, - T: IntoLayerResult + Send + Serialize + specta::Type; + TUnbuiltResolver: Fn(Ctx, TArg, LibraryContext) -> TUnbuiltResult + Send, + TBuiltResolver: Fn(Ctx, TArg, LibraryContext) -> TUnbuiltResult + Send + Sync + 'static, + TUnbuiltResult: RequestResult + Send, + TArg: DeserializeOwned + specta::Type + Send + 'static; - fn library_mutation( + fn library_mutation< + TUnbuiltResolver, + TUnbuiltResult, + TUnbuiltResultMarker, + TBuiltResolver, + TArg, + >( self, key: &'static str, - resolver: fn(Ctx, TArg, LibraryContext) -> TResult, + builder: impl FnOnce( + UnbuiltProcedureBuilder, + ) -> BuiltProcedureBuilder, ) -> Self where - TArg: DeserializeOwned + specta::Type + Send + 'static, - TResult: Future> + Send + 'static, - T: IntoLayerResult + Send + Serialize + specta::Type; + TUnbuiltResolver: Fn(Ctx, TArg, LibraryContext) -> TUnbuiltResult + Send, + TBuiltResolver: Fn(Ctx, TArg, LibraryContext) -> TUnbuiltResult + Send + Sync + 'static, + TUnbuiltResult: RequestResult + Send, + TArg: DeserializeOwned + specta::Type + Send + 'static; - fn library_subscription( + fn library_subscription( self, key: &'static str, - resolver: fn(Ctx, TArg, Uuid) -> T, + builder: impl Fn(UnbuiltProcedureBuilder) -> BuiltProcedureBuilder, ) -> Self where - TArg: DeserializeOwned + specta::Type + Send + 'static, - T: Stream + Send + 'static, - TResult: Serialize + specta::Type; + TArg: DeserializeOwned + specta::Type + 'static, + TStream: Stream + Send + Sync + 'static, + TResult: Serialize + specta::Type, + TResolver: Fn(Ctx, TArg, Uuid) -> TStream + Send + Sync + 'static; } // Note: This will break with middleware context switching but that's fine for now -impl LibraryRequest for rspc::RouterBuilder { - fn library_query( +impl LibraryRequest for rspc::RouterBuilder +where + TMiddleware: MiddlewareBuilderLike + Send + 'static, +{ + fn library_query( self, key: &'static str, - resolver: fn(Ctx, TArg, LibraryContext) -> TResult, + builder: impl FnOnce( + UnbuiltProcedureBuilder, + ) -> BuiltProcedureBuilder, ) -> Self where + TUnbuiltResolver: Fn(Ctx, TArg, LibraryContext) -> TUnbuiltResult + Send, + TBuiltResolver: Fn(Ctx, TArg, LibraryContext) -> TUnbuiltResult + Send + Sync + 'static, + TUnbuiltResult: RequestResult + Send, TArg: DeserializeOwned + specta::Type + Send + 'static, - TResult: Future> + Send + 'static, - T: IntoLayerResult + Send + Serialize + specta::Type, { - self.query(key, move |ctx, arg: LibraryArgs| async move { - let library = ctx - .library_manager - .get_ctx(arg.library_id) - .await - .ok_or_else(|| { - rspc::Error::new( - ErrorCode::BadRequest, - "You must specify a valid library to use this operation.".to_string(), - ) - })?; + self.query(key, move |t| { + let resolver = Arc::new(builder(UnbuiltProcedureBuilder::new(t.data())).resolver); - resolver(ctx, arg.arg, library).await + t(move |ctx, arg: LibraryArgs| { + let resolver = resolver.clone(); + async move { + let library = ctx + .library_manager + .get_ctx(arg.library_id) + .await + .ok_or_else(|| { + rspc::Error::new( + ErrorCode::BadRequest, + "You must specify a valid library to use this operation." + .to_string(), + ) + })?; + + Ok(resolver(ctx, arg.arg, library) + .into_request_future()? + .exec() + .await?) + } + }) }) } - fn library_mutation( + fn library_mutation< + TUnbuiltResolver, + TUnbuiltResult, + TUnbuiltResultMarker, + TBuiltResolver, + TArg, + >( self, key: &'static str, - resolver: fn(Ctx, TArg, LibraryContext) -> TResult, + builder: impl FnOnce( + UnbuiltProcedureBuilder, + ) -> BuiltProcedureBuilder, ) -> Self where + TUnbuiltResolver: Fn(Ctx, TArg, LibraryContext) -> TUnbuiltResult + Send, + TBuiltResolver: Fn(Ctx, TArg, LibraryContext) -> TUnbuiltResult + Send + Sync + 'static, + TUnbuiltResult: RequestResult + Send, TArg: DeserializeOwned + specta::Type + Send + 'static, - TResult: Future> + Send + 'static, - T: IntoLayerResult + Send + Serialize + specta::Type, { - self.mutation(key, move |ctx, arg: LibraryArgs| async move { - let library = ctx - .library_manager - .get_ctx(arg.library_id) - .await - .ok_or_else(|| { - rspc::Error::new( - ErrorCode::BadRequest, - "You must specify a valid library to use this operation.".to_string(), - ) - })?; + self.mutation(key, move |t| { + let resolver = Arc::new(builder(UnbuiltProcedureBuilder::new(t.data())).resolver); - resolver(ctx, arg.arg, library).await + t(move |ctx, arg: LibraryArgs| { + let resolver = resolver.clone(); + async move { + let library = ctx + .library_manager + .get_ctx(arg.library_id) + .await + .ok_or_else(|| { + rspc::Error::new( + ErrorCode::BadRequest, + "You must specify a valid library to use this operation." + .to_string(), + ) + })?; + + Ok(resolver(ctx, arg.arg, library) + .into_request_future()? + .exec() + .await?) + } + }) }) } - fn library_subscription( + fn library_subscription( self, key: &'static str, - resolver: fn(Ctx, TArg, Uuid) -> T, + builder: impl Fn(UnbuiltProcedureBuilder) -> BuiltProcedureBuilder, ) -> Self where - TArg: DeserializeOwned + specta::Type + Send + 'static, - T: Stream + Send + 'static, + TArg: DeserializeOwned + specta::Type + 'static, + TStream: Stream + Send + Sync + 'static, TResult: Serialize + specta::Type, + TResolver: Fn(Ctx, TArg, Uuid) -> TStream + Send + Sync + 'static, { - self.subscription(key, move |ctx, arg: LibraryArgs| { - // TODO: Make this fetch the library like the other functions. This needs upstream rspc work to be supported. - // let library = ctx - // .library_manager - // .get_ctx(arg.library_id) - // .await - // .ok_or_else(|| { - // rspc::Error::new( - // ErrorCode::BadRequest, - // "You must specify a valid library to use this operation.".to_string(), - // ) - // })?; + self.subscription(key, |t| { + let resolver = Arc::new(builder(UnbuiltProcedureBuilder::new(t.data())).resolver); - resolver(ctx, arg.arg, arg.library_id) + t(move |ctx, arg: LibraryArgs| { + // TODO(@Oscar): Upstream rspc work to allow this to work + // let library = ctx + // .library_manager + // .get_ctx(arg.library_id) + // .await + // .ok_or_else(|| { + // rspc::Error::new( + // ErrorCode::BadRequest, + // "You must specify a valid library to use this operation.".to_string(), + // ) + // })?; + + resolver(ctx, arg.arg, arg.library_id) + }) }) } } diff --git a/core/src/api/volumes.rs b/core/src/api/volumes.rs index 6cd783056..f9a9724be 100644 --- a/core/src/api/volumes.rs +++ b/core/src/api/volumes.rs @@ -1,7 +1,7 @@ use crate::volume::get_volumes; -use super::{Router, RouterBuilder}; +use super::RouterBuilder; pub(crate) fn mount() -> RouterBuilder { - ::new().query("list", |_, _: ()| Ok(get_volumes()?)) + RouterBuilder::new().query("list", |t| t(|_, _: ()| Ok(get_volumes()?))) } diff --git a/core/src/lib.rs b/core/src/lib.rs index a8c3264f2..db2ebf73f 100644 --- a/core/src/lib.rs +++ b/core/src/lib.rs @@ -53,6 +53,12 @@ impl Node { // dbg!(get_object_kind_from_extension("png")); + // let (non_blocking, _guard) = tracing_appender::non_blocking(rolling::daily( + // Path::new(&data_dir).join("logs"), + // "log", + // )); + // TODO: Make logs automatically delete after x time https://github.com/tokio-rs/tracing/pull/2169 + tracing_subscriber::registry() .with( EnvFilter::from_default_env() @@ -71,9 +77,19 @@ impl Node { "desktop=debug" .parse() .expect("Error invalid tracing directive!"), - ), + ), // .add_directive( + // "rspc=debug" + // .parse() + // .expect("Error invalid tracing directive!"), + // ), ) .with(fmt::layer().with_filter(CONSOLE_LOG_FILTER)) + // .with( + // Layer::default() + // .with_writer(non_blocking) + // .with_ansi(false) + // .with_filter(LevelFilter::DEBUG), + // ) .init(); let event_bus = broadcast::channel(1024); diff --git a/core/src/node/config.rs b/core/src/node/config.rs index 41d158e9c..21d61ef47 100644 --- a/core/src/node/config.rs +++ b/core/src/node/config.rs @@ -40,6 +40,12 @@ pub struct NodeConfig { pub name: String, // the port this node uses for peer to peer communication. By default a random free port will be chosen each time the application is started. pub p2p_port: Option, + // /// The P2P identity public key + // pub p2p_cert: Vec, + // /// The P2P identity private key + // pub p2p_key: Vec, + // /// The address of the Spacetunnel discovery service being used. + // pub spacetunnel_addr: Option, } #[derive(Error, Debug)] diff --git a/core/src/util/db.rs b/core/src/util/db.rs index 9c600b527..41ceff5b1 100644 --- a/core/src/util/db.rs +++ b/core/src/util/db.rs @@ -29,7 +29,7 @@ pub async fn load_and_migrate(db_url: &str) -> Result Result<(), ThumbnailerError> { .with_film_strip(false) .quality(80.0)? .build(); - + thumbnailer.process("input.mp4", "output.webp").await } -``` \ No newline at end of file +``` diff --git a/crates/p2p/Cargo.toml b/crates/p2p/Cargo.toml index e59d768f9..d6df53c99 100644 --- a/crates/p2p/Cargo.toml +++ b/crates/p2p/Cargo.toml @@ -3,6 +3,26 @@ name = "sd-p2p" version = "0.1.0" edition = "2021" -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - [dependencies] +sd-tunnel-utils = { path = "./tunnel/utils" } + +dashmap = "5.3.4" +rcgen = "0.9.2" +rustls = "0.20.6" +tokio = { version = "1.19.2", features = ["macros", "sync"] } +if-watch = "1.1.1" +thiserror = "1.0.31" +mdns-sd = "0.5.5" +quinn = "0.8.3" +futures-util = "0.3.21" +ts-rs = "6.2.0" +serde = { version = "1.0.138", features = ["derive"] } +bip39 = { version = "1.0.1", features = ["rand"] } +rmp-serde = "1.1.0" +spake2 = "0.3.1" +ctrlc = { version = "3.2.2", features = ["termination"] } +tracing = "0.1.35" +specta = "0.0.2" + +[dev-dependencies] +tokio = { version = "1.19.2", features = ["rt-multi-thread"] } diff --git a/crates/p2p/README.md b/crates/p2p/README.md new file mode 100644 index 000000000..3921329d6 --- /dev/null +++ b/crates/p2p/README.md @@ -0,0 +1,9 @@ +# P2P + +This is the P2P library which powers Spacedrive's P2P functionality. + +## Viewing debug logs + +```bash +RUST_LOG="p2p=debug" cargo run -p server +``` diff --git a/crates/p2p/docs-wip/index.md b/crates/p2p/docs-wip/index.md new file mode 100644 index 000000000..a55446488 --- /dev/null +++ b/crates/p2p/docs-wip/index.md @@ -0,0 +1,74 @@ +# Spacedrive Peer to Peer + +This document outlines the peer to peer protocol used by the Spacedrive desktop application. This document is designed to outlined how the system works and also discuss the security and decision making behind the system. + +## Concepts + +- **Peer** - TODO + +### P2PManager + +The peer to peer library is designed to be general purpose. This means none of the Spacedrive code is directly tied into the peer to peer library. This makes for a very nice separation of concerns but also introduces the requirement for an abstraction to sit above the P2P library so it can properly make decisions with the data that Spacedrive holds. This is where the `P2PManager` trait comes in. You must implement the `P2PManager` trait in your application code and then the peer to peer system will call various hooks, allowing your system to react to various events. + +The `P2PManager` is implemented as a Rust trait which works very well for allowing the application to hook into the peer to peer system, however, in Rust async functions are not properly supported in traits. This is works very well when combined with an `tokio::mpsc::unbound_channel()` implemented in your application, so that you can run async code in response to a specific situtation. The only expect to syncronus methods is the `peer_paired` method as we want to be sure that the peer was properly saved into the database on both sides. This method returns a `Pin>>>`. + +It's important we maintain a good separation between the `P2PManager` and the application which is using it. This led to to the decision to make the P2P system focusing on getting a stream of bytes (`Vec`) between peers. This means the P2P system does not enforce a specific serialization method for your data, this gives you the choice in your application layer to choice whatever works best for the type of data you are going to be sending. This also means you are responsible for data compression. We use the [`rmp_serde`](https://crates.io/crates/rmp-serde) crate (which uses [msgpack](https://msgpack.org/index.html)) internally to send data between clients, and would reccomend it in your application however, this decision is entirely up to you. + +### Identity keypair + +Unpon installing Spacedrive your application with generate a public and private key paired which is called the identity keypair. These certificates facilitate secure communication and identify the client to other peers. + +### Peer ID's + +Each peer has a unique identifier which is called a peer id. This identifier is derived from a [SHA-1](https://en.wikipedia.org/wiki/SHA-1) hash of the identity keypair's public key. + +**Note: We might change from SHA-1 to SHA-255 or SHA-256 in the near future. The current limitation is the maximum size of a DNS TXT record. No known SHA-1 collisions exist for certificates but given SHA-1 has been broken it would be preferable to use something more secure.** + +## Discovery + +Discovery is the first phase of the peer to peer process. The goal of discovery is to determine a list of other peers which we could potentially pair to. This phase is made up of multiple different protocol and the result of all of the systems are combined and returned to the application. + +### LAN + +To discovery other machines running Spacedrive over your local network, we make use of [mDNS](). mDNS is a protocol which transmits DNS packets using multicast UDP which allows a DNS record to be published to your local network and read by other devices on the network. This system is used commonly by other systems with similar goals such as [libp2p]() and [Apple's Airplay](). We are using [DNS-SD]() which makes use of DNS SRV and TXT records to advertise information about the current peer. + +Spacedrive advertise a SRV record that looks like: + +_{peer_id}\_spacedrive_._udp_.local. 86400 IN SRV 10 5 5223 server.example.com. + +This system will continue to passively discover clients while Spacedrive is running. + +### Global Discovery + +The global discovery system works in a different way. TODO + +#### Announcement + +TODO: Discuss proto + security + +```rust +Message::ClientAnnouncement { peer_id, addresses: vec!["192.168.0.1".to_string(), "1.1.1.1".to_string()] } +``` + +#### Query + +TODO + +```rust +Message::QueryClientAnnouncement(vec![peer_id, peer_id2]); +``` + +## General Overview + +This system is designed on top of the following main technologies: + +- [QUIC]() - A tcp-like protocol built on top of UDP. QUIC also supports [TLS 1.3]() for encryption and pro + +## Pairing + +TODO + +# External Resources + +- TODO: Magic Wormhole talk +- TODO: Syncthing spec diff --git a/crates/p2p/examples/basic.rs b/crates/p2p/examples/basic.rs new file mode 100644 index 000000000..5f3f0e4db --- /dev/null +++ b/crates/p2p/examples/basic.rs @@ -0,0 +1,120 @@ +use std::{env, time::Duration}; + +use p2p::{Identity, NetworkManager, NetworkManagerConfig, P2PManager, Peer, PeerId, PeerMetadata}; +use quinn::{RecvStream, SendStream}; +use tokio::sync::mpsc::{unbounded_channel, UnboundedSender}; + +#[derive(Debug, Clone)] +pub enum P2PEvent { + PeerDiscovered(PeerId), + PeerExpired(PeerId), + PeerConnected(PeerId), + PeerDisconnected(PeerId), +} + +// SdP2PManager is part of your application and allows you to hook into the behavior of the P2PManager. +#[derive(Clone)] +pub struct SdP2PManager { + // peer_name is the name of the current peer. In a normal application this would be a display name set by the end user. + peer_name: String, + /// event_channel is used to send events to the application + event_channel: UnboundedSender, +} + +impl P2PManager for SdP2PManager { + const APPLICATION_NAME: &'static str = "spacedrive"; + + fn get_metadata(&self) -> PeerMetadata { + PeerMetadata { + name: self.peer_name.clone(), + version: Some(env!("CARGO_PKG_VERSION").into()), + operating_system: todo!(), + } + } + + fn peer_discovered(&self, nm: &NetworkManager, peer_id: &PeerId) { + self.event_channel + .send(P2PEvent::PeerDiscovered(peer_id.clone())); + nm.add_known_peer(peer_id.clone()); // Be careful doing this in a production application because it will just trust all clients + } + + fn peer_expired(&self, nm: &NetworkManager, peer_id: PeerId) { + self.event_channel.send(P2PEvent::PeerExpired(peer_id)); + } + + fn peer_connected(&self, nm: &NetworkManager, peer_id: PeerId) { + self.event_channel.send(P2PEvent::PeerConnected(peer_id)); + } + + fn peer_disconnected(&self, nm: &NetworkManager, peer_id: PeerId) { + self.event_channel.send(P2PEvent::PeerDisconnected(peer_id)); + } + + fn accept_stream(&self, peer: &Peer, (mut tx, mut rx): (SendStream, RecvStream)) { + let peer = peer.clone(); + tokio::spawn(async move { + let msg = rx.read_chunk(1024, true).await.unwrap().unwrap(); + println!("Received '{:?}' from peer '{}'", msg.bytes, peer.id); + tx.write(b"Pong").await.unwrap(); + }); + } +} + +#[tokio::main] +async fn main() { + let identity = Identity::new().unwrap(); + let peer_id = PeerId::from_cert(&identity.clone().into_rustls().0); + let mut event_channel = unbounded_channel(); + let nm = NetworkManager::new( + identity, + SdP2PManager { + peer_name: format!( + "{}-{}", + peer_id + .to_string() + .chars() + .into_iter() + .take(5) + .collect::(), + env::consts::OS + ), + event_channel: event_channel.0, + }, + NetworkManagerConfig { + known_peers: Default::default(), + listen_port: None, + }, + ) + .await + .unwrap(); + println!( + "Peer '{}' listening on: {:?}", + nm.peer_id(), + nm.listen_addr() + ); + + loop { + tokio::select! { + event = event_channel.1.recv() => { + if let Some(event) = event { + println!("{:?}", event); + + match event { + P2PEvent::PeerConnected(peer_id) => { + nm.send_to(peer_id, b"Ping on Connection").await.unwrap(); + } + _ => {} + } + } + } + _ = tokio::time::sleep(Duration::from_secs(5)) => { + println!(""); + for (peer_id, peer) in nm.connected_peers() { + println!("Sending ping to '{:?}'", peer_id); + let resp = nm.send_to(peer_id, b"Ping").await.unwrap(); + println!("Peer '{}' responded to ping with message '{:?}'", peer.id, resp.bytes); + } + } + }; + } +} diff --git a/crates/p2p/src/discovery/global_discovery.rs b/crates/p2p/src/discovery/global_discovery.rs new file mode 100644 index 000000000..8dd48f6f8 --- /dev/null +++ b/crates/p2p/src/discovery/global_discovery.rs @@ -0,0 +1,86 @@ +/// The functions in this file are predominantly useless in the current system. This will be fixed in a future PR's. +use std::sync::Arc; + +use sd_tunnel_utils::{Client, Message}; +use tracing::warn; + +use crate::{NetworkManager, NetworkManagerError, P2PManager}; + +/// GlobalDiscovery is the discovery system for discovering devices which are not on the same local network as you. +/// This is done through the Spacetunnel server hosted by Spacedrive Inc. it could however be hosted by anyone and documentation for doing so will be released in the future once we are confident in the current design. +pub(crate) struct GlobalDiscovery { + nm: Arc>, + client: Client, +} + +impl GlobalDiscovery { + pub fn init(nm: &Arc>) -> Result { + tracing::debug!("Starting mdns discovery service"); + + if let Some(url) = &nm.spacetunnel_url { + Ok(Self { + nm: nm.clone(), + client: Client::new(url.clone(), nm.endpoint.clone(), nm.identity.clone()), + }) + } else { + panic!("Why no Spacetunnel? (~_^)"); + // TODO: Refactor to allow the system to work without Spacetunnel enabled. + } + } + + pub async fn poll(&self) { + tracing::debug!("Polling global discovery service"); + + // TODO: Allow the tunnel server to accept a list of PeerId's instead of doing heaps of requests + let peers = self.nm.known_peers.iter().map(|v| v.clone()).collect(); + match self + .client + .send_message(Message::QueryClientAnnouncement(peers)) + .await + { + Ok(_) => { + tracing::debug!("Successfully sent query announcement"); + } + Err(err) => { + warn!( + "[TODO: WIP FEATURE REPORTED ERROR] Spacetunnel failed lookup peers with error: {:?}", + err + ); + // TODO: Handle error when this is implemented. + } + } + + // TODO: Handle error from discovery service + // self.nm.discovered_peers.insert(key, value); // TODO: make this work + // TODO: Open connection to peers if they are not already connected + } + + pub async fn register(&self) { + // TODO: Send the metadata along with the discovery payload + // TODO: Only do announcement if data has changed or it's been over 10 minutes since last packet + + let announcement = Message::ClientAnnouncement { + peer_id: self.nm.peer_id.clone(), + addresses: self.nm.lan_addrs.iter().map(|v| v.to_string()).collect(), // TODO: Include STUN address in this list + }; + tracing::debug!( + "Registering self with global discovery service: {:?}", + announcement + ); + + match self.client.send_message(announcement).await { + Ok(_) => tracing::debug!("Successfully registered with global discovery service"), + Err(err) => { + warn!("[TODO: WIP FEATURE REPORTED ERROR] Spacetunnel failed announcement with error: {:?}", err); + // TODO: Handle error when this is implemented. + } + } + + // TODO: Handle error from discovery service + } + + pub(crate) fn shutdown(&self) { + tracing::debug!("Shutting down gloval discovery service"); + // TODO: Remove the announcement from the tunnel + } +} diff --git a/crates/p2p/src/discovery/mdns.rs b/crates/p2p/src/discovery/mdns.rs new file mode 100644 index 000000000..17910f316 --- /dev/null +++ b/crates/p2p/src/discovery/mdns.rs @@ -0,0 +1,147 @@ +use std::{net::Ipv4Addr, sync::Arc}; + +use mdns_sd::{Receiver, ServiceDaemon, ServiceEvent, ServiceInfo}; +use sd_tunnel_utils::PeerId; +use tracing::warn; + +use crate::{NetworkManager, NetworkManagerError, P2PManager, PeerCandidate, PeerMetadata}; + +/// MDNS is the discovery system used for over local networks. It makes use of Multicast DNS (mDNS) to discover peers. +/// It should also conforms to the mDNS SD specification. +pub(crate) struct Mdns { + nm: Arc>, + mdns: ServiceDaemon, + browser: Receiver, + service_type: String, +} + +impl Mdns { + pub fn init(nm: &Arc>) -> Result { + tracing::debug!("Starting mdns discovery service"); + let mdns = ServiceDaemon::new()?; + let service_type = format!("_{}._udp.local.", TP2PManager::APPLICATION_NAME); + + Ok(Self { + nm: nm.clone(), + browser: mdns.browse(&service_type)?, + mdns, + service_type, + }) + } + + pub async fn handle_mdns_event(&self) { + match self.browser.recv_async().await { + Ok(event) => { + tracing::debug!("Handling incoming mdns event: {:?}", event); + match event { + ServiceEvent::SearchStarted(_) => {} + ServiceEvent::ServiceFound(_, _) => {} + ServiceEvent::ServiceResolved(info) => { + let raw_peer_id = info + .get_fullname() + .replace(&format!(".{}", self.service_type), ""); + match PeerId::from_string(raw_peer_id.clone()) { + Ok(peer_id) => { + // Prevent discovery of the current peer. + if peer_id == self.nm.peer_id { + return; + } + + let peer = PeerCandidate { + id: peer_id.clone(), + metadata: PeerMetadata::from_hashmap( + &peer_id, + info.get_properties(), + ), + addresses: info.get_addresses().iter().copied().collect(), + port: info.get_port(), + }; + + self.nm.add_discovered_peer(peer); + } + Err(_) => { + warn!( + "resolved peer advertising itself with an invalid peer_id '{}'", + raw_peer_id + ); + } + } + } + ServiceEvent::ServiceRemoved(_, fullname) => { + let raw_peer_id = fullname.replace(&format!(".{}", self.service_type), ""); + match PeerId::from_string(raw_peer_id.clone()) { + Ok(peer_id) => { + // Prevent discovery of the current peer. + if peer_id == self.nm.peer_id { + return; + } + + self.nm.remove_discovered_peer(peer_id); + } + Err(_) => { + warn!( + "resolved peer advertising itself with an invalid peer_id '{}'", + raw_peer_id + ); + } + } + } + ServiceEvent::SearchStopped(_) => {} + } + } + Err(err) => { + tracing::warn!( + "Error receiving MDNS event as the ServiceDaemon has been shut down: {:?}", + err + ); + tracing::info!("Error receiving MDNS event as the ServiceDaemon has been shut down. Local discovery has been disabled, please restart your app to re-enable local discovery!"); + } + } + } + + pub async fn register(&self) { + let peer_id_str = &self.nm.peer_id.to_string(); + let service_info = ServiceInfo::new( + &self.service_type, + peer_id_str, + &format!("{}.", peer_id_str), + &(self + .nm + .lan_addrs + .iter() + .map(|v| *v) + .collect::>())[..], + self.nm.listen_addr.port(), + Some(self.nm.manager.get_metadata().to_hashmap()), + ); + tracing::debug!("Registering mdns service entry: {:?}", service_info); + + match service_info { + Ok(service_info) => match self.mdns.register(service_info) { + Ok(_) => {} + Err(err) => { + warn!("failed to register mdns service: {}", err); + } + }, + Err(err) => { + warn!("failed to register mdns service: {}", err); + } + } + } + + /// shutdown shuts down the MDNS service. This will advertise the current peer as unavailable to the rest of the network. + pub(crate) fn shutdown(&self) { + tracing::debug!("Shutting down mdns discovery service"); + + // The panics caused by `.expect` are acceptable here because they are run during shutdown where nothing can be done if they were to fail. + self.mdns + .unregister(&format!("{}.{}", self.nm.peer_id, self.service_type)) + .expect("Error unregistering the mDNS service") + .recv() + .expect("Error unregistering the mDNS service"); + + self.mdns + .shutdown() + .expect("Error shutting down mDNS service"); + } +} diff --git a/crates/p2p/src/discovery/mod.rs b/crates/p2p/src/discovery/mod.rs new file mode 100644 index 000000000..ff33f241e --- /dev/null +++ b/crates/p2p/src/discovery/mod.rs @@ -0,0 +1,7 @@ +mod global_discovery; +mod mdns; +mod stack; + +pub(crate) use global_discovery::*; +pub(crate) use mdns::*; +pub(crate) use stack::*; diff --git a/crates/p2p/src/discovery/stack.rs b/crates/p2p/src/discovery/stack.rs new file mode 100644 index 000000000..451dfdfe1 --- /dev/null +++ b/crates/p2p/src/discovery/stack.rs @@ -0,0 +1,32 @@ +use std::sync::Arc; + +use crate::{GlobalDiscovery, Mdns, NetworkManager, NetworkManagerError, P2PManager}; + +/// Represents a stack of all of the different discovery mechanisms that are used by the P2P library. +/// Traits are not used due to Rust's current lack of proper support for async traits. +pub(crate) struct DiscoveryStack { + pub mdns: Arc>, + pub global: Arc>, +} + +impl DiscoveryStack { + pub async fn new(nm: &Arc>) -> Result { + let global = Arc::new(GlobalDiscovery::init(nm)?); + global.poll().await; + + Ok(Self { + mdns: Arc::new(Mdns::init(nm)?), + global, + }) + } + + pub async fn register(&self) { + self.mdns.register().await; + self.global.register().await; + } + + pub fn shutdown(&self) { + self.mdns.shutdown(); + self.global.shutdown(); + } +} diff --git a/crates/p2p/src/lib.rs b/crates/p2p/src/lib.rs new file mode 100644 index 000000000..ad147eae5 --- /dev/null +++ b/crates/p2p/src/lib.rs @@ -0,0 +1,17 @@ +mod discovery; +mod network_manager; +mod p2p_manager; +mod peer; +mod utils; + +pub(crate) use discovery::*; +pub use network_manager::*; +pub use p2p_manager::*; +pub use peer::*; +pub use sd_tunnel_utils::{read_value, write_value, PeerId}; +pub use utils::*; + +/// We reexport some types from `quinn` to avoid the user needing to add `quinn` and keep its version in sync with the p2p library. +pub mod quinn { + pub use quinn::{RecvStream, SendStream}; +} diff --git a/crates/p2p/src/main.rs b/crates/p2p/src/main.rs deleted file mode 100644 index a30eb952c..000000000 --- a/crates/p2p/src/main.rs +++ /dev/null @@ -1,3 +0,0 @@ -fn main() { - println!("Hello, world!"); -} diff --git a/crates/p2p/src/network_manager/mod.rs b/crates/p2p/src/network_manager/mod.rs new file mode 100644 index 000000000..a9e2d89fa --- /dev/null +++ b/crates/p2p/src/network_manager/mod.rs @@ -0,0 +1,13 @@ +mod nm; +mod nm_config; +mod nm_error; +mod nm_internal; +mod nm_server; +mod proto; + +pub use nm::*; +pub use nm_config::*; +pub use nm_error::*; +pub use nm_internal::*; +pub use nm_server::*; +pub use proto::*; diff --git a/crates/p2p/src/network_manager/nm.rs b/crates/p2p/src/network_manager/nm.rs new file mode 100644 index 000000000..4b57a2a2e --- /dev/null +++ b/crates/p2p/src/network_manager/nm.rs @@ -0,0 +1,439 @@ +use std::{ + collections::HashMap, + net::{Ipv4Addr, SocketAddr}, + sync::Arc, + time::Duration, +}; + +use bip39::{Language, Mnemonic}; +use dashmap::{DashMap, DashSet}; +use futures_util::future::join_all; +use quinn::{Chunk, Endpoint, NewConnection, RecvStream, SendStream, ServerConfig}; +use rustls::{Certificate, PrivateKey}; +use sd_tunnel_utils::{quic, write_value, PeerId, UtilError}; +use spake2::{Ed25519Group, Password, Spake2}; +use thiserror::Error; +use tokio::sync::{mpsc, oneshot}; +use tracing::{debug, error, warn}; + +use crate::{ + ConnectError, ConnectionEstablishmentPayload, ConnectionType, Identity, NetworkManagerConfig, + NetworkManagerError, NetworkManagerInternalEvent, P2PManager, PairingParticipantType, + PairingPayload, Peer, PeerCandidate, +}; + +/// Is the core of the P2P Library. It manages listening for and creating P2P network connections and also provides a nice API for the application embedding this library to interface with. +pub struct NetworkManager { + /// PeerId is the unique identifier of the current peer. + pub(crate) peer_id: PeerId, + /// identity is the TLS identity of the current peer. + pub(crate) identity: (Certificate, PrivateKey), + /// known_peers contains a list of all peers which are known to the network. These will be automatically connected if found. + /// We store these so when making a request to the global discovery server we know who to lookup. + pub(crate) known_peers: DashSet, + /// discovered_peers contains a list of all peers which have been discovered by any discovery mechanism. + discovered_peers: DashMap, + /// connected_peers + connected_peers: DashMap>, + /// lan_addrs contains a list of all local addresses which exists on the current peer. + pub(crate) lan_addrs: DashSet, + /// listen_addr contains the address which the current peer is listening on. This peer will listening on IPv4 and IPv6 on a random port if none was provided at startup. + pub(crate) listen_addr: SocketAddr, + /// manager is a trait which implements P2PManager and is used so the NetworkManager can interact with the host application. + pub(crate) manager: TP2PManager, + /// endpoint is the QUIC endpoint that is used to send and receive network traffic between peers. + pub(crate) endpoint: Endpoint, + /// spacetunnel_server is the URL used to lookup information about the Spacetunnel server to establish a connection with. + pub(crate) spacetunnel_url: Option, + /// internal_channel is a channel which is used to communicate with the main internal event loop. + internal_channel: mpsc::UnboundedSender, +} + +impl NetworkManager { + /// Initalise a new network manager for your application. + /// Be aware this will create a separate thread running the P2P manager event loop so this should really only be run once per application. + pub async fn new( + identity: Identity, + manager: TP2PManager, + config: NetworkManagerConfig, + ) -> Result, NetworkManagerError> { + debug!("Creating new NetworkManager..."); + + if !TP2PManager::APPLICATION_NAME + .chars() + .all(char::is_alphanumeric) + { + return Err(NetworkManagerError::InvalidAppName); + } + + let identity = identity.into_rustls(); + let (endpoint, incoming) = Endpoint::server( + ServerConfig::with_crypto(Arc::new(quic::server_config( + vec![identity.0.clone()], + identity.1.clone(), + )?)), + format!("[::]:{}", config.listen_port.unwrap_or(0)) + .parse() + .expect("unreachable error: invalid connection address. Please report if you encounter this error!"), + ) + .map_err(NetworkManagerError::Server)?; + + let internal_channel = mpsc::unbounded_channel(); + let this = Arc::new(Self { + peer_id: PeerId::from_cert(&identity.0), + identity, + known_peers: config.known_peers.into_iter().collect(), + discovered_peers: DashMap::new(), + connected_peers: DashMap::new(), + lan_addrs: DashSet::new(), + listen_addr: endpoint.local_addr().map_err(NetworkManagerError::Server)?, + manager, + endpoint, + spacetunnel_url: config.spacetunnel_url, + internal_channel: internal_channel.0, + }); + Self::event_loop(&this, incoming, internal_channel.1).await?; + Ok(this) + } + + pub(crate) fn add_discovered_peer(&self, peer: PeerCandidate) { + debug!("Discovered peer: {:?}", peer); + self.discovered_peers.insert(peer.id.clone(), peer.clone()); + self.manager.peer_discovered(self, &peer.id); + + if self.known_peers.contains(&peer.id) { + match self + .internal_channel + .send(NetworkManagerInternalEvent::Connect(peer)) + { + Ok(_) => {} + Err(err) => { + error!("Failed to send on internal_channel: {:?}", err); + } + } + } + } + + pub(crate) fn remove_discovered_peer(&self, peer_id: PeerId) { + debug!("Removing discovered peer: {:?}", peer_id); + self.discovered_peers.remove(&peer_id); + self.manager.peer_expired(self, peer_id); + } + + pub(crate) fn get_discovered_peer(&self, peer_id: &PeerId) -> Option { + self.discovered_peers.get(peer_id).map(|v| v.clone()) + } + + pub(crate) fn is_peer_connected(&self, peer_id: &PeerId) -> bool { + self.connected_peers.contains_key(peer_id) + } + + pub(crate) fn add_connected_peer(&self, peer: Peer) { + debug!("Connected with peer: {:?}", peer); + let peer_id = peer.id.clone(); + self.connected_peers.insert(peer.id.clone(), peer); + self.manager.peer_connected(self, peer_id); + } + + pub(crate) fn remove_connected_peer(&self, peer_id: PeerId) { + debug!("Disconnected with peer: {:?}", peer_id); + self.connected_peers.remove(&peer_id); + self.manager.peer_disconnected(self, peer_id); + } + + /// returns the peer ID of the current peer. These are unique identifier derived from the peers public key. + pub fn peer_id(&self) -> PeerId { + self.peer_id.clone() + } + + /// returns the address that the NetworkManager will listen on for incoming connections from other peers. + pub fn listen_addr(&self) -> SocketAddr { + self.listen_addr + } + + /// adds a new peer to the known peers list. This will cause the NetworkManager to attempt to connect to the peer if it is discovered. + pub fn add_known_peer(&self, peer_id: PeerId) { + debug!("Adding '{:?}' as a known peer", peer_id); + self.known_peers.insert(peer_id.clone()); + + match self + .internal_channel + .send(NetworkManagerInternalEvent::NewKnownPeer(peer_id)) + { + Ok(_) => {} + Err(err) => { + error!("Failed to send on internal_channel: {:?}", err); + } + } + } + + /// send a single message to a peer and await a single response. This is good for quick one-off communications but any longer term communication should be done with a stream. + /// TODO: Error type + pub async fn send_to(&self, peer_id: PeerId, data: &[u8]) -> Result { + debug!("Sending message to '{:?}'", peer_id); + + tokio::time::sleep(Duration::from_millis(500)).await; // TODO: Fix this issue. This workaround is because DashMap is eventually consistent + + let peer = self + .connected_peers + .get(&peer_id) + .ok_or(NMError::PeerNotConnected)? + .value() + .clone(); + let (mut tx, mut rx) = peer.conn.open_bi().await?; + tx.write(data).await?; + let (oneshot_tx, oneshot_rx) = oneshot::channel(); + tokio::spawn(async move { + // TODO: Max length of packet should be a constant in tunnel-utils::quic + match rx.read_chunk(64 * 1024, true).await { + Ok(Some(data)) => match oneshot_tx.send(data) { + Ok(_) => match tx.finish().await { + Ok(_) => {} + Err(err) => { + warn!("Failed to finish connection: {:?}", err); + } + }, + Err(_) => { + error!("Failed to transmit result back to `NetworkManager::send_to` using oneshot! `send_to` will timeout and this error can be ignored."); + } + }, + Ok(None) => {} + Err(err) => { + warn!( + "Failed to read from stream with peer '{}': {:?}", + peer.id, err + ); + } + } + }); + // TODO: add timeout for oneshot + Ok(oneshot_rx.await?) + } + + pub fn broadcast(self: &Arc, data: Vec) { + let mut connections = Vec::with_capacity(self.connected_peers.len()); + for peer in self.connected_peers.iter() { + connections.push(( + peer.key().clone(), + peer.value().conn.open_bi(), + data.clone(), + )); + } + let connections = connections + .into_iter() + .map(move |(peer_id, conn, data)| async move { + match conn.await { + Ok((mut tx, _)) => match tx.write(&data).await { + Ok(_) => {} + Err(err) => { + warn!( + "Failed to write to stream with peer '{}': {:?}", + peer_id, err + ); + } + }, + Err(err) => { + warn!( + "Failed to write to stream with peer '{}': {:?}", + peer_id, err + ); + } + } + }); + + tokio::spawn(join_all(connections)); + } + + /// stream will return the tx and rx channel to a new stream with a remote peer. + /// Be aware that when you drop the rx channel, the stream will be closed and any data in transit will be lost. + pub async fn stream(&self, peer_id: &PeerId) -> Result<(SendStream, RecvStream), NMError> { + debug!("Opening stream with peer '{:?}'", peer_id); + + Ok(self + .connected_peers + .get(peer_id) + .ok_or(NMError::PeerNotConnected)? + .conn + .open_bi() + .await?) + } + + /// returns a list of the connected peers. + pub fn connected_peers(&self) -> HashMap> { + self.connected_peers.clone().into_iter().collect() + } + + /// returns a list of the discovered peers. + pub fn discovered_peers(&self) -> HashMap { + self.discovered_peers.clone().into_iter().collect() + } + + // initiate_pairing_with_peer will initiate a pairing with a peer. + // This will cause the NetworkManager to attempt to connect to the peer if it is discovered and if it is, verify the preshared_key using PAKE before telling the [crate::P2PManager] that the pairing is complete. + pub async fn initiate_pairing_with_peer( + self: &Arc, + remote_peer_id: PeerId, + extra_data: HashMap, + ) -> Result { + debug!("Starting pairing with '{:?}'", remote_peer_id); + + // TODO: Ensure we are not already paired with the peer + + let candidate = self + .discovered_peers + .get(&remote_peer_id) + .ok_or(NMError::PeerNotFound)? + .clone(); + + let m = Mnemonic::generate_in( + Language::English, + 24, /* This library doesn't work with any number here for some reason */ + )?; + let preshared_key: String = m.word_iter().take(4).collect::>().join("-"); + + let (spake, pake_msg) = Spake2::::start_a( + &Password::new(preshared_key.as_bytes()), + &spake2::Identity::new(self.peer_id.as_bytes()), + &spake2::Identity::new(remote_peer_id.as_bytes()), + ); + + let NewConnection { + connection, + bi_streams, + .. + } = Self::connect_to_peer_internal(&self.clone(), candidate).await?; + + let (mut tx, mut rx) = connection.open_bi().await?; + + write_value( + &mut tx, + &ConnectionEstablishmentPayload::PairingRequest { + pake_msg, + metadata: self.manager.get_metadata(), + extra_data: extra_data.clone(), + }, + ) + .await?; + + let nm = self.clone(); + tokio::spawn(async move { + // TODO: Timeout if reading chunk is not quick + + // TODO: Get max chunk size from constant. + let data = match rx.read_chunk(64 * 1024, true).await { + Ok(Some(data)) => data, + Ok(None) => { + warn!("connection closed before we could read from it!"); + return; + } + Err(err) => { + warn!("error reading from connection: {}", err); + return; + } + }; + + let payload = match rmp_serde::decode::from_read(&data.bytes[..]) { + Ok(payload) => payload, + Err(err) => { + warn!("error decoding pairing payload: {}", err); + return; + } + }; + + match payload { + PairingPayload::PairingAccepted { pake_msg, metadata } => { + match spake.finish(&pake_msg) { + Ok(_) => {} // We only use SPAKE2 to ensure the current connection is to the peer we expect, hence we don't use the key which is returned. + Err(err) => { + warn!( + "error pairing with peer. Connection has been tampered with! err: {:?}", + err + ); + return; + } + }; + + let resp = match nm + .manager + .peer_paired( + &nm, + PairingParticipantType::Initiator, + &remote_peer_id, + &metadata, + &extra_data, + ) + .await + { + Ok(_) => PairingPayload::PairingComplete, + Err(err) => { + warn!("p2p manager error: {:?}", err); + PairingPayload::PairingFailed + } + }; + + match write_value(&mut tx, &resp).await { + Ok(_) => {} + Err(err) => { + warn!( + "error encoding and sending pairing response to connection: {}", + err + ); + return; + } + } + + match Peer::new( + ConnectionType::Client, + remote_peer_id, + connection, + metadata, + nm, + ) + .await + { + Ok(peer) => { + tokio::spawn(peer.handler(bi_streams)); + } + Err(err) => { + warn!("error creating peer: {:?}", err); + } + } + } + PairingPayload::PairingFailed => { + panic!("Pairing failed"); + + // TODO + // self.manager + // .peer_paired_rollback(&self, &remote_peer_id, &extra_data) + // .await; + + // TODO: emit event to frontend + } + _ => panic!("Invalid request!"), + } + }); + + Ok(preshared_key) + } +} + +// TODO: rename + docs +#[derive(Error, Debug)] +pub enum NMError { + #[error("The peer is not currently connected")] + PeerNotConnected, + #[error("The peer could not be found")] + PeerNotFound, + #[error("Error communicating with peer")] + ConnectionError(#[from] quinn::ConnectionError), + #[error("Error communicating with peer")] + UtilError(#[from] UtilError), + #[error("Internal error receiving result from oneshot")] + RecvError(#[from] oneshot::error::RecvError), + #[error("Error writing message to peer")] + WriteError(#[from] quinn::WriteError), + #[error("Error connecting to peer")] + ConnectError(#[from] ConnectError), + #[error("Error generating preshared key")] + GeneratePresharedKeyError(#[from] bip39::Error), +} diff --git a/crates/p2p/src/network_manager/nm_config.rs b/crates/p2p/src/network_manager/nm_config.rs new file mode 100644 index 000000000..c7dea7555 --- /dev/null +++ b/crates/p2p/src/network_manager/nm_config.rs @@ -0,0 +1,16 @@ +use std::collections::HashSet; + +use sd_tunnel_utils::PeerId; + +/// Stores configuration which is given to the [crate::NetworkManager] at startup so it can resume from it's previous state. +#[derive(Clone)] +pub struct NetworkManagerConfig { + /// known_peers contains a list of all the peers that were connected last time the application was running. + /// These are used to know who to lookup when using the global discovery service. + pub known_peers: HashSet, + /// listen_port allows the user to specify which port to listen on for incoming connections. + /// By default the network manager will listen on a random free port which changes every time the application is restarted. + pub listen_port: Option, + /// TODO + pub spacetunnel_url: Option, +} diff --git a/crates/p2p/src/network_manager/nm_error.rs b/crates/p2p/src/network_manager/nm_error.rs new file mode 100644 index 000000000..2a4571cac --- /dev/null +++ b/crates/p2p/src/network_manager/nm_error.rs @@ -0,0 +1,23 @@ +use std::io; + +use thiserror::Error; + +/// Represents an error that occurs while initalising the [crate::NetworkManager]. +#[derive(Error, Debug)] +pub enum NetworkManagerError { + // TODO: Cleanup the names of the errors + #[error("the application name your provided is invalid. Ensure it is alphanumeric!")] + InvalidAppName, + #[error("error starting the mDNS service")] + MDNSDaemon(#[from] mdns_sd::Error), + #[error("error attaching the shutdown handler")] + ShutdownHandler(#[from] ctrlc::Error), + #[error("error starting the if_watch service")] + IfWatch(io::Error), + #[error("error configuring certificates for the P2P server")] + Crypto(#[from] rustls::Error), + #[error("error starting P2P server")] + Server(io::Error), + #[error("error generating P2P identity")] + RcGen(#[from] rcgen::RcgenError), +} diff --git a/crates/p2p/src/network_manager/nm_internal.rs b/crates/p2p/src/network_manager/nm_internal.rs new file mode 100644 index 000000000..fba79b12e --- /dev/null +++ b/crates/p2p/src/network_manager/nm_internal.rs @@ -0,0 +1,256 @@ +use std::{ + net::{IpAddr, Ipv4Addr, SocketAddrV4}, + sync::Arc, + time::Duration, +}; + +use futures_util::StreamExt; +use if_watch::{IfEvent, IfWatcher}; +use quinn::{ClientConfig, Incoming, NewConnection, VarInt}; +use sd_tunnel_utils::{quic::client_config, PeerId}; +use thiserror::Error; +use tokio::{select, sync::mpsc, time::sleep}; +use tracing::{debug, error, warn}; + +use crate::{ + ConnectionType, DiscoveryStack, NetworkManager, NetworkManagerError, P2PManager, Peer, + PeerCandidate, +}; + +/// Represents an event that should be handled by the [NetworkManager] event loop. +#[derive(Debug, Clone)] +pub(crate) enum NetworkManagerInternalEvent { + Connect(PeerCandidate), + NewKnownPeer(PeerId), +} + +impl NetworkManager { + // this event_loop is run in a tokio task and is responsible for handling events emitted by components of the P2P library. + pub(crate) async fn event_loop( + nm: &Arc, + mut quic_incoming: Incoming, + mut internal_channel: mpsc::UnboundedReceiver, + ) -> Result<(), NetworkManagerError> { + debug!("Starting P2P event loop"); + let mut if_watcher = IfWatcher::new() + .await + .map_err(NetworkManagerError::IfWatch)?; + let discovery = DiscoveryStack::new(nm).await?; + let (shutdown_signal_tx, mut shutdown_signal_rx) = mpsc::unbounded_channel(); // This should be able to be a oneshot but ctrlc is cringe + ctrlc::set_handler(move || { + debug!("Shutdown signal captured. Sending shutdown signal..."); + match shutdown_signal_tx.send(()) { + Ok(_) => {} + Err(err) => { + error!( + "Failed to send shutdown signal. Falling back to hard shutdown. {:?}", + err + ); + } + } + })?; + + for iface in if_watcher.iter() { + Self::handle_ifwatch_event(nm, IfEvent::Up(*iface)); + } + + discovery.register().await; + + debug!( + "Network adapters discovered on startup: {:?}", + nm.lan_addrs + .iter() + .map(|a| a.to_string()) + .collect::>() + .join(",") + ); + + let nm = nm.clone(); + tokio::spawn(async move { + loop { + // TODO: Deal with `discovery.register`'s network calls blocking the main event loop + select! { + conn = quic_incoming.next() => match conn { + Some(conn) => { + debug!("Handling incoming QUIC connection"); + nm.clone().handle_connection(conn) + }, + None => break, + }, + event = Pin::new(&mut if_watcher) => { + match event { + Ok(event) => { + debug!("Handling ifwatch event: {:?}", event); + if Self::handle_ifwatch_event(&nm, event) { + discovery.register().await; + } + }, + Err(_) => break, + } + } + _ = discovery.mdns.handle_mdns_event() => {} + _ = sleep(Duration::from_secs(15 * 60 /* 15 Minutes */)) => { + debug!("Discovery service registration timer reached"); + discovery.register().await; + } + // TODO: Maybe use subscription system instead of polling or review this timeout! + _ = sleep(Duration::from_secs(60 /* 1 minute */)) => { + debug!("Discovery service pool timer reached"); + discovery.global.poll().await; // TODO: this does network calls and blocks. Is this ok? + } + event = internal_channel.recv() => { + debug!("Received internal event: {:?}", event); + let event = match event { + Some(event) => event, + None => { + error!("internal_channel has been closed, stopping p2p event loop!"); + break; + }, + }; + + match event { + NetworkManagerInternalEvent::Connect(peer) => { + Self::connect_to_peer(&nm, peer).await; + } + NetworkManagerInternalEvent::NewKnownPeer(peer_id) => { + if let Some(peer) = nm.get_discovered_peer(&peer_id) { + Self::connect_to_peer(&nm, peer).await; + } + } + } + } + _ = shutdown_signal_rx.recv() => { + debug!("Event loop received shutdown signal. Shutting down..."); + nm.endpoint.close(VarInt::from_u32(69 /* TODO */), b"BRUH"); + discovery.shutdown(); + debug!("P2P event loop shutdown"); + return; // Shutdown p2p manager thread as program is exitting + } + }; + } + }); + Ok(()) + } + + fn handle_ifwatch_event(nm: &Arc, event: IfEvent) -> bool { + match event { + IfEvent::Up(iface) => { + let ip = match iface.addr() { + IpAddr::V4(ip) if ip != Ipv4Addr::LOCALHOST => ip, + _ => return false, // Currently IPv6 is not supported. Support will likely be added in the future. + }; + nm.lan_addrs.insert(ip) + } + IfEvent::Down(iface) => { + let ip = match iface.addr() { + IpAddr::V4(ip) if ip != Ipv4Addr::LOCALHOST => ip, + _ => return false, // Currently IPv6 is not supported. Support will likely be added in the future. + }; + nm.lan_addrs.remove(&ip).is_some() + } + } + } + + async fn connect_to_peer(nm: &Arc, peer: PeerCandidate) { + tracing::debug!("Connecting to peer: {:?}", peer); + let metadata = peer.metadata.clone(); + let peer_id = peer.id.clone(); + if nm.is_peer_connected(&peer.id) && nm.peer_id <= peer.id { + return; + } + + let NewConnection { + connection, + bi_streams, + .. + } = match Self::connect_to_peer_internal(nm, peer).await { + Ok(connection) => connection, + Err(e) => { + warn!("failed to connect to peer {:?}: {:?}", peer_id, e); + return; + } + }; + + if nm.is_peer_connected(&peer_id) && nm.peer_id <= peer_id { + debug!( + "Closing new connection to peer '{}' as we are already connect!", + peer_id + ); + connection.close(VarInt::from_u32(0), b"DUP_CONN"); + return; + } + + match Peer::new( + ConnectionType::Client, + peer_id, + connection, + metadata, + nm.clone(), + ) + .await + { + Ok(peer) => { + tokio::spawn(peer.handler(bi_streams)); + } + Err(e) => { + error!("failed to create peer: {:?}", e); + } + } + } + + // TODO: Error type + pub(crate) async fn connect_to_peer_internal( + nm: &Arc, + peer: PeerCandidate, + ) -> Result { + tracing::debug!("Attempting connection to {:?}", peer); + // TODO: Guess the best default IP. + + let mut i = 0; + let identity = nm.identity.clone(); + let client_config = + ClientConfig::new(Arc::new(client_config(vec![identity.0], identity.1)?)); + loop { + let address = match peer.addresses.get(i) { + Some(address) => address, + None => break None, + }; + debug!( + "Attempting connection to peer '{}' at address {:?}", + peer.id, address + ); + + // TODO: Shorter timeout for connections! + let conn = match nm.endpoint.connect_with( + client_config.clone(), + SocketAddrV4::new(*address, peer.port).into(), + &peer.id.to_string(), + ) { + Ok(conn) => conn, + Err(e) => { + debug!("failed to connect to addr '{:?}': {}", address, e); + i += 1; + continue; + } + }; + + match conn.await { + Ok(conn) => break Some(conn), + Err(e) => { + debug!("failed to connect to addr '{:?}': {}", address, e); + i += 1; + continue; + } + } + } + .ok_or(ConnectError::UnableToConnect) + } +} + +#[derive(Error, Debug)] +pub enum ConnectError { + #[error("Unable to connect to peer")] + UnableToConnect, + #[error("error setting up client TLS")] + TlsError(#[from] rustls::Error), +} diff --git a/crates/p2p/src/network_manager/nm_server.rs b/crates/p2p/src/network_manager/nm_server.rs new file mode 100644 index 000000000..e543a8312 --- /dev/null +++ b/crates/p2p/src/network_manager/nm_server.rs @@ -0,0 +1,239 @@ +use std::{sync::Arc, time::Duration}; + +use futures_util::StreamExt; +use quinn::{Connecting, NewConnection, VarInt}; +use rustls::Certificate; +use sd_tunnel_utils::{read_value, write_value, PeerId}; +use spake2::{Ed25519Group, Password, Spake2}; +use tokio::{sync::oneshot, time::sleep}; +use tracing::{debug, error, info, warn}; + +use crate::{ + ConnectionEstablishmentPayload, ConnectionType, NetworkManager, P2PManager, + PairingParticipantType, PairingPayload, Peer, +}; + +impl NetworkManager { + /// is called when a new connection is received from the 'QUIC' server listener to handle the connection. + pub(crate) fn handle_connection(self: Arc, conn: Connecting) { + tokio::spawn(async move { + let NewConnection { + connection, + mut bi_streams, + .. + } = match conn.await { + Ok(conn) => conn, + Err(err) => { + warn!("error accepting connection: {:?}", err); + return; + } + }; + + // let handshake_data = connection + // .handshake_data()? + // .downcast::()?; + + let peer_id = match connection + .peer_identity() + .map(|v| v.downcast::>()) + { + Some(Ok(certs)) if certs.len() == 1 => PeerId::from_cert(&certs[0]), + Some(Ok(_)) => { + warn!("client presenting an invalid number of certificates!"); + return; + } + Some(Err(_)) => { + warn!("error decoding certificates from connection!"); + return; + } + _ => unimplemented!(), + }; + + // TODO: Reenable this + // if let Some(server_name) = handshake_data.server_name { + // if server_name != peer_id.to_string() { + // println!("{} {}", server_name, peer_id.to_string()); // TODO: BRUH + // println!( + // "p2p warning: client presented a certificate and servername which don't match!" + // ); + // return; + // } + // } else { + // println!( + // "p2p warning: client presented a certificate and servername which don't match!" + // ); + // return; + // } + + // TODO: Do this check again before adding to array because the `ConnectionEstablishmentPayload` adds delay + if self.is_peer_connected(&peer_id) && self.peer_id > peer_id { + debug!( + "Closing new connection to peer '{}' as we are already connect!", + peer_id + ); + connection.close(VarInt::from_u32(0), b"DUP_CONN"); + return; + } + + let stream = tokio::select! { + stream = bi_streams.next() => { + match stream { + Some(stream) => stream, + None => { + warn!("connection closed before we could read from it!"); + return; + } + } + } + _ = sleep(Duration::from_secs(1)) => { + warn!("Connection create connection establishment stream in expected time."); + return; + } + + }; + + match stream { + Ok((mut tx, mut rx)) => { + let payload = match read_value(&mut rx).await { + Ok(msg) => msg, + Err(err) => { + warn!("error decoding connection establishment payload: {}", err); + return; + } + }; + + match payload { + ConnectionEstablishmentPayload::ConnectionRequest => { + debug!("ConnectionRequest from peer '{}'", peer_id); + // TODO: Only allow peers we trust to get pass this point + } + ConnectionEstablishmentPayload::PairingRequest { + pake_msg, + metadata, + extra_data, + } => { + debug!("PairingRequest from peer '{}'", peer_id); + // TODO: Ensure we are not already paired with the peer + + let (oneshot_tx, oneshot_rx) = oneshot::channel(); + self.manager.peer_pairing_request( + &self, + &peer_id, + &metadata, + &extra_data, + oneshot_tx, + ); + + // TODO: Have a timeout and console warning if the P2PManager doesn't respond + let preshared_key = match oneshot_rx.await { + Ok(Ok(preshared_key)) => preshared_key, + Ok(Err(err)) => { + warn!("P2PManager reported error pairing: {:?}", err); + return; + } + Err(err) => { + warn!("error receiving response for P2PManager: {:?}", err); + return; + } + }; + + let (spake, outgoing_pake_msg) = Spake2::::start_b( + &Password::new(preshared_key.as_bytes()), + &spake2::Identity::new(peer_id.as_bytes()), + &spake2::Identity::new(self.peer_id.as_bytes()), + ); + match spake.finish(&pake_msg) { + Ok(_) => {} // We only use SPAKE2 to ensure the current connection is to the peer we expect, hence we don't use the key which is returned. + Err(err) => { + warn!( + "error pairing with peer. Connection has been tampered with! err: {:?}", + err + ); + return; + } + }; + + let resp = match self + .manager + .peer_paired( + &self, + PairingParticipantType::Accepter, + &peer_id, + &metadata, + &extra_data, + ) + .await + { + Ok(_) => PairingPayload::PairingAccepted { + pake_msg: outgoing_pake_msg, + metadata: self.manager.get_metadata(), + }, + Err(err) => { + warn!("p2p manager error: {:?}", err); + PairingPayload::PairingFailed + } + }; + + match write_value(&mut tx, &resp).await { + Ok(_) => {} + Err(err) => { + warn!("error encoding and sending pairing response: {}", err); + return; + } + }; + + let payload = match read_value(&mut rx).await { + Ok(payload) => payload, + Err(err) => { + warn!("error reading and decoding pairing payload: {}", err); + return; + } + }; + + match payload { + PairingPayload::PairingAccepted { .. } => { + todo!("invalid") // TODO: Remove this + } + PairingPayload::PairingComplete { .. } => { + info!("Pairing with peer '{}' complete.", peer_id); + } + PairingPayload::PairingFailed => { + error!("Pairing with peer '{}' complete.", peer_id); + + // TODO + // self.manager + // .peer_paired_rollback(&self, &remote_peer_id, &extra_data) + // .await; + + // TODO: emit event to frontend + + return; + } + } + + match Peer::new( + ConnectionType::Server, + peer_id.clone(), + connection, + metadata, + self, + ) + .await + { + Ok(peer) => { + tokio::spawn(peer.handler(bi_streams)); + } + Err(err) => { + error!("p2p warning: error creating peer: {:?}", err); + } + } + } + } + } + _ => { + error!("connection from peer '{}' didn't send establishment payload fast enough. Closing connection", peer_id); + } + } + }); + } +} diff --git a/crates/p2p/src/network_manager/proto.rs b/crates/p2p/src/network_manager/proto.rs new file mode 100644 index 000000000..d376d29df --- /dev/null +++ b/crates/p2p/src/network_manager/proto.rs @@ -0,0 +1,28 @@ +use std::collections::HashMap; + +use serde::{Deserialize, Serialize}; + +use crate::PeerMetadata; + +/// Is sent as the first payload in each connection to establish the information and intent of the remote device. +/// This is sent by the QUIC client to the QUIC server. +#[derive(Debug, Serialize, Deserialize)] +pub enum ConnectionEstablishmentPayload { + PairingRequest { + pake_msg: Vec, + metadata: PeerMetadata, + extra_data: HashMap, + }, + ConnectionRequest, // TODO: Add `PeerMetadata` as argument to this. +} + +/// PairingPayload are exchanged during the pairing process to establish a secure long term relationship. +#[derive(Debug, Serialize, Deserialize)] +pub enum PairingPayload { + PairingAccepted { + pake_msg: Vec, + metadata: PeerMetadata, + }, + PairingComplete, + PairingFailed, +} diff --git a/crates/p2p/src/p2p_manager.rs b/crates/p2p/src/p2p_manager.rs new file mode 100644 index 000000000..a25a0252f --- /dev/null +++ b/crates/p2p/src/p2p_manager.rs @@ -0,0 +1,76 @@ +use std::{collections::HashMap, future::Future, pin::Pin}; + +use quinn::{RecvStream, SendStream}; +use sd_tunnel_utils::PeerId; +use tokio::sync::oneshot; + +use crate::{NetworkManager, Peer, PeerMetadata}; + +/// Represents the type of the peer participating in pairing. This is useful for the P2PManager application to know but is not used in the P2PManager itself. +pub enum PairingParticipantType { + // This peer initiated the pairing request + Initiator, + // This peer accepted a pairing request initiated by another device + Accepter, +} + +/// Is implement by the application which is embedding this P2P library. +/// This trait allows your application which holds the users state to hook into the P2P lifecycle and make decisions from the state it holds. +#[allow(unused_variables)] +pub trait P2PManager: Clone + Send + Sync + Sized + 'static { + const APPLICATION_NAME: &'static str; + + /// Called to get the metadata of the application. This metadata is sent as part of the discovery payload. + fn get_metadata(&self) -> PeerMetadata; + + /// Called when a peer is discovered using any of the available discovery mechanisms . + fn peer_discovered(&self, nm: &NetworkManager, peer_id: &PeerId) {} + + /// Called when a peer that had previously been discovered is now unavailable. + /// This could be due to the peer announcing it is going offline or due to a timeout. + fn peer_expired(&self, nm: &NetworkManager, peer_id: PeerId) {} + + /// Called when a connection is established with a peer. + /// This will happen after pairing or if a peer that is in the [NetworkManager]'s `known_peers` list is discovered. + fn peer_connected(&self, nm: &NetworkManager, peer_id: PeerId) {} + + /// Called when a connection to a peer is disconnected. + /// This could occur due to the remote peer announcing it is going offline, or the device not responding to network activity for a certain timeout. + fn peer_disconnected(&self, nm: &NetworkManager, peer_id: PeerId) {} + + /// Called when a peer request to pair with you. The application should accept or reject the pairing request by returning the preshared_key enter by the user through the `password_resp` oneshot channel. + /// The application MUST respond to the channel regardless of result. + fn peer_pairing_request( + &self, + nm: &NetworkManager, + peer_id: &PeerId, + metadata: &PeerMetadata, + extra_data: &HashMap, + password_resp: oneshot::Sender>, + ) { + } + + /// Called when a peer has been paired with you. This function will block the pairing process until it is complete. + /// Pairing MAY fail after this function is completed due to the nature of having to run it on both machines. It is expected any changes will be reverted in `peer_paired_rollback`. + fn peer_paired<'a>( + &'a self, + nm: &'a NetworkManager, + direction: PairingParticipantType, + peer_id: &'a PeerId, + peer_metadata: &'a PeerMetadata, + extra_data: &'a HashMap, + ) -> Pin> + Send + 'a>>; + + /// Called when pairing failed but `peer_paired` was called. This function will undo any changes that may of been made by `peer_paired`. + fn peer_paired_rollback<'a>( + &'a self, + nm: &'a NetworkManager, + direction: PairingParticipantType, + peer_id: &'a PeerId, + peer_metadata: &'a PeerMetadata, + extra_data: &'a HashMap, + ) -> Pin + Send + Sync + 'a>>; + + /// Called when a network stream is created. This will contain your application code to communicate with the remote device. + fn accept_stream(&self, peer: &Peer, stream: (SendStream, RecvStream)) {} +} diff --git a/crates/p2p/src/peer/mod.rs b/crates/p2p/src/peer/mod.rs new file mode 100644 index 000000000..609293fa3 --- /dev/null +++ b/crates/p2p/src/peer/mod.rs @@ -0,0 +1,8 @@ +#[allow(clippy::module_inception)] +mod peer; +mod peer_candidate; +mod peer_metadata; + +pub use peer::*; +pub use peer_candidate::*; +pub use peer_metadata::*; diff --git a/crates/p2p/src/peer/peer.rs b/crates/p2p/src/peer/peer.rs new file mode 100644 index 000000000..4a9c91a4c --- /dev/null +++ b/crates/p2p/src/peer/peer.rs @@ -0,0 +1,106 @@ +use std::{ + fmt::{self, Formatter}, + sync::Arc, +}; + +use futures_util::StreamExt; +use quinn::{ApplicationClose, Connection, IncomingBiStreams}; +use sd_tunnel_utils::PeerId; +use tracing::{debug, error}; + +use crate::{NetworkManager, P2PManager, PeerMetadata}; + +/// This emum represents the type of the connection to the current peer. +/// QUIC is a client/server protocol so when doing P2P communication one client will be the server and one will be the client from a QUIC perspective. +/// The protocol is bi-directional so this doesn't matter a huge amount and the P2P library does it's best to hide this detail from the embedding application as thinking about this can be very confusing. +/// The decision for who is the client and server should be treated as arbitrary and shouldn't affect how the protocol operates. +#[derive(Debug, Clone, PartialEq, Eq)] +pub enum ConnectionType { + /// I am the QUIC server. + Server, + /// I am the QUIC client. + Client, +} + +/// Represents a currently connected peer. This struct holds the connection as well as any information the network manager may required about the remote peer. +/// It also stores a reference to the network manager for communication back to the [P2PManager]. +/// The [Peer] acts as an abstraction above the QUIC connection which could be a client or server so that when building code we don't have to think about the technicalities of the connection. +#[derive(Clone)] +pub struct Peer { + /// peer_id holds the id of the remote peer. This is their unique identifier. + pub id: PeerId, + /// conn_type holds the type of connection that is being established. + pub conn_type: ConnectionType, + /// metadata holds the metadata of the remote peer. This includes information such as their display name and version. + pub metadata: PeerMetadata, + /// conn holds the quinn::Connection that is being used to communicate with the remote peer. This allows creating new streams. + pub(crate) conn: Connection, + /// nm is a reference to the network manager. This is used to send messages back to the P2PManager. + nm: Arc>, +} + +impl fmt::Debug for Peer { + fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { + f.debug_struct("Peer") + .field("id", &self.id) + .field("conn_type", &self.conn_type) + .field("metadata", &self.metadata) + .finish() + } +} + +impl Peer { + /// create a new peer from a [quinn::Connection]. + pub(crate) async fn new( + conn_type: ConnectionType, + id: PeerId, + conn: Connection, + metadata: PeerMetadata, + nm: Arc>, + ) -> Result { + Ok(Self { + id, + conn_type, + metadata, + conn, + nm, + }) + } + + /// handler is run in a separate thread for each peer connection and is responsible for keep the connection alive and handling incoming streams. + pub(crate) async fn handler(self, mut bi_streams: IncomingBiStreams) { + debug!( + "Started handler thread for connection with remote peer '{}'", + self.id + ); + self.nm.add_connected_peer(self.clone()); + while let Some(stream) = bi_streams.next().await { + match stream { + Err(quinn::ConnectionError::ApplicationClosed(ApplicationClose { + reason, .. + })) => { + debug!("Connection with peer closed due to '{:?}'", reason); + + // TODO: This is hacky, fix! + if reason != "DUP_CONN" { + self.nm.remove_connected_peer(self.id); + } + + break; + } + Err(err) => { + error!( + "Connection error when communicating with peer '{:?}': {:?}", + self.id, err + ); + self.nm.remove_connected_peer(self.id); + break; + } + Ok(stream) => { + debug!("Accepting stream from peer '{:?}'", self.id); + self.nm.manager.accept_stream(&self, stream); + } + } + } + } +} diff --git a/crates/p2p/src/peer/peer_candidate.rs b/crates/p2p/src/peer/peer_candidate.rs new file mode 100644 index 000000000..2ba387427 --- /dev/null +++ b/crates/p2p/src/peer/peer_candidate.rs @@ -0,0 +1,18 @@ +use std::net::Ipv4Addr; + +use sd_tunnel_utils::PeerId; +use serde::{Deserialize, Serialize}; + +use crate::PeerMetadata; + +/// Represents a peer that has been discovered but not paired with. +/// It is called a candidate as it contains all of the information required to connection and pair with the peer. +/// A peer candidate discovered through mDNS may have been modified by an attacker on your local network but this is deemed acceptable as the attacker can only modify primitive metadata such a name or Spacedrive version which is used for pairing. +/// When we initiated communication with the device we will ensure we are talking to the correct device using PAKE (specially SPAKE2) for pairing and verifying the TLS certificate for general communication. +#[derive(Debug, Clone, Serialize, Deserialize)] // TODO: Type +pub struct PeerCandidate { + pub id: PeerId, + pub metadata: PeerMetadata, + pub addresses: Vec, + pub port: u16, +} diff --git a/crates/p2p/src/peer/peer_metadata.rs b/crates/p2p/src/peer/peer_metadata.rs new file mode 100644 index 000000000..b8f909585 --- /dev/null +++ b/crates/p2p/src/peer/peer_metadata.rs @@ -0,0 +1,94 @@ +use std::{collections::HashMap, env, str::FromStr}; + +use sd_tunnel_utils::PeerId; +use serde::{Deserialize, Serialize}; +use specta::Type; + +/// Represents the operating system which the remote peer is running. +/// This is not used internally and predominantly is designed to be used for display purposes by the embedding application. +#[derive(Debug, Clone, Type, Serialize, Deserialize)] +pub enum OperationSystem { + Windows, + Linux, + MacOS, + IOS, + Android, + Other(String), +} + +impl OperationSystem { + pub fn get_os() -> Self { + match env::consts::OS { + "windows" => OperationSystem::Windows, + "macos" => OperationSystem::MacOS, + "linux" => OperationSystem::Linux, + "ios" => OperationSystem::IOS, + "android" => OperationSystem::Android, + platform => OperationSystem::Other(platform.into()), + } + } +} + +impl From for String { + fn from(os: OperationSystem) -> Self { + match os { + OperationSystem::Windows => "Windows".into(), + OperationSystem::Linux => "Linux".into(), + OperationSystem::MacOS => "MacOS".into(), + OperationSystem::IOS => "IOS".into(), + OperationSystem::Android => "Android".into(), + OperationSystem::Other(s) => { + let mut chars = s.chars(); + chars.next(); + chars.as_str().to_string() + } + } + } +} + +impl FromStr for OperationSystem { + type Err = (); + + fn from_str(s: &str) -> Result { + let mut chars = s.chars(); + match chars.next() { + Some('w') => Ok(OperationSystem::Windows), + Some('l') => Ok(OperationSystem::Linux), + Some('m') => Ok(OperationSystem::MacOS), + Some('i') => Ok(OperationSystem::IOS), + Some('a') => Ok(OperationSystem::Android), + _ => Ok(OperationSystem::Other(chars.as_str().to_string())), + } + } +} + +/// Represents public metadata about a peer. This is designed to hold information which is required among all applications using the P2P library. +/// This metadata is discovered through the discovery process or sent by the connecting device when establishing a new P2P connection. +#[derive(Debug, Clone, Type, Serialize, Deserialize)] +pub struct PeerMetadata { + pub name: String, + pub operating_system: Option, + pub version: Option, +} + +impl PeerMetadata { + pub fn from_hashmap(peer_id: &PeerId, hashmap: &HashMap) -> Self { + Self { + name: hashmap + .get("name") + .map(|v| v.to_string()) + .unwrap_or_else(|| peer_id.to_string()), + operating_system: hashmap.get("os").map(|v| v.parse().ok()).unwrap_or(None), + version: hashmap.get("version").map(|v| v.to_string()), + } + } + + pub fn to_hashmap(self) -> HashMap { + let mut hashmap = HashMap::new(); + hashmap.insert("name".to_string(), self.name); + if let Some(version) = self.version { + hashmap.insert("version".to_string(), version); + } + hashmap + } +} diff --git a/crates/p2p/src/utils/identity.rs b/crates/p2p/src/utils/identity.rs new file mode 100644 index 000000000..c3aa7231b --- /dev/null +++ b/crates/p2p/src/utils/identity.rs @@ -0,0 +1,47 @@ +use std::net::Ipv4Addr; + +use rcgen::{CertificateParams, DistinguishedName, DnType, RcgenError, SanType}; + +/// The common name of the identity certificate generated by sd-p2p. +const CERTIFICATE_COMMON_NAME: &str = "sd-p2p-identity"; + +/// Is the identity which respresents the current peer. An Identity is made from a public key and a private key combo. [crate::PeerId]'s are derived from the public key portion of a peer's [Identity]. +/// The public key is safe to share while the private key must remain private to ensure the connections between peers are secure. +#[derive(Clone)] +pub struct Identity { + cert: Vec, + key: Vec, +} + +impl Identity { + /// Create a new Identity for the current peer. + pub fn new() -> Result { + let mut params: CertificateParams = Default::default(); + params.distinguished_name = DistinguishedName::new(); + params + .distinguished_name + .push(DnType::CommonName, CERTIFICATE_COMMON_NAME); + params.subject_alt_names = vec![SanType::IpAddress(Ipv4Addr::LOCALHOST.into())]; + let cert = rcgen::Certificate::from_params(params)?; + + Ok(Self { + cert: cert.serialize_der()?, + key: cert.serialize_private_key_der(), + }) + } + + /// Load the current identity from it's raw form. + pub fn from_raw(cert: Vec, key: Vec) -> Result { + Ok(Self { cert, key }) + } + + /// Convert this identity into it's raw form so it can be saved. + pub fn to_raw(&self) -> (Vec, Vec) { + (self.cert.clone(), self.key.clone()) + } + + /// Convert this identity into rustls compatible form so it can be used for the QUIC TLS handshake. + pub fn into_rustls(self) -> (rustls::Certificate, rustls::PrivateKey) { + (rustls::Certificate(self.cert), rustls::PrivateKey(self.key)) + } +} diff --git a/crates/p2p/src/utils/mod.rs b/crates/p2p/src/utils/mod.rs new file mode 100644 index 000000000..ab3c470e5 --- /dev/null +++ b/crates/p2p/src/utils/mod.rs @@ -0,0 +1,3 @@ +mod identity; + +pub use identity::*; diff --git a/crates/p2p/tunnel/Cargo.toml b/crates/p2p/tunnel/Cargo.toml new file mode 100644 index 000000000..cdbe7860e --- /dev/null +++ b/crates/p2p/tunnel/Cargo.toml @@ -0,0 +1,24 @@ +[package] +name = "sd-tunnel" +version = "0.1.0" +edition = "2021" +default-run = "sd-tunnel" + +[dependencies] +sd-tunnel-utils = { path = "./utils" } + +base64 = "0.13.0" +dotenv = "0.15.0" +futures = "0.3.21" +quinn = "0.8.3" +rcgen = "0.9.2" +rustls = "0.20.6" +serde = { version = "1.0.137", features = ["derive"] } +tokio = { version = "1.19.2", features = ["rt-multi-thread", "macros"] } +tracing = "0.1.35" +tracing-subscriber = { version = "0.3.11", features = ["env-filter"] } +metrics = "0.19.0" +metrics-exporter-prometheus = { version = "0.10.0", features = ["http-listener"] } +thiserror = "1.0.31" +rmp-serde = "1.1.0" +bb8-redis = "0.11.0" diff --git a/crates/p2p/tunnel/Dockerfile b/crates/p2p/tunnel/Dockerfile new file mode 100644 index 000000000..71d6a6113 --- /dev/null +++ b/crates/p2p/tunnel/Dockerfile @@ -0,0 +1,29 @@ +# syntax=docker/dockerfile:1.3-labs +FROM rust:latest as build + +# Set working directory for build container +WORKDIR /app + +# Cache the Rust build between Docker builds +RUN --mount=type=cache,target=/usr/local/cargo/registry +RUN --mount=type=cache,target=/app/target + +# Copy prerequisites and install dependencies +# TODO: Make this work - it's difficult cause the Cargo.lock is outside the Docker build context +# RUN mkdir src && echo "fn main(){}" > src/main.rs +# COPY Cargo.toml ../../Cargo.lock /app/ +# RUN mkdir .cargo && cargo vendor > .cargo/config + +# Copy in code and build it +COPY . /app +RUN cargo build --release + +# Create minimal non-root production container +FROM gcr.io/distroless/cc:nonroot + +# Expose ports +EXPOSE 9000 + +# Copy in binary and set it as startup command +COPY --from=build /app/target/release/tunnel / +CMD ["/tunnel"] \ No newline at end of file diff --git a/crates/p2p/tunnel/README.md b/crates/p2p/tunnel/README.md new file mode 100644 index 000000000..89d5eb4e1 --- /dev/null +++ b/crates/p2p/tunnel/README.md @@ -0,0 +1,12 @@ +**Warning: Deploying this application is currently at your own risk! It hasn't been battle tested and support will not be provided!** + +# Spacetunnel + +TODO: Write some docs + +## Usage + +```bash +cargo run -p tunnel --bin generate-env +cargo run -p tunnel +``` diff --git a/crates/p2p/tunnel/fly.toml b/crates/p2p/tunnel/fly.toml new file mode 100644 index 000000000..b696664a0 --- /dev/null +++ b/crates/p2p/tunnel/fly.toml @@ -0,0 +1,21 @@ +app = "sd-tunnel" + +[env] +SD_PORT = 9000 +SD_BIND_ADDR = "fly-global-services" + +[metrics] +port = 9000 +path = "/metrics" + +[experimental] + allowed_public_ports = [] + auto_rollback = true + +[[services]] + protocol = "udp" + internal_port = 9000 + + [[services.ports]] + handlers = [] + port = 443 diff --git a/crates/p2p/tunnel/src/bin/generate-env.rs b/crates/p2p/tunnel/src/bin/generate-env.rs new file mode 100644 index 000000000..b2de3ca8a --- /dev/null +++ b/crates/p2p/tunnel/src/bin/generate-env.rs @@ -0,0 +1,33 @@ +use std::{fs, path::Path}; + +use base64::encode; +use rcgen::generate_simple_self_signed; + +fn main() { + println!("Issuing sdtunnel certificate..."); + + let env_file = Path::new("./.env"); + if env_file.exists() { + println!("File '{}' already exists. Exiting...", env_file.display()); + return; + } + + // TODO: Replace 'generate_simple_self_signed' with full code so we have full control over generated certificate. + let cert = generate_simple_self_signed(vec!["sdtunnel.spacedrive.com".into()]).unwrap(); + + match fs::write( + env_file, + format!( + r#"SD_ROOT_CERTIFICATE={} +SD_ROOT_CERTIFICATE_KEY={} +SD_REDIS_URL=redis://127.0.0.1/"#, + encode(cert.serialize_der().unwrap()), + encode(cert.serialize_private_key_der()) + ), + ) { + Ok(_) => {} + Err(err) => println!("Error writing to '{}': {}", env_file.display(), err), + } + + println!("Generate keypair!"); +} diff --git a/crates/p2p/tunnel/src/main.rs b/crates/p2p/tunnel/src/main.rs new file mode 100644 index 000000000..63de3c82f --- /dev/null +++ b/crates/p2p/tunnel/src/main.rs @@ -0,0 +1,300 @@ +use base64::decode; +use bb8_redis::{ + bb8::Pool, + redis::{cmd, RedisError}, + RedisConnectionManager, +}; +use dotenv::dotenv; +use futures::StreamExt; +use metrics::increment_counter; +use metrics_exporter_prometheus::PrometheusBuilder; +use quinn::{ApplicationClose, Endpoint, ServerConfig}; +use rustls::Certificate; +use sd_tunnel_utils::{ + quic, ClientAnnouncementResponse, Message, MessageError, PeerId, MAX_MESSAGE_SIZE, +}; +use std::{ + collections::HashMap, + env, + net::{Ipv4Addr, ToSocketAddrs}, + sync::Arc, +}; +use thiserror::Error; + +use tracing::{debug, error, info}; +use tracing_subscriber::{fmt, prelude::*, EnvFilter}; + +#[tokio::main] +async fn main() { + dotenv().ok(); + + tracing_subscriber::registry() + .with(fmt::layer()) + .with( + EnvFilter::from_default_env() + .add_directive("info".parse().expect("Error invalid tracing directive!")) + .add_directive( + "tunnel=debug" + .parse() + .expect("Error invalid tracing directive!"), + ), + ) + .init(); + + let certificate = match env::var("SD_ROOT_CERTIFICATE") { + Ok(certificate) => { + rustls::Certificate(decode(certificate).expect("Error decoding 'SD_ROOT_CERTIFICATE'")) + } + Err(_) => { + error!("Error: 'SD_ROOT_CERTIFICATE' env var is not set!"); + return; + } + }; + let priv_key = match env::var("SD_ROOT_CERTIFICATE_KEY") { + Ok(key) => { + rustls::PrivateKey(decode(key).expect("Error decoding 'SD_ROOT_CERTIFICATE_KEY'")) + } + Err(_) => { + error!("Error: 'SD_ROOT_CERTIFICATE_KEY' env var is not set!"); + return; + } + }; + let redis_url = match env::var("SD_REDIS_URL") { + Ok(redis_url) => redis_url, + Err(_) => { + error!("Error: 'SD_REDIS_URL' env var is not set!"); + return; + } + }; + let server_port = env::var("SD_PORT") + .map(|port| port.parse::().unwrap_or(9000)) + .unwrap_or(9000); + let bind_addr = env::var("SD_BIND_ADDR").unwrap_or(Ipv4Addr::UNSPECIFIED.to_string()); + + let manager = + RedisConnectionManager::new(redis_url).expect("Error creating Redis connection manager!"); + let redis_pool = Pool::builder() + .build(manager) + .await + .expect("Error creating Redis pool!"); + + let builder = PrometheusBuilder::new(); + builder + .install() + .expect("failed to install recorder/exporter"); + + let addr = format!("{}:{}", bind_addr, server_port) + .to_socket_addrs() + .expect("Error looking up bind address") + .into_iter() + .next() + .expect("Error no bind addresses were found"); + let server_config = ServerConfig::with_crypto(Arc::new( + quic::server_config(vec![certificate], priv_key) + .expect("Error initialising 'ServerConfig'!"), + )); + let (endpoint, mut incoming) = + Endpoint::server(server_config, addr).expect("Error creating endpoint!"); + info!( + "Listening on {}", + endpoint.local_addr().expect("Error passing local address!") + ); + + while let Some(conn) = incoming.next().await { + let remote_addr = conn.remote_address(); + debug!("accepted connection from '{}'", remote_addr); + increment_counter!("spacetunnel_connections_accepted"); + + let fut = handle_connection(redis_pool.clone(), conn); + tokio::spawn(async move { + if let Err(e) = fut.await { + error!( + "'handle_connection' from remote '{}' threw error: {}", + remote_addr, + e.to_string() + ); + increment_counter!("spacetunnel_connections_errored"); + } else { + debug!("closed connection from '{}'", remote_addr); + } + }); + } +} + +async fn handle_connection( + redis_pool: Pool, + conn: quinn::Connecting, +) -> Result<(), ConnectionError> { + let quinn::NewConnection { + connection, + mut bi_streams, + .. + } = conn.await?; + + let peer_id = match connection + .peer_identity() + .unwrap() + .downcast::>() + { + Ok(certs) if certs.len() == 1 => PeerId::from_cert(&certs[0]), + Ok(_) => { + error!("Error: peer has multiple client certificates!"); + increment_counter!("spacetunnel_connections_invalid"); + return Ok(()); + } + Err(_) => { + error!("Error: peer did not provide a client certificates!"); + increment_counter!("spacetunnel_connections_invalid"); + return Ok(()); + } + }; + info!( + "established connection with peer '{}' from addr '{}'", + peer_id, + connection.remote_address() + ); + + // TODO: Ensure connections are closed automatically after an inactivity timeout + // TODO: Ensure streams are closed automatically after an inactivity timeout + + let peer_id = &peer_id; + while let Some(stream) = bi_streams.next().await { + let stream = match stream { + Err(quinn::ConnectionError::ApplicationClosed(ApplicationClose { + error_code, + reason, + })) => { + debug!( + "closed connection with peer '{}' with error_code '{}' and reason '{:?}' ", + peer_id, error_code, reason + ); + return Ok(()); + } + Err(e) => return Err(e.into()), + Ok(s) => s, + }; + + debug!("accepted stream from peer '{}'", peer_id); + increment_counter!("spacetunnel_streams_accepted"); + + let peer_id = peer_id.clone(); + let redis_pool = redis_pool.clone(); + tokio::spawn(async move { + let (mut tx, mut rx) = stream; + let fut = handle_stream(redis_pool, &peer_id, (&mut tx, &mut rx)); + if let Err(err) = fut.await { + error!("'handle_stream' threw error: {}", err.to_string()); + if matches!(err, ConnectionError::RedisErr(_)) { + increment_counter!("spacetunnel_redis_error", "error_src" => "handle_stream"); + } else { + increment_counter!("spacetunnel_stream_errored"); + } + match Message::Error(MessageError::InternalServerErr).encode() { + Ok(msg) => { + let _ = tx.write_all(&msg).await; + } + Err(e) => { + error!("Error encoding error error message: {}", e.to_string()); + increment_counter!("spacetunnel_stream_errored"); + } + } + } else { + debug!("closed stream from peer '{}'", peer_id); + } + }); + } + + Ok(()) +} + +async fn handle_stream( + redis_pool: Pool, + authenticated_peer_id: &PeerId, + (send, recv): (&mut quinn::SendStream, &mut quinn::RecvStream), +) -> Result<(), ConnectionError> { + let mut redis = match redis_pool.get().await { + Ok(conn) => conn, + Err(err) => { + error!("Error getting Redis connection: {}", err); + increment_counter!("spacetunnel_redis_error", "error_src" => "get"); + return Ok(()); + } + }; + + while let Some(chunk) = recv.read_chunk(MAX_MESSAGE_SIZE, true).await? { + let mut bytes: &[u8] = &chunk.bytes; + let msg = match Message::read(&mut bytes)? { + Message::ClientAnnouncement { peer_id, addresses } => { + if authenticated_peer_id != peer_id { + Message::Error(MessageError::InvalidAuthErr) + } else { + increment_counter!("spacetunnel_discovery_announcements"); + let redis_key = format!("peer:announcement:{}", peer_id.to_string()); + cmd("HSET") + .arg(&redis_key) + .arg("addresses") + .arg(addresses.join(",")) + .query_async(&mut *redis) + .await?; + cmd("EXPIRE") + .arg(&redis_key) + .arg(60 * 60u32 /* 1 Hour in seconds */) + .query_async(&mut *redis) + .await?; + + Message::ClientAnnouncementOk + } + } + Message::QueryClientAnnouncement(peer_ids) => { + increment_counter!("spacetunnel_discovery_announcement_queries"); + + // TODO: Rate limit number queries that can come from each each IP + // TODO: Check if peer is authorised to query this announcement. Syncthing don't do an auth check so for now it's fine being unauthorised. + + if peer_ids.len() > 15 { + error!( + "Client requested too many client announcements '{}'", + peer_ids.len() + ); + increment_counter!("spacetunnel_discovery_announcement_queries_invalid"); + Message::Error(MessageError::InvalidReqErr) + } else { + let mut peers = Vec::with_capacity(peer_ids.len()); + for peer_id in peer_ids.iter() { + let redis_key = format!("peer:announcement:{}", peer_id.to_string()); + + let resp: HashMap = cmd("HGETALL") + .arg(&redis_key) + .query_async(&mut *redis) + .await?; + + peers.push(ClientAnnouncementResponse { + peer_id: peer_id.clone(), + addresses: resp + .get("addresses") + .unwrap_or(&"".to_string()) + .split(",") + .map(|v| v.to_string()) + .collect(), + }) + } + Message::QueryClientAnnouncementResponse(peers) + } + } + Message::ClientAnnouncementOk + | Message::QueryClientAnnouncementResponse { .. } + | Message::Error(_) => Message::Error(MessageError::InvalidReqErr), + }; + send.write_all(&msg.encode()?).await?; + } + + Ok(()) +} + +#[derive(Error, Debug)] +pub enum ConnectionError { + #[error("connection error: {0}")] + ConnectionErr(#[from] quinn::ConnectionError), + #[error("redis error: {0}")] + RedisErr(#[from] RedisError), +} diff --git a/crates/p2p/tunnel/utils/Cargo.toml b/crates/p2p/tunnel/utils/Cargo.toml new file mode 100644 index 000000000..0800d7974 --- /dev/null +++ b/crates/p2p/tunnel/utils/Cargo.toml @@ -0,0 +1,15 @@ +[package] +name = "sd-tunnel-utils" +version = "0.1.0" +edition = "2021" + +[dependencies] +quinn = "0.8.3" +ring = "0.16.20" +rmp = "0.8.11" +rmp-serde = "1.1.0" +rustls = { version = "0.20.6", default-features = false, features = ["quic", "dangerous_configuration"] } # 'dangerous_configuration' is required to implement custom certificate verifiers which we use due to the self-signed nature of the protocol. +serde = { version = "1.0.137", features = ["derive"] } +specta = "0.0.2" +thiserror = "1.0.31" +ts-rs = "6.2.0" diff --git a/crates/p2p/tunnel/utils/src/client.rs b/crates/p2p/tunnel/utils/src/client.rs new file mode 100644 index 000000000..31ba1cee7 --- /dev/null +++ b/crates/p2p/tunnel/utils/src/client.rs @@ -0,0 +1,80 @@ +use std::{io, net::ToSocketAddrs, sync::Arc}; + +use quinn::{ClientConfig, Endpoint, NewConnection}; +use rustls::{Certificate, PrivateKey}; +use thiserror::Error; + +use crate::{ + quic::client_config, + rmp_quic::{read_value, UtilError}, + write_value, Message, +}; + +/// represents an error which can be thrown by the client. +#[derive(Error, Debug)] +pub enum ClientError { + #[error("no valid Spacetunnel addresses were provided")] + MissingServerAddr, + #[error("error resolving DNS for Spacetunnel address")] + IoError(#[from] io::Error), + #[error("error setting up client TLS")] + TlsError(#[from] rustls::Error), + #[error("error connecting to Spacetunnel")] + ConnectError(#[from] quinn::ConnectError), + #[error("error communicating with Spacetunnel")] + ConnectionError(#[from] quinn::ConnectionError), + #[error("error writing message to Spacetunnel")] + UtilError(#[from] UtilError), + #[error("error writing message to Spacetunnel connection")] + WriteError(#[from] quinn::WriteError), +} + +/// holds a connection to the Spacetunnel server and can be used to send messages to the server. +pub struct Client { + backend_url: String, + endpoint: Endpoint, + identity: (Certificate, PrivateKey), +} + +impl Client { + pub fn new( + backend_url: String, + endpoint: Endpoint, + identity: (Certificate, PrivateKey), + ) -> Self { + Self { + backend_url, + endpoint, + identity, + } + } + + /// sends a message to the Spacetunnel server and awaits a response. + pub async fn send_message(&self, msg: Message) -> Result { + let identity = self.identity.clone(); + let NewConnection { connection, .. } = self + .endpoint + .connect_with( + ClientConfig::new(Arc::new(client_config( + vec![identity.0], + identity.1.clone(), + )?)), + self.backend_url + .to_socket_addrs()? // TODO: Make this only lookup IPv4 -> Filter IPV6's + .into_iter() + .next() + .ok_or(ClientError::MissingServerAddr)?, + "todo", + )? + .await?; + + let (mut tx, mut rx) = connection.open_bi().await?; + write_value(&mut tx, &msg).await?; + let msg: Message = read_value(&mut rx).await?; + + // tx.finish().await?; + // connection.close(VarInt::from_u32(0), b"DUP_CONN"); + + Ok(msg) + } +} diff --git a/crates/p2p/tunnel/utils/src/lib.rs b/crates/p2p/tunnel/utils/src/lib.rs new file mode 100644 index 000000000..f31cc193c --- /dev/null +++ b/crates/p2p/tunnel/utils/src/lib.rs @@ -0,0 +1,10 @@ +mod client; +mod peer_id; +mod proto; +pub mod quic; +mod rmp_quic; + +pub use client::*; +pub use peer_id::*; +pub use proto::*; +pub use rmp_quic::*; diff --git a/crates/p2p/tunnel/utils/src/peer_id.rs b/crates/p2p/tunnel/utils/src/peer_id.rs new file mode 100644 index 000000000..9a736a607 --- /dev/null +++ b/crates/p2p/tunnel/utils/src/peer_id.rs @@ -0,0 +1,64 @@ +use std::{fmt, ops::Deref}; + +use ring::digest::digest; +use rustls::Certificate; +use serde::{Deserialize, Serialize}; +use specta::Type; +use thiserror::Error; + +/// is a unique identifier for a peer. These are derived from the public key of the peer. +#[derive(Debug, Clone, PartialEq, Eq, Hash, PartialOrd, Serialize, Deserialize, Type)] +pub struct PeerId(String); + +impl PeerId { + /// from_str attempts to load a PeerId from a string. It will return an error if the PeerId is invalid. + pub fn from_string(id: String) -> Result { + if id.len() != 40 { + return Err(PeerIdError::InvalidLength); + } else if !id.chars().all(char::is_alphanumeric) { + return Err(PeerIdError::InvalidCharacters); + } + Ok(Self(id)) + } + + /// from_cert will derive a [PeerId] from a [rustls::Certificate]. + pub fn from_cert(cert: &Certificate) -> Self { + // SHA-1 is used due to the limitation of the length of a DNS record used for mDNS local network discovery. + let peer_id = digest(&ring::digest::SHA1_FOR_LEGACY_USE_ONLY, &cert.0) + .as_ref() + .iter() + .map(|b| format!("{:02x}", b)) + .collect(); + + Self(peer_id) + } +} + +impl PartialEq for &PeerId { + fn eq(&self, other: &PeerId) -> bool { + self.0 == other.0 + } +} + +impl fmt::Display for PeerId { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + write!(f, "{}", self.0) + } +} + +impl Deref for PeerId { + type Target = String; + + fn deref(&self) -> &Self::Target { + &self.0 + } +} + +/// Represents an error that can occur when creating a [PeerId] from a string. +#[derive(Error, Debug)] +pub enum PeerIdError { + #[error("the PeerId must be 40 chars in length")] + InvalidLength, + #[error("the PeerId must be alphanumeric")] + InvalidCharacters, +} diff --git a/crates/p2p/tunnel/utils/src/proto.rs b/crates/p2p/tunnel/utils/src/proto.rs new file mode 100644 index 000000000..a612ea435 --- /dev/null +++ b/crates/p2p/tunnel/utils/src/proto.rs @@ -0,0 +1,34 @@ +use serde::{Deserialize, Serialize}; + +use crate::PeerId; + +/// MessageError is an error that occurs when a message is malformed. +/// NEVER REMOVE OR REORDER VARIANTS OF THIS ENUM OR YOU WILL BREAK STUFF DUE TO SUBOPTIMAL MSGPACK ENCODING. +#[derive(Clone, Debug, Serialize, Deserialize)] +pub enum MessageError { + InvalidAuthErr, + InvalidReqErr, + InternalServerErr, +} + +/// ClientAnnouncementResponse is returned by the server when a client queries for an announcement. +#[derive(Clone, Debug, Serialize, Deserialize)] +pub struct ClientAnnouncementResponse { + pub peer_id: PeerId, + pub addresses: Vec, +} + +/// Message is a single request that is sent between a client and the Spacetunnel server. +#[derive(Clone, Debug, Serialize, Deserialize)] +pub enum Message { + // Announce your current device addresses + ClientAnnouncement { + peer_id: PeerId, + addresses: Vec, + }, + ClientAnnouncementOk, + // Query for an existing client announcement + QueryClientAnnouncement(Vec), + QueryClientAnnouncementResponse(Vec), + Error(MessageError), +} diff --git a/crates/p2p/tunnel/utils/src/quic.rs b/crates/p2p/tunnel/utils/src/quic.rs new file mode 100644 index 000000000..550f49655 --- /dev/null +++ b/crates/p2p/tunnel/utils/src/quic.rs @@ -0,0 +1,101 @@ +use std::{sync::Arc, time::SystemTime}; + +use rustls::{ + client::{ServerCertVerified, ServerCertVerifier}, + server::{ClientCertVerified, ClientCertVerifier}, + Certificate, DistinguishedNames, Error, ServerName, +}; + +/// The Application-Layer Protocol Negotiation (ALPN) value for QUIC. +const ALPN_QUIC_HTTP: &[&[u8]] = &[b"hq-29"]; + +/// server_config will return a rustls::ServerConfig for a QUIC server. Ensures this matches the client config below! +pub fn server_config( + cert_chain: Vec, + key: rustls::PrivateKey, +) -> Result { + let mut cfg = rustls::ServerConfig::builder() + .with_safe_default_cipher_suites() + .with_safe_default_kx_groups() + .with_protocol_versions(&[&rustls::version::TLS13])? + .with_client_cert_verifier(AllowAllClientCertificateVerifier::dangerously_new()) + .with_single_cert(cert_chain, key)?; + cfg.max_early_data_size = u32::MAX; + cfg.alpn_protocols = ALPN_QUIC_HTTP.iter().map(|&x| x.into()).collect(); + Ok(cfg) +} + +/// client_config will return a rustls::ClientConfig for a QUIC client. Ensures this matches the server config above! +pub fn client_config( + cert_chain: Vec, + key: rustls::PrivateKey, +) -> Result { + let mut cfg = rustls::ClientConfig::builder() + .with_safe_default_cipher_suites() + .with_safe_default_kx_groups() + .with_protocol_versions(&[&rustls::version::TLS13])? + // .with_root_certificates(root_store) // TODO: Do this + .with_custom_certificate_verifier(ServerCertificateVerifier::dangerously_new()) // TODO: Remove this and use chain instead + .with_single_cert(cert_chain, key)?; + cfg.alpn_protocols = ALPN_QUIC_HTTP.iter().map(|&x| x.into()).collect(); + Ok(cfg) +} + +/// ServerCertificateVerifier is a custom certificate verifier that is responsible for verifying the server certificate when making a QUIC connection. +pub(crate) struct ServerCertificateVerifier; // TODO: Private this + +impl ServerCertificateVerifier { + // TODO: Private this + pub(crate) fn dangerously_new() -> Arc { + Arc::new(Self) + } +} + +impl ServerCertVerifier for ServerCertificateVerifier { + fn verify_server_cert( + &self, + _end_entity: &Certificate, + _intermediates: &[Certificate], + _server_name: &ServerName, + _scts: &mut dyn Iterator, + _ocsp_response: &[u8], + _now: std::time::SystemTime, + ) -> Result { + // TODO: Verify certificate expiry + // TODO: Verify certificate algorithms match + + Ok(ServerCertVerified::assertion()) + } +} + +/// ClientCertificateVerifier is a custom certificate verifier that is responsible for verifying the client certificate when making a QUIC connection. +struct AllowAllClientCertificateVerifier; + +impl AllowAllClientCertificateVerifier { + fn dangerously_new() -> Arc { + Arc::new(Self {}) + } +} + +impl ClientCertVerifier for AllowAllClientCertificateVerifier { + fn offer_client_auth(&self) -> bool { + true + } + + fn client_auth_root_subjects(&self) -> Option { + Some(vec![]) + } + + fn verify_client_cert( + &self, + _end_entity: &Certificate, + _intermediates: &[Certificate], + _now: SystemTime, + ) -> Result { + // TODO: Verify certificate expiry + // TODO: Verify certificate algorithms match + + // We accept any client with a valid certificate because any valid certificate will have a valid PeerId. It's ok to accept all connections cause this is the public service. + Ok(ClientCertVerified::assertion()) + } +} diff --git a/crates/p2p/tunnel/utils/src/rmp_quic.rs b/crates/p2p/tunnel/utils/src/rmp_quic.rs new file mode 100644 index 000000000..76d8265d7 --- /dev/null +++ b/crates/p2p/tunnel/utils/src/rmp_quic.rs @@ -0,0 +1,43 @@ +use quinn::{RecvStream, SendStream}; +use serde::{de::DeserializeOwned, Serialize}; +use thiserror::Error; + +/// MAX_MESSAGE_SIZE is the maximum size of a single message. +pub const MAX_MESSAGE_SIZE: usize = 64 * 1024; + +#[derive(Error, Debug)] +pub enum UtilError { + #[error("error reading from stream as it was closed")] + StreamClosed, + #[error("error writing message")] + WriteError(#[from] quinn::WriteError), + #[error("error reading data")] + ReadError(#[from] quinn::ReadError), + #[error("error decoding message")] + DecodeError(#[from] rmp_serde::decode::Error), + #[error("error encoding message")] + EncodeError(#[from] rmp_serde::encode::Error), +} + +// write_value is a helper to write a Serde struct to a [quin::SendStream]. +pub async fn write_value(tx: &mut SendStream, value: &T) -> Result<(), UtilError> +where + T: Serialize + Unpin + ?Sized, +{ + let data = rmp_serde::encode::to_vec_named(value)?; + // rmp_serde doesn't support `AsyncWrite` so we have to allocate buffer here. + tx.write_all(&data).await?; + Ok(()) +} + +// read_value is a helper to read a Serde struct from a [quin::RecvStream]. +pub async fn read_value(rx: &mut RecvStream) -> Result +where + T: DeserializeOwned + ?Sized, +{ + let data = rx + .read_chunk(MAX_MESSAGE_SIZE, true) + .await? + .ok_or(UtilError::StreamClosed)?; + Ok(rmp_serde::decode::from_read(&data.bytes[..])?) +} diff --git a/crates/sync/Cargo.toml b/crates/sync/Cargo.toml index 6c2435139..c41d8167e 100644 --- a/crates/sync/Cargo.toml +++ b/crates/sync/Cargo.toml @@ -5,7 +5,7 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -rspc = { version = "0.1.2", features = ["uuid"] } +rspc = { workspace = true, features = ["uuid"] } serde = "1.0.145" serde_json = "1.0.85" uhlc = "0.5.1" diff --git a/crates/sync/README.md b/crates/sync/README.md index 211cd3dc6..1098b660d 100644 --- a/crates/sync/README.md +++ b/crates/sync/README.md @@ -1,4 +1,3 @@ # crdt-rs Just @brendonovich experimenting with CRDT stuff. - diff --git a/crates/sync/docs/HLC.md b/crates/sync/docs/HLC.md index 4c10ef0ca..f4a947511 100644 --- a/crates/sync/docs/HLC.md +++ b/crates/sync/docs/HLC.md @@ -1,5 +1,3 @@ - - ```rust pub fn update_with_timestamp(&self, timestamp: &Timestamp) -> Result<(), String> { let mut now = (self.clock)(); @@ -31,49 +29,45 @@ pub fn update_with_timestamp(&self, timestamp: &Timestamp) -> Result<(), String> ``` ```javascript -Timestamp.recv = function(msg) { - if (!clock) { - return null; - } +Timestamp.recv = function (msg) { + if (!clock) { + return null; + } - var now = Date.now(); + var now = Date.now(); - var msg_time = msg.millis(); - var msg_time = msg.counter(); + var msg_time = msg.millis(); + var msg_time = msg.counter(); - if (msg_time - now > config.maxDrift) { - throw new Timestamp.ClockDriftError(); - } + if (msg_time - now > config.maxDrift) { + throw new Timestamp.ClockDriftError(); + } - var last_time = clock.timestamp.millis(); - var last_time = clock.timestamp.counter(); + var last_time = clock.timestamp.millis(); + var last_time = clock.timestamp.counter(); - var max_time = Math.max(Math.max(last_time, now), msg_time); + var max_time = Math.max(Math.max(last_time, now), msg_time); - var last_time = - max_time === last_time && lNew === msg_time - ? Math.max(last_time, msg_time) + 1 - : max_time === last_time - ? last_time + 1 - : max_time === msg_time - ? msg_time + 1 - : 0; + var last_time = + max_time === last_time && lNew === msg_time + ? Math.max(last_time, msg_time) + 1 + : max_time === last_time + ? last_time + 1 + : max_time === msg_time + ? msg_time + 1 + : 0; - // 3. - if (max_time - phys > config.maxDrift) { - throw new Timestamp.ClockDriftError(); - } - if (last_time > MAX_COUNTER) { - throw new Timestamp.OverflowError(); - } + // 3. + if (max_time - phys > config.maxDrift) { + throw new Timestamp.ClockDriftError(); + } + if (last_time > MAX_COUNTER) { + throw new Timestamp.OverflowError(); + } - clock.timestamp.setMillis(max_time); - clock.timestamp.setCounter(last_time); + clock.timestamp.setMillis(max_time); + clock.timestamp.setCounter(last_time); - return new Timestamp( - clock.timestamp.millis(), - clock.timestamp.counter(), - clock.timestamp.node() - ); + return new Timestamp(clock.timestamp.millis(), clock.timestamp.counter(), clock.timestamp.node()); }; ``` diff --git a/crates/sync/example/.vscode/extensions.json b/crates/sync/example/.vscode/extensions.json index 24d7cc6de..9f5433281 100644 --- a/crates/sync/example/.vscode/extensions.json +++ b/crates/sync/example/.vscode/extensions.json @@ -1,3 +1,3 @@ { - "recommendations": ["tauri-apps.tauri-vscode", "rust-lang.rust-analyzer"] + "recommendations": ["tauri-apps.tauri-vscode", "rust-lang.rust-analyzer"] } diff --git a/crates/sync/example/index.html b/crates/sync/example/index.html index 7cb13f956..35ba8f45e 100644 --- a/crates/sync/example/index.html +++ b/crates/sync/example/index.html @@ -1,17 +1,17 @@ - - - - - - Tauri + Solid + Typescript App - + + + + + + Tauri + Solid + Typescript App + - - -
+ + +
- - + + diff --git a/crates/sync/example/package.json b/crates/sync/example/package.json index 1b3589ea6..7c72ed993 100644 --- a/crates/sync/example/package.json +++ b/crates/sync/example/package.json @@ -1,32 +1,32 @@ { - "name": "@sd/sync-example", - "version": "0.0.0", - "description": "", - "scripts": { - "start": "vite", - "dev": "vite", - "build": "vite build", - "serve": "vite preview", - "tauri": "tauri" - }, - "license": "MIT", - "devDependencies": { - "@tauri-apps/cli": "^1.1.0", - "@types/babel__core": "^7.1.19", - "@types/node": "^18.7.10", - "autoprefixer": "^10.4.12", - "postcss": "^8.4.16", - "tailwindcss": "^3.1.8", - "typescript": "^4.7.4", - "vite": "^3.0.0", - "vite-plugin-solid": "^2.3.0" - }, - "dependencies": { - "@rspc/client": "~0.1.2", - "@rspc/solid": "~0.1.2", - "@rspc/tauri": "~0.1.2", - "@tanstack/solid-query": "4.7.1", - "clsx": "^1.2.1", - "solid-js": "^1.4.7" - } + "name": "@sd/sync-example", + "version": "0.0.0", + "description": "", + "scripts": { + "start": "vite", + "dev": "vite", + "build": "vite build", + "serve": "vite preview", + "tauri": "tauri" + }, + "license": "MIT", + "devDependencies": { + "@tauri-apps/cli": "^1.1.1", + "@types/babel__core": "^7.1.19", + "@types/node": "^18.8.2", + "autoprefixer": "^10.4.12", + "postcss": "^8.4.17", + "tailwindcss": "^3.1.8", + "typescript": "^4.8.4", + "vite": "^3.1.4", + "vite-plugin-solid": "^2.3.9" + }, + "dependencies": { + "@rspc/client": "~0.1.2", + "@rspc/solid": "~0.1.2", + "@rspc/tauri": "~0.1.2", + "@tanstack/solid-query": "4.10.1", + "clsx": "^1.2.1", + "solid-js": "^1.5.7" + } } diff --git a/crates/sync/example/src-tauri/Cargo.toml b/crates/sync/example/src-tauri/Cargo.toml index aa26d0d2c..50ed0ff57 100644 --- a/crates/sync/example/src-tauri/Cargo.toml +++ b/crates/sync/example/src-tauri/Cargo.toml @@ -17,7 +17,7 @@ tauri-build = { version = "1.1", features = [] } serde_json = "1.0" serde = { version = "1.0", features = ["derive"] } tauri = { version = "1.1", features = ["api-all"] } -rspc = { version = "0.1.2", features = ["tauri", "uuid"] } +rspc = { workspace = true, features = ["tauri", "uuid"] } sd-sync = { path = "../.." } tokio = { version = "1.21.2", features = ["macros"] } uuid = { version = "1.1.2", features = ["v4"] } diff --git a/crates/sync/example/src-tauri/tauri.conf.json b/crates/sync/example/src-tauri/tauri.conf.json index 4d9d1579e..4a5454e61 100644 --- a/crates/sync/example/src-tauri/tauri.conf.json +++ b/crates/sync/example/src-tauri/tauri.conf.json @@ -1,66 +1,66 @@ { - "build": { - "beforeDevCommand": "pnpm dev", - "beforeBuildCommand": "pnpm build", - "devPath": "http://localhost:1420", - "distDir": "../dist", - "withGlobalTauri": false - }, - "package": { - "productName": "example", - "version": "0.0.0" - }, - "tauri": { - "allowlist": { - "all": true - }, - "bundle": { - "active": true, - "category": "DeveloperTool", - "copyright": "", - "deb": { - "depends": [] - }, - "externalBin": [], - "icon": [ - "icons/32x32.png", - "icons/128x128.png", - "icons/128x128@2x.png", - "icons/icon.icns", - "icons/icon.ico" - ], - "identifier": "com.tauri.dev", - "longDescription": "", - "macOS": { - "entitlements": null, - "exceptionDomain": "", - "frameworks": [], - "providerShortName": null, - "signingIdentity": null - }, - "resources": [], - "shortDescription": "", - "targets": "all", - "windows": { - "certificateThumbprint": null, - "digestAlgorithm": "sha256", - "timestampUrl": "" - } - }, - "security": { - "csp": null - }, - "updater": { - "active": false - }, - "windows": [ - { - "fullscreen": false, - "height": 600, - "resizable": true, - "title": "example", - "width": 800 - } - ] - } + "build": { + "beforeDevCommand": "pnpm dev", + "beforeBuildCommand": "pnpm build", + "devPath": "http://localhost:1420", + "distDir": "../dist", + "withGlobalTauri": false + }, + "package": { + "productName": "example", + "version": "0.0.0" + }, + "tauri": { + "allowlist": { + "all": true + }, + "bundle": { + "active": true, + "category": "DeveloperTool", + "copyright": "", + "deb": { + "depends": [] + }, + "externalBin": [], + "icon": [ + "icons/32x32.png", + "icons/128x128.png", + "icons/128x128@2x.png", + "icons/icon.icns", + "icons/icon.ico" + ], + "identifier": "com.tauri.dev", + "longDescription": "", + "macOS": { + "entitlements": null, + "exceptionDomain": "", + "frameworks": [], + "providerShortName": null, + "signingIdentity": null + }, + "resources": [], + "shortDescription": "", + "targets": "all", + "windows": { + "certificateThumbprint": null, + "digestAlgorithm": "sha256", + "timestampUrl": "" + } + }, + "security": { + "csp": null + }, + "updater": { + "active": false + }, + "windows": [ + { + "fullscreen": false, + "height": 600, + "resizable": true, + "title": "example", + "width": 800 + } + ] + } } diff --git a/crates/sync/example/src/App.tsx b/crates/sync/example/src/App.tsx index e46b91829..7b332ccd6 100644 --- a/crates/sync/example/src/App.tsx +++ b/crates/sync/example/src/App.tsx @@ -1,75 +1,69 @@ -import clsx from "clsx"; -import { createSignal, For, JSX, Suspense } from "solid-js"; -import { queryClient, rspc } from "./rspc"; +import clsx from 'clsx'; +import { For, JSX, Suspense, createSignal } from 'solid-js'; + +import { queryClient, rspc } from './rspc'; export function App() { - const dbs = rspc.createQuery(() => ["dbs"]); + const dbs = rspc.createQuery(() => ['dbs']); - const createDb = rspc.createMutation("createDatabase", { - onSuccess: () => { - queryClient.invalidateQueries(); - }, - }); - const removeDbs = rspc.createMutation("removeDatabases", { - onSuccess: () => queryClient.invalidateQueries(), - }); + const createDb = rspc.createMutation('createDatabase', { + onSuccess: () => { + queryClient.invalidateQueries(); + } + }); + const removeDbs = rspc.createMutation('removeDatabases', { + onSuccess: () => queryClient.invalidateQueries() + }); - return ( -
-
- - -
-
    - - {(id) => ( - - - - )} - -
-
- ); + return ( +
+
+ + +
+
    + + {(id) => ( + + + + )} + +
+
+ ); } interface DatabaseViewProps { - id: string; + id: string; } -const TABS = ["Tags", "Files", "File Paths", "Messages"]; +const TABS = ['Tags', 'Files', 'File Paths', 'Messages']; function DatabaseView(props: DatabaseViewProps) { - const [currentTab, setCurrentTab] = createSignal("Tags"); + const [currentTab, setCurrentTab] = createSignal('Tags'); - return ( -
-

{props.id}

-
- -
-
-
- ); + return ( +
+

{props.id}

+
+ +
+
+
+ ); } function Button(props: JSX.ButtonHTMLAttributes) { - return ( - - - - - - - )} - {!!tags?.length && ( - <> - - - {tags?.map((tag) => ( -
setSelectedTag(tag.id === selectedTag ? null : tag.id)} - key={tag.id} - className={clsx( - 'flex items-center rounded px-1.5 py-0.5' - // selectedTag === tag.id && 'ring' - )} - style={{ backgroundColor: tag.color + 'CC' }} - > - {tag.name} -
- ))} - - } - /> - - )} - {props.context?.type == 'Location' && props.data?.type === 'Path' && ( - <> - - - - )} - - - - - {!is_dir && ( - <> - -
- {props.data?.extension && ( - - {props.data?.extension} - - )} -

- {props.data?.extension - ? //@ts-ignore - types[props.data.extension.toUpperCase()]?.descriptions.join(' / ') - : 'Unknown'} -

-
- {objectData && ( - <> - - - {objectData.cas_id && ( - - )} - +
+ {!!props.data && ( + <> +
+ +
+
+

+ {props.data?.name} + {props.data?.extension && `.${props.data.extension}`} +

+ {objectData && ( +
+ + + + + + + + + +
+ )} + {tags?.data && tags.data.length > 0 && ( + <> + + + {tags?.data?.map((tag) => ( +
setSelectedTag(tag.id === selectedTag ? null : tag.id)} + key={tag.id} + className={clsx( + 'flex items-center rounded px-1.5 py-0.5' + // selectedTag === tag.id && 'ring' + )} + style={{ backgroundColor: tag.color + 'CC' }} + > + {tag.name} +
+ ))} +
+ } + /> + + )} + {props.context?.type == 'Location' && props.data?.type === 'Path' && ( + <> + + + + )} + + + + + {!is_dir && ( + <> + +
+ {props.data?.extension && ( + + {props.data?.extension} + )} - - )} -
- - )} -
+

+ {props.data?.extension + ? //@ts-ignore + types[props.data.extension.toUpperCase()]?.descriptions.join(' / ') + : 'Unknown'} +

+ + {objectData && ( + <> + + + {objectData.cas_id && ( + + )} + + )} + + )} + + + )} ); }; diff --git a/packages/interface/src/components/explorer/VirtualizedList.tsx b/packages/interface/src/components/explorer/VirtualizedList.tsx index 6c000db03..d470c8454 100644 --- a/packages/interface/src/components/explorer/VirtualizedList.tsx +++ b/packages/interface/src/components/explorer/VirtualizedList.tsx @@ -1,10 +1,9 @@ import { ExplorerLayoutMode, getExplorerStore, useExplorerStore } from '@sd/client'; -import { ExplorerContext, ExplorerItem, FilePath } from '@sd/client'; +import { ExplorerContext, ExplorerItem } from '@sd/client'; import { useVirtualizer } from '@tanstack/react-virtual'; -import { memo, useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react'; +import { memo, useCallback, useEffect, useLayoutEffect, useRef, useState } from 'react'; import { useSearchParams } from 'react-router-dom'; -import { useKey, useOnWindowResize, useWindowSize } from 'rooks'; -import { useSnapshot } from 'valtio'; +import { useKey, useOnWindowResize } from 'rooks'; import FileItem from './FileItem'; import FileRow from './FileRow'; diff --git a/packages/interface/src/components/explorer/inspector/Note.tsx b/packages/interface/src/components/explorer/inspector/Note.tsx index 1eaa0e1be..5010f4fd9 100644 --- a/packages/interface/src/components/explorer/inspector/Note.tsx +++ b/packages/interface/src/components/explorer/inspector/Note.tsx @@ -1,7 +1,7 @@ import { useLibraryMutation } from '@sd/client'; import { Object as SDObject } from '@sd/client'; import { TextArea } from '@sd/ui'; -import { debounce } from 'lodash'; +import debounce from 'lodash/debounce'; import { useCallback, useState } from 'react'; import { Divider } from './Divider'; diff --git a/packages/interface/src/components/jobs/JobManager.tsx b/packages/interface/src/components/jobs/JobManager.tsx index 70d4a8349..8da2c5037 100644 --- a/packages/interface/src/components/jobs/JobManager.tsx +++ b/packages/interface/src/components/jobs/JobManager.tsx @@ -3,7 +3,7 @@ import { useLibraryQuery } from '@sd/client'; import { JobReport } from '@sd/client'; import { Button } from '@sd/ui'; import clsx from 'clsx'; -import { formatDistanceToNow, formatDuration } from 'date-fns'; +import dayjs from 'dayjs'; import { ArrowsClockwise } from 'phosphor-react'; import { Tooltip } from '../tooltip/Tooltip'; @@ -70,12 +70,12 @@ export function JobsManager() { {job.status === 'Failed' ? 'Failed after' : 'Took'}{' '} {job.seconds_elapsed - ? formatDuration({ seconds: job.seconds_elapsed }) + ? dayjs.duration({ seconds: job.seconds_elapsed }).humanize() : 'less than a second'} • - {formatDistanceToNow(new Date(job.date_created))} ago + {dayjs(job.date_created).toNow(true)} ago {job.data} diff --git a/packages/interface/src/hooks/useToasts.ts b/packages/interface/src/hooks/useToasts.ts new file mode 100644 index 000000000..f0b624fd6 --- /dev/null +++ b/packages/interface/src/hooks/useToasts.ts @@ -0,0 +1,34 @@ +import { proxy, useSnapshot } from 'valtio'; + +interface Toast { + id: string; + title: string; + subtitle?: string; + duration?: number; + actionButton?: { + text: string; + onClick: () => void; + }; +} + +const state = proxy({ + toasts: [] as Toast[] +}); + +const randomId = () => Math.random().toString(36).slice(2); + +export function useToasts() { + return { + toasts: useSnapshot(state).toasts, + addToast: (toast: Omit) => { + state.toasts.push({ + id: randomId(), + ...toast + }); + }, + removeToast: (toast: Toast | string) => { + const id = typeof toast === 'string' ? toast : toast.id; + state.toasts = state.toasts.filter((t) => t.id !== id); + } + }; +} diff --git a/packages/interface/src/screens/Content.tsx b/packages/interface/src/screens/Content.tsx index 47c83eb78..c1722ca4b 100644 --- a/packages/interface/src/screens/Content.tsx +++ b/packages/interface/src/screens/Content.tsx @@ -1,4 +1,4 @@ -export const ContentScreen: React.FC = (props) => { +export default function ContentScreen() { // const [address, setAddress] = React.useState(''); return
; -}; +} diff --git a/packages/interface/src/screens/Debug.tsx b/packages/interface/src/screens/Debug.tsx index 15a9aea69..cb1c33dea 100644 --- a/packages/interface/src/screens/Debug.tsx +++ b/packages/interface/src/screens/Debug.tsx @@ -3,7 +3,7 @@ import { useBridgeQuery, useLibraryMutation, useLibraryQuery, usePlatform } from import CodeBlock from '../components/primitive/Codeblock'; // TODO: Bring this back with a button in the sidebar near settings at the bottom -export const DebugScreen: React.FC = (props) => { +export default function DebugScreen() { const platform = usePlatform(); const { data: nodeState } = useBridgeQuery(['getNode']); const { data: libraryState } = useBridgeQuery(['library.list']); @@ -45,4 +45,4 @@ export const DebugScreen: React.FC = (props) => { ); -}; +} diff --git a/packages/interface/src/screens/LocationExplorer.tsx b/packages/interface/src/screens/LocationExplorer.tsx index 2820056da..ef6a9db95 100644 --- a/packages/interface/src/screens/LocationExplorer.tsx +++ b/packages/interface/src/screens/LocationExplorer.tsx @@ -15,7 +15,7 @@ export function useExplorerParams() { return { location_id, path, limit }; } -export const LocationExplorer: React.FC = () => { +export default function LocationExplorer() { const { location_id, path } = useExplorerParams(); const { library } = useCurrentLibrary(); @@ -38,4 +38,4 @@ export const LocationExplorer: React.FC = () => { ); -}; +} diff --git a/packages/interface/src/screens/Overview.tsx b/packages/interface/src/screens/Overview.tsx index 7bf735605..edf5b1767 100644 --- a/packages/interface/src/screens/Overview.tsx +++ b/packages/interface/src/screens/Overview.tsx @@ -89,7 +89,7 @@ const StatItem: React.FC = (props) => { ); }; -export const OverviewScreen = () => { +export default function OverviewScreen() { const platform = usePlatform(); const { data: libraryStatistics, isLoading: isStatisticsLoading } = useLibraryQuery([ 'library.getStatistics' @@ -191,4 +191,4 @@ export const OverviewScreen = () => { ); -}; +} diff --git a/packages/interface/src/screens/Photos.tsx b/packages/interface/src/screens/Photos.tsx index 17acd70b6..264677b64 100644 --- a/packages/interface/src/screens/Photos.tsx +++ b/packages/interface/src/screens/Photos.tsx @@ -1,4 +1,4 @@ -export const PhotosScreen: React.FC = (props) => { +export default function PhotosScreen() { return (
@@ -9,4 +9,4 @@ export const PhotosScreen: React.FC = (props) => {
); -}; +} diff --git a/packages/interface/src/screens/TagExplorer.tsx b/packages/interface/src/screens/TagExplorer.tsx index 134750d8d..0684dea8a 100644 --- a/packages/interface/src/screens/TagExplorer.tsx +++ b/packages/interface/src/screens/TagExplorer.tsx @@ -3,7 +3,7 @@ import { useParams } from 'react-router-dom'; import Explorer from '../components/explorer/Explorer'; -export const TagExplorer: React.FC = () => { +export default function TagExplorer() { const { id } = useParams(); const { library } = useCurrentLibrary(); @@ -16,4 +16,4 @@ export const TagExplorer: React.FC = () => { )} ); -}; +} diff --git a/packages/interface/src/screens/settings/Settings.tsx b/packages/interface/src/screens/settings/Settings.tsx index 34a095ffa..535338c30 100644 --- a/packages/interface/src/screens/settings/Settings.tsx +++ b/packages/interface/src/screens/settings/Settings.tsx @@ -17,7 +17,7 @@ import { SettingsScreenContainer } from '../../components/settings/SettingsScreenContainer'; -export const SettingsScreen: React.FC = () => { +export default function SettingsScreen() { return ( Client @@ -100,4 +100,4 @@ export const SettingsScreen: React.FC = () => { ); -}; +} diff --git a/packages/interface/src/style.scss b/packages/interface/src/style.scss index b1595a939..22c7ed37d 100644 --- a/packages/interface/src/style.scss +++ b/packages/interface/src/style.scss @@ -132,22 +132,22 @@ body { } .picker { - position: relative; + position: relative; } .swatch { - width: 28px; - height: 28px; - border-radius: 8px; - border: 3px solid #fff; - box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1), inset 0 0 0 1px rgba(0, 0, 0, 0.1); - cursor: pointer; + width: 28px; + height: 28px; + border-radius: 8px; + border: 3px solid #fff; + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1), inset 0 0 0 1px rgba(0, 0, 0, 0.1); + cursor: pointer; } .popover { - position: absolute; - top: calc(100% + 2px); - left: 0; - border-radius: 9px; - box-shadow: 0 6px 12px rgba(0, 0, 0, 0.15); -} \ No newline at end of file + position: absolute; + top: calc(100% + 2px); + left: 0; + border-radius: 9px; + box-shadow: 0 6px 12px rgba(0, 0, 0, 0.15); +} diff --git a/packages/ui/package.json b/packages/ui/package.json index 751319d17..ff8a168ff 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -17,22 +17,22 @@ "storybook:build": "build-storybook" }, "dependencies": { - "@headlessui/react": "^1.6.6", - "@heroicons/react": "^2.0.10", + "@headlessui/react": "^1.7.3", + "@heroicons/react": "^2.0.12", "@radix-ui/react-context-menu": "^1.0.0", "@radix-ui/react-dropdown-menu": "^1.0.0", - "@tailwindcss/forms": "^0.5.2", + "@tailwindcss/forms": "^0.5.3", "class-variance-authority": "^0.2.3", "clsx": "^1.2.1", "phosphor-react": "^1.4.1", - "postcss": "^8.4.14", + "postcss": "^8.4.17", "react": "^18.2.0", "react-dom": "^18.2.0", - "storybook": "^6.5.10", - "tailwindcss": "^3.1.6" + "storybook": "^6.5.12", + "tailwindcss": "^3.1.8" }, "devDependencies": { - "@babel/core": "^7.18.9", + "@babel/core": "^7.19.3", "@sd/config": "workspace:*", "@storybook/addon-actions": "^6.5.12", "@storybook/addon-essentials": "^6.5.12", @@ -44,18 +44,18 @@ "@storybook/preset-scss": "^1.0.3", "@storybook/react": "^6.5.12", "@storybook/testing-library": "^0.0.13", - "@tailwindcss/line-clamp": "^0.4.0", - "@tailwindcss/typography": "^0.5.4", - "@types/react": "^18.0.15", + "@tailwindcss/line-clamp": "^0.4.2", + "@tailwindcss/typography": "^0.5.7", + "@types/react": "^18.0.21", "@types/react-dom": "^18.0.6", - "autoprefixer": "^10.4.7", + "autoprefixer": "^10.4.12", "babel-loader": "^8.2.5", "css-loader": "^6.7.1", "postcss-loader": "^7.0.1", - "sass": "^1.54.0", + "sass": "^1.55.0", "sass-loader": "^13.0.2", - "storybook-tailwind-dark-mode": "^1.0.12", + "storybook-tailwind-dark-mode": "^1.0.15", "style-loader": "^3.3.1", - "typescript": "^4.7.4" + "typescript": "^4.8.4" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 55754f217..018a6fe2e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,67 +5,67 @@ importers: .: specifiers: '@cspell/dict-rust': ^2.0.1 - '@cspell/dict-typescript': ^2.0.1 - '@evilmartians/lefthook': ^1.0.5 + '@cspell/dict-typescript': ^2.0.2 + '@evilmartians/lefthook': ^1.1.1 '@trivago/prettier-plugin-sort-imports': ^3.3.0 - cspell: ^6.4.0 - markdown-link-check: ^3.10.2 + cspell: ^6.12.0 + markdown-link-check: ^3.10.3 prettier: ^2.7.1 turbo: ^1.5.5 turbo-ignore: ^0.3.0 - typescript: ^4.7.4 + typescript: ^4.8.4 devDependencies: '@cspell/dict-rust': 2.0.1 '@cspell/dict-typescript': 2.0.2 '@evilmartians/lefthook': 1.1.1 '@trivago/prettier-plugin-sort-imports': 3.3.0_prettier@2.7.1 - cspell: 6.10.1 + cspell: 6.12.0 markdown-link-check: 3.10.3 prettier: 2.7.1 turbo: 1.5.5 turbo-ignore: 0.3.0 - typescript: 4.8.3 + typescript: 4.8.4 apps/desktop: specifiers: - '@rspc/client': ^0.0.6 - '@rspc/tauri': ^0.0.6 + '@rspc/client': ^0.1.2 + '@rspc/tauri': ^0.1.2 '@sd/client': workspace:* '@sd/interface': workspace:* '@sd/ui': workspace:* - '@tanstack/react-query': ^4.0.10 - '@tauri-apps/api': 1.0.2 - '@tauri-apps/cli': 1.0.5 + '@tanstack/react-query': ^4.10.1 + '@tauri-apps/api': 1.1.0 + '@tauri-apps/cli': 1.1.1 '@tauri-apps/tauricon': github:tauri-apps/tauricon '@types/babel-core': ^6.25.7 '@types/byte-size': ^8.1.0 - '@types/react': ^18.0.15 + '@types/react': ^18.0.21 '@types/react-dom': ^18.0.6 '@types/react-router-dom': ^5.3.3 '@types/react-window': ^1.8.5 '@types/tailwindcss': ^3.1.0 - '@vitejs/plugin-react': ^2.0.0 - concurrently: ^7.3.0 + '@vitejs/plugin-react': ^2.1.0 + concurrently: ^7.4.0 prettier: ^2.7.1 react: ^18.2.0 react-dom: ^18.2.0 - sass: ^1.54.0 - typescript: ^4.7.4 - vite: ^3.0.3 + sass: ^1.55.0 + typescript: ^4.8.4 + vite: ^3.1.4 vite-plugin-filter-replace: ^0.1.9 vite-plugin-svgr: ^2.2.1 dependencies: - '@rspc/client': 0.0.6 - '@rspc/tauri': 0.0.6_@tauri-apps+api@1.0.2 + '@rspc/client': 0.1.2 + '@rspc/tauri': 0.1.2_@tauri-apps+api@1.1.0 '@sd/client': link:../../packages/client '@sd/interface': link:../../packages/interface '@sd/ui': link:../../packages/ui - '@tanstack/react-query': 4.6.0_biqbaboplfbrettd7655fr4n2y - '@tauri-apps/api': 1.0.2 + '@tanstack/react-query': 4.10.1_biqbaboplfbrettd7655fr4n2y + '@tauri-apps/api': 1.1.0 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 devDependencies: - '@tauri-apps/cli': 1.0.5 + '@tauri-apps/cli': 1.1.1 '@tauri-apps/tauricon': github.com/tauri-apps/tauricon/5eea916a4a8e13aa41a943beaa7b4b71977e190d '@types/babel-core': 6.25.7 '@types/byte-size': 8.1.0 @@ -74,69 +74,69 @@ importers: '@types/react-router-dom': 5.3.3 '@types/react-window': 1.8.5 '@types/tailwindcss': 3.1.0 - '@vitejs/plugin-react': 2.1.0_vite@3.1.3 + '@vitejs/plugin-react': 2.1.0_vite@3.1.4 concurrently: 7.4.0 prettier: 2.7.1 sass: 1.55.0 - typescript: 4.8.3 - vite: 3.1.3_sass@1.55.0 + typescript: 4.8.4 + vite: 3.1.4_sass@1.55.0 vite-plugin-filter-replace: 0.1.9 - vite-plugin-svgr: 2.2.1_vite@3.1.3 + vite-plugin-svgr: 2.2.1_vite@3.1.4 apps/landing: specifiers: - '@headlessui/react': ^1.6.6 - '@heroicons/react': ^2.0.11 - '@icons-pack/react-simple-icons': ^5.2.0 + '@headlessui/react': ^1.7.3 + '@heroicons/react': ^2.0.12 + '@icons-pack/react-simple-icons': ^5.8.0 '@sd/assets': workspace:* '@sd/config': link:../../packages/config '@sd/docs': workspace:* '@sd/interface': workspace:* '@sd/ui': workspace:* - '@tailwindcss/line-clamp': ^0.4.0 - '@tailwindcss/typography': ^0.5.4 - '@tryghost/content-api': ^1.11.0 + '@tailwindcss/line-clamp': ^0.4.2 + '@tailwindcss/typography': ^0.5.7 + '@tryghost/content-api': ^1.11.4 '@types/compression': ^1.7.2 - '@types/express': ^4.17.13 + '@types/express': ^4.17.14 '@types/marked': ^4.0.7 - '@types/node': ^17.0.31 + '@types/node': ^18.8.2 '@types/prismjs': ^1.26.0 - '@types/react': ^18.0.6 + '@types/react': ^18.0.21 '@types/react-burger-menu': ^2.8.3 - '@types/react-dom': ^18.0.3 + '@types/react-dom': ^18.0.6 '@types/react-helmet': ^6.1.5 '@types/tryghost__content-api': ^1.3.11 - '@vitejs/plugin-react': ^1.3.2 + '@vitejs/plugin-react': ^2.1.0 clsx: ^1.2.1 compression: ^1.7.4 cross-env: ^7.0.3 express: ^4.18.1 markdown-yaml-metadata-parser: ^3.0.0 - marked: ^4.1.0 + marked: ^4.1.1 phosphor-react: ^1.4.1 - postcss: ^8.4.14 - prismjs: ^1.28.0 + postcss: ^8.4.17 + prismjs: ^1.29.0 react: ^18.2.0 react-burger-menu: ^3.0.8 react-dom: ^18.2.0 react-helmet: ^6.1.0 - react-hook-form: ^7.33.1 - react-tsparticles: ^2.1.3 - rollup-plugin-visualizer: ^5.8.1 - sass: ^1.54.0 + react-hook-form: ^7.36.1 + react-tsparticles: ^2.3.3 + rollup-plugin-visualizer: ^5.8.2 + sass: ^1.55.0 sirv: ^2.0.2 tailwind: ^4.0.0 - ts-node: ^10.7.0 - tsparticles: ^2.1.3 - typescript: ^4.6.4 - vite: ^3.1.1 - vite-plugin-markdown: ^2.0.2 - vite-plugin-ssr: ^0.4.28 + ts-node: ^10.9.1 + tsparticles: ^2.3.4 + typescript: ^4.8.4 + vite: ^3.1.4 + vite-plugin-markdown: ^2.1.0 + vite-plugin-ssr: ^0.4.39 vite-plugin-svgr: ^2.2.1 dependencies: - '@headlessui/react': 1.7.2_biqbaboplfbrettd7655fr4n2y - '@heroicons/react': 2.0.11_react@18.2.0 - '@icons-pack/react-simple-icons': 5.6.0_react@18.2.0 + '@headlessui/react': 1.7.3_biqbaboplfbrettd7655fr4n2y + '@heroicons/react': 2.0.12_react@18.2.0 + '@icons-pack/react-simple-icons': 5.8.0_react@18.2.0 '@sd/assets': link:../../packages/assets '@sd/docs': link:../../docs '@sd/interface': link:../../packages/interface @@ -145,17 +145,17 @@ importers: '@types/compression': 1.7.2 '@types/express': 4.17.14 '@types/marked': 4.0.7 - '@types/node': 17.0.45 + '@types/node': 18.8.2 '@types/react': 18.0.21 '@types/react-burger-menu': 2.8.3 '@types/react-dom': 18.0.6 - '@vitejs/plugin-react': 1.3.2 + '@vitejs/plugin-react': 2.1.0_vite@3.1.4 clsx: 1.2.1 compression: 1.7.4 cross-env: 7.0.3 express: 4.18.1 markdown-yaml-metadata-parser: 3.0.0 - marked: 4.1.0 + marked: 4.1.1 phosphor-react: 1.4.1_react@18.2.0 prismjs: 1.29.0 react: 18.2.0 @@ -163,13 +163,13 @@ importers: react-dom: 18.2.0_react@18.2.0 react-helmet: 6.1.0_react@18.2.0 react-hook-form: 7.36.1_react@18.2.0 - react-tsparticles: 2.3.2_react@18.2.0 + react-tsparticles: 2.3.3_react@18.2.0 sirv: 2.0.2 - ts-node: 10.9.1_rb7lfb2dlgdf5f7m6mcvvespxa - tsparticles: 2.3.2 - typescript: 4.8.3 - vite: 3.1.3_sass@1.55.0 - vite-plugin-ssr: 0.4.38_vite@3.1.3 + ts-node: 10.9.1_p2zphemn5bk5inasc666rmprwi + tsparticles: 2.3.4 + typescript: 4.8.4 + vite: 3.1.4_sass@1.55.0 + vite-plugin-ssr: 0.4.39_vite@3.1.4 devDependencies: '@sd/config': link:../../packages/config '@tailwindcss/line-clamp': 0.4.2 @@ -177,91 +177,95 @@ importers: '@types/prismjs': 1.26.0 '@types/react-helmet': 6.1.5 '@types/tryghost__content-api': 1.3.11 - postcss: 8.4.16 - rollup-plugin-visualizer: 5.8.1 + postcss: 8.4.17 + rollup-plugin-visualizer: 5.8.2 sass: 1.55.0 tailwind: 4.0.0 - vite-plugin-markdown: 2.1.0_vite@3.1.3 - vite-plugin-svgr: 2.2.1_vite@3.1.3 + vite-plugin-markdown: 2.1.0_vite@3.1.4 + vite-plugin-svgr: 2.2.1_vite@3.1.4 apps/server: specifiers: {} apps/web: specifiers: - '@fontsource/inter': ^4.5.11 - '@rspc/client': ^0.0.6 + '@fontsource/inter': ^4.5.13 + '@rspc/client': ^0.1.2 '@sd/client': workspace:* '@sd/interface': workspace:* '@sd/ui': workspace:* - '@tanstack/react-query': ^4.0.10 - '@types/react': ^18.0.15 + '@tanstack/react-query': ^4.10.1 + '@types/react': ^18.0.21 '@types/react-dom': ^18.0.6 - '@vitejs/plugin-react': ^2.0.0 - autoprefixer: ^10.4.7 - postcss: ^8.4.14 + '@vitejs/plugin-react': ^2.1.0 + autoprefixer: ^10.4.12 + postcss: ^8.4.17 react: ^18.2.0 react-dom: ^18.2.0 + rollup-plugin-visualizer: ^5.8.2 tailwind: ^4.0.0 - typescript: ^4.7.4 - vite: ^3.0.3 + typescript: ^4.8.4 + vite: ^3.1.4 + vite-plugin-html: ^3.2.0 vite-plugin-svgr: ^2.2.1 - vite-plugin-tsconfig-paths: ^1.1.0 + vite-plugin-tsconfig-paths: ^1.2.0 dependencies: - '@fontsource/inter': 4.5.12 - '@rspc/client': 0.0.6 + '@fontsource/inter': 4.5.13 + '@rspc/client': 0.1.2 '@sd/client': link:../../packages/client '@sd/interface': link:../../packages/interface '@sd/ui': link:../../packages/ui - '@tanstack/react-query': 4.6.0_biqbaboplfbrettd7655fr4n2y + '@tanstack/react-query': 4.10.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 devDependencies: '@types/react': 18.0.21 '@types/react-dom': 18.0.6 - '@vitejs/plugin-react': 2.1.0_vite@3.1.3 - autoprefixer: 10.4.12_postcss@8.4.16 - postcss: 8.4.16 + '@vitejs/plugin-react': 2.1.0_vite@3.1.4 + autoprefixer: 10.4.12_postcss@8.4.17 + postcss: 8.4.17 + rollup-plugin-visualizer: 5.8.2 tailwind: 4.0.0 - typescript: 4.8.3 - vite: 3.1.3 - vite-plugin-svgr: 2.2.1_vite@3.1.3 - vite-plugin-tsconfig-paths: 1.2.0_qzzqzik23fiaove4fwm46zpole + typescript: 4.8.4 + vite: 3.1.4 + vite-plugin-html: 3.2.0_vite@3.1.4 + vite-plugin-svgr: 2.2.1_vite@3.1.4 + vite-plugin-tsconfig-paths: 1.2.0_almlqgfwpyp2i4b7lhcrozmu7m crates/sync/example: specifiers: '@rspc/client': ~0.1.2 '@rspc/solid': ~0.1.2 '@rspc/tauri': ~0.1.2 - '@tanstack/solid-query': 4.7.1 - '@tauri-apps/cli': ^1.1.0 + '@tanstack/solid-query': 4.10.1 + '@tauri-apps/cli': ^1.1.1 '@types/babel__core': ^7.1.19 - '@types/node': ^18.7.10 + '@types/node': ^18.8.2 autoprefixer: ^10.4.12 clsx: ^1.2.1 - postcss: ^8.4.16 - solid-js: ^1.4.7 + postcss: ^8.4.17 + solid-js: ^1.5.7 tailwindcss: ^3.1.8 - typescript: ^4.7.4 - vite: ^3.0.0 - vite-plugin-solid: ^2.3.0 + typescript: ^4.8.4 + vite: ^3.1.4 + vite-plugin-solid: ^2.3.9 dependencies: '@rspc/client': 0.1.2 - '@rspc/solid': 0.1.2_g3bwuoybcazh55rssfvtneirfq + '@rspc/solid': 0.1.2_cv7ovwikjqypkqjgvnamt35pny '@rspc/tauri': 0.1.2 - '@tanstack/solid-query': 4.7.1_solid-js@1.5.7 + '@tanstack/solid-query': 4.10.1_solid-js@1.5.7 clsx: 1.2.1 solid-js: 1.5.7 devDependencies: '@tauri-apps/cli': 1.1.1 '@types/babel__core': 7.1.19 - '@types/node': 18.7.20 - autoprefixer: 10.4.12_postcss@8.4.16 - postcss: 8.4.16 - tailwindcss: 3.1.8_postcss@8.4.16 - typescript: 4.8.3 - vite: 3.1.3 - vite-plugin-solid: 2.3.9_solid-js@1.5.7+vite@3.1.3 + '@types/node': 18.8.2 + autoprefixer: 10.4.12_postcss@8.4.17 + postcss: 8.4.17 + tailwindcss: 3.1.8 + typescript: 4.8.4 + vite: 3.1.4 + vite-plugin-solid: 2.3.9_solid-js@1.5.7+vite@3.1.4 docs: specifiers: {} @@ -271,50 +275,52 @@ importers: packages/client: specifiers: - '@rspc/client': ^0.0.6 - '@rspc/react': ^0.0.6 + '@rspc/client': ^0.1.2 + '@rspc/react': ^0.1.2 '@sd/config': workspace:* - '@tanstack/react-query': ^4.0.10 - '@types/lodash': ^4.14.182 - '@types/react': ^18.0.15 + '@sd/interface': workspace:* + '@tanstack/react-query': ^4.10.1 + '@types/lodash': ^4.14.186 + '@types/react': ^18.0.21 eventemitter3: ^4.0.7 immer: ^9.0.15 lodash: ^4.17.21 scripts: '*' tsconfig: '*' - typescript: ^4.7.4 + typescript: ^4.8.4 valtio: ^1.7.0 valtio-persist: ^1.0.2 - zustand: 4.0.0 + zustand: 4.1.1 dependencies: - '@rspc/client': 0.0.6 - '@rspc/react': 0.0.6 + '@rspc/client': 0.1.2 + '@rspc/react': 0.1.2_2j6p62nqyqxwo4xyixi65nw6l4 '@sd/config': link:../config - '@tanstack/react-query': 4.6.0 + '@sd/interface': link:../interface + '@tanstack/react-query': 4.10.1 eventemitter3: 4.0.7 immer: 9.0.15 lodash: 4.17.21 valtio: 1.7.0 valtio-persist: 1.0.2_valtio@1.7.0 - zustand: 4.0.0_immer@9.0.15 + zustand: 4.1.1_immer@9.0.15 devDependencies: - '@types/lodash': 4.14.185 + '@types/lodash': 4.14.186 '@types/react': 18.0.21 scripts: 0.1.0 tsconfig: 7.0.0 - typescript: 4.8.3 + typescript: 4.8.4 packages/config: specifiers: - '@typescript-eslint/eslint-plugin': ^5.30.7 - '@typescript-eslint/parser': ^5.30.7 - eslint: ^8.21.0 + '@typescript-eslint/eslint-plugin': ^5.39.0 + '@typescript-eslint/parser': ^5.39.0 + eslint: ^8.24.0 eslint-config-prettier: ^8.5.0 - eslint-plugin-react: ^7.30.1 + eslint-plugin-react: ^7.31.8 eslint-plugin-react-hooks: ^4.6.0 devDependencies: - '@typescript-eslint/eslint-plugin': 5.38.0_2azyxy5wfmd73v3pbt5rvmgcsm - '@typescript-eslint/parser': 5.38.0_eslint@8.24.0 + '@typescript-eslint/eslint-plugin': 5.39.0_taj4374tq64ju3xgkdrtdwfble + '@typescript-eslint/parser': 5.39.0_eslint@8.24.0 eslint: 8.24.0 eslint-config-prettier: 8.5.0_eslint@8.24.0 eslint-plugin-react: 7.31.8_eslint@8.24.0 @@ -322,101 +328,105 @@ importers: packages/interface: specifiers: - '@fontsource/inter': ^4.5.11 - '@headlessui/react': ^1.6.6 - '@heroicons/react': ^2.0.10 + '@fontsource/inter': ^4.5.13 + '@headlessui/react': ^1.7.3 + '@heroicons/react': ^2.0.12 '@radix-ui/react-dialog': ^1.0.0 '@radix-ui/react-dropdown-menu': ^1.0.0 '@radix-ui/react-icons': ^1.1.1 - '@radix-ui/react-progress': ^0.1.4 - '@radix-ui/react-slider': ^0.1.4 + '@radix-ui/react-progress': ^1.0.0 + '@radix-ui/react-slider': ^1.0.0 '@radix-ui/react-tabs': ^1.0.0 + '@radix-ui/react-toast': ^1.0.0 '@radix-ui/react-tooltip': ^1.0.0 '@sd/assets': workspace:* '@sd/client': workspace:* '@sd/config': workspace:* '@sd/ui': workspace:* - '@tailwindcss/forms': ^0.5.2 - '@tanstack/react-query': ^4.2.3 - '@tanstack/react-query-devtools': ^4.0.10 + '@tailwindcss/forms': ^0.5.3 + '@tanstack/react-query': ^4.10.1 + '@tanstack/react-query-devtools': ^4.10.1 '@tanstack/react-virtual': 3.0.0-beta.18 '@types/babel-core': ^6.25.7 '@types/byte-size': ^8.1.0 - '@types/lodash': ^4.14.182 - '@types/node': ^18.6.1 + '@types/lodash': ^4.14.186 + '@types/node': ^18.8.2 '@types/pretty-bytes': ^5.2.0 - '@types/react': ^18.0.15 + '@types/react': ^18.0.21 '@types/react-dom': ^18.0.6 '@types/react-router-dom': ^5.3.3 '@types/react-table': ^7.7.12 '@types/react-window': ^1.8.5 '@types/tailwindcss': ^3.1.0 - '@vitejs/plugin-react': ^2.0.0 - autoprefixer: ^10.4.7 + '@vitejs/plugin-react': ^2.1.0 + autoprefixer: ^10.4.12 byte-size: ^8.1.0 clsx: ^1.2.1 - concurrently: ^7.3.0 - date-fns: ^2.29.2 + concurrently: ^7.4.0 + date-fns: ^2.29.3 + dayjs: ^1.11.5 immer: ^9.0.15 - jotai: ^1.7.6 + jotai: ^1.8.4 lodash: ^4.17.21 moment: ^2.29.4 phosphor-react: ^1.4.1 prettier: ^2.7.1 pretty-bytes: ^6.0.0 react: ^18.2.0 - react-colorful: ^5.5.1 - react-countup: ^6.3.0 + react-colorful: ^5.6.1 + react-countup: ^6.3.1 react-dom: ^18.2.0 react-dropzone: ^14.2.2 react-error-boundary: ^3.1.4 - react-hook-form: ^7.33.1 + react-hook-form: ^7.36.1 react-hotkeys-hook: ^3.4.7 react-json-view: ^1.21.3 react-loading-icons: ^1.1.0 react-loading-skeleton: ^3.1.0 react-portal: ^4.2.2 - react-query: ^4.0.0 - react-router: 6.3.0 - react-router-dom: 6.3.0 - react-scrollbars-custom: ^4.1.0 + react-query: ^3.39.2 + react-router: 6.4.2 + react-router-dom: 6.4.2 + react-scrollbars-custom: ^4.1.1 react-spline: ^1.2.1 - react-transition-group: ^4.4.2 - react-virtuoso: ^2.16.5 + react-transition-group: ^4.4.5 + react-virtuoso: ^2.19.1 rooks: ^5.14.0 - tailwindcss: ^3.1.6 - typescript: ^4.7.4 + tailwindcss: ^3.1.8 + typescript: ^4.8.4 use-count-up: ^3.0.1 - use-debounce: ^8.0.3 + use-debounce: ^8.0.4 valtio: ^1.7.0 valtio-persist: ^1.0.2 - vite: ^3.0.3 + vite: ^3.1.4 vite-plugin-svgr: ^2.2.1 - zod: ^3.18.0 - zustand: 4.0.0 + zod: ^3.19.1 + zustand: 4.1.1 dependencies: - '@fontsource/inter': 4.5.12 - '@headlessui/react': 1.7.2_biqbaboplfbrettd7655fr4n2y - '@heroicons/react': 2.0.11_react@18.2.0 + '@fontsource/inter': 4.5.13 + '@headlessui/react': 1.7.3_biqbaboplfbrettd7655fr4n2y + '@heroicons/react': 2.0.12_react@18.2.0 '@radix-ui/react-dialog': 1.0.0_rj7ozvcq3uehdlnj3cbwzbi5ce '@radix-ui/react-dropdown-menu': 1.0.0_rj7ozvcq3uehdlnj3cbwzbi5ce '@radix-ui/react-icons': 1.1.1_react@18.2.0 - '@radix-ui/react-progress': 0.1.4_react@18.2.0 - '@radix-ui/react-slider': 0.1.4_react@18.2.0 + '@radix-ui/react-progress': 1.0.0_biqbaboplfbrettd7655fr4n2y + '@radix-ui/react-slider': 1.0.0_biqbaboplfbrettd7655fr4n2y '@radix-ui/react-tabs': 1.0.0_biqbaboplfbrettd7655fr4n2y + '@radix-ui/react-toast': 1.0.0_biqbaboplfbrettd7655fr4n2y '@radix-ui/react-tooltip': 1.0.0_rj7ozvcq3uehdlnj3cbwzbi5ce '@sd/assets': link:../assets '@sd/client': link:../client '@sd/ui': link:../ui '@tailwindcss/forms': 0.5.3_tailwindcss@3.1.8 - '@tanstack/react-query': 4.6.0_biqbaboplfbrettd7655fr4n2y - '@tanstack/react-query-devtools': 4.6.0_35w334xqtbzboqulr5pz522esm + '@tanstack/react-query': 4.10.1_biqbaboplfbrettd7655fr4n2y + '@tanstack/react-query-devtools': 4.10.1_u34amavde33a6d2g2dyykucmvy '@tanstack/react-virtual': 3.0.0-beta.18_react@18.2.0 - '@vitejs/plugin-react': 2.1.0_vite@3.1.3 + '@vitejs/plugin-react': 2.1.0_vite@3.1.4 autoprefixer: 10.4.12 byte-size: 8.1.0 clsx: 1.2.1 date-fns: 2.29.3 + dayjs: 1.11.5 immer: 9.0.15 jotai: 1.8.4_2l3h3ngvmdtjc5tzmiu2yv72be lodash: 4.17.21 @@ -435,27 +445,27 @@ importers: react-loading-icons: 1.1.0 react-loading-skeleton: 3.1.0_react@18.2.0 react-portal: 4.2.2_biqbaboplfbrettd7655fr4n2y - react-query: 4.0.0_biqbaboplfbrettd7655fr4n2y - react-router: 6.3.0_react@18.2.0 - react-router-dom: 6.3.0_biqbaboplfbrettd7655fr4n2y + react-query: 3.39.2_biqbaboplfbrettd7655fr4n2y + react-router: 6.4.2_react@18.2.0 + react-router-dom: 6.4.2_biqbaboplfbrettd7655fr4n2y react-scrollbars-custom: 4.1.1_biqbaboplfbrettd7655fr4n2y react-spline: 1.2.1_react@18.2.0 react-transition-group: 4.4.5_biqbaboplfbrettd7655fr4n2y - react-virtuoso: 2.19.0_biqbaboplfbrettd7655fr4n2y + react-virtuoso: 2.19.1_biqbaboplfbrettd7655fr4n2y rooks: 5.14.1_biqbaboplfbrettd7655fr4n2y tailwindcss: 3.1.8 use-count-up: 3.0.1_react@18.2.0 use-debounce: 8.0.4_react@18.2.0 - valtio: 1.7.0_react@18.2.0+vite@3.1.3 + valtio: 1.7.0_react@18.2.0+vite@3.1.4 valtio-persist: 1.0.2_valtio@1.7.0 zod: 3.19.1 - zustand: 4.0.0_immer@9.0.15+react@18.2.0 + zustand: 4.1.1_immer@9.0.15+react@18.2.0 devDependencies: '@sd/config': link:../config '@types/babel-core': 6.25.7 '@types/byte-size': 8.1.0 - '@types/lodash': 4.14.185 - '@types/node': 18.7.20 + '@types/lodash': 4.14.186 + '@types/node': 18.8.2 '@types/pretty-bytes': 5.2.0 '@types/react': 18.0.21 '@types/react-dom': 18.0.6 @@ -465,15 +475,15 @@ importers: '@types/tailwindcss': 3.1.0 concurrently: 7.4.0 prettier: 2.7.1 - typescript: 4.8.3 - vite: 3.1.3 - vite-plugin-svgr: 2.2.1_vite@3.1.3 + typescript: 4.8.4 + vite: 3.1.4 + vite-plugin-svgr: 2.2.1_vite@3.1.4 packages/ui: specifiers: - '@babel/core': ^7.18.9 - '@headlessui/react': ^1.6.6 - '@heroicons/react': ^2.0.10 + '@babel/core': ^7.19.3 + '@headlessui/react': ^1.7.3 + '@heroicons/react': ^2.0.12 '@radix-ui/react-context-menu': ^1.0.0 '@radix-ui/react-dropdown-menu': ^1.0.0 '@sd/config': workspace:* @@ -487,68 +497,68 @@ importers: '@storybook/preset-scss': ^1.0.3 '@storybook/react': ^6.5.12 '@storybook/testing-library': ^0.0.13 - '@tailwindcss/forms': ^0.5.2 - '@tailwindcss/line-clamp': ^0.4.0 - '@tailwindcss/typography': ^0.5.4 - '@types/react': ^18.0.15 + '@tailwindcss/forms': ^0.5.3 + '@tailwindcss/line-clamp': ^0.4.2 + '@tailwindcss/typography': ^0.5.7 + '@types/react': ^18.0.21 '@types/react-dom': ^18.0.6 - autoprefixer: ^10.4.7 + autoprefixer: ^10.4.12 babel-loader: ^8.2.5 class-variance-authority: ^0.2.3 clsx: ^1.2.1 css-loader: ^6.7.1 phosphor-react: ^1.4.1 - postcss: ^8.4.14 + postcss: ^8.4.17 postcss-loader: ^7.0.1 react: ^18.2.0 react-dom: ^18.2.0 - sass: ^1.54.0 + sass: ^1.55.0 sass-loader: ^13.0.2 - storybook: ^6.5.10 - storybook-tailwind-dark-mode: ^1.0.12 + storybook: ^6.5.12 + storybook-tailwind-dark-mode: ^1.0.15 style-loader: ^3.3.1 - tailwindcss: ^3.1.6 - typescript: ^4.7.4 + tailwindcss: ^3.1.8 + typescript: ^4.8.4 dependencies: - '@headlessui/react': 1.7.2_biqbaboplfbrettd7655fr4n2y - '@heroicons/react': 2.0.11_react@18.2.0 + '@headlessui/react': 1.7.3_biqbaboplfbrettd7655fr4n2y + '@heroicons/react': 2.0.12_react@18.2.0 '@radix-ui/react-context-menu': 1.0.0_rj7ozvcq3uehdlnj3cbwzbi5ce '@radix-ui/react-dropdown-menu': 1.0.0_rj7ozvcq3uehdlnj3cbwzbi5ce '@tailwindcss/forms': 0.5.3_tailwindcss@3.1.8 - class-variance-authority: 0.2.3_typescript@4.8.3 + class-variance-authority: 0.2.3_typescript@4.8.4 clsx: 1.2.1 phosphor-react: 1.4.1_react@18.2.0 - postcss: 8.4.16 + postcss: 8.4.17 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 - storybook: 6.5.12_bb2lpehc4sm6fnn2zwweqmbmoy - tailwindcss: 3.1.8_postcss@8.4.16 + storybook: 6.5.12_yalvw3r2waubxycyb7k7qsruca + tailwindcss: 3.1.8 devDependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@sd/config': link:../config '@storybook/addon-actions': 6.5.12_biqbaboplfbrettd7655fr4n2y - '@storybook/addon-essentials': 6.5.12_zxcu6pznswh4g42qafokfu6cri - '@storybook/addon-interactions': 6.5.12_synxnxbvuog6xowtndxwunielm + '@storybook/addon-essentials': 6.5.12_att4lxsvixpqlbweimew737fji + '@storybook/addon-interactions': 6.5.12_335cwx3de7hzzvfoyjqbus3zhu '@storybook/addon-links': 6.5.12_biqbaboplfbrettd7655fr4n2y '@storybook/addon-postcss': 2.0.0 - '@storybook/builder-webpack5': 6.5.12_bb2lpehc4sm6fnn2zwweqmbmoy - '@storybook/manager-webpack5': 6.5.12_bb2lpehc4sm6fnn2zwweqmbmoy + '@storybook/builder-webpack5': 6.5.12_yalvw3r2waubxycyb7k7qsruca + '@storybook/manager-webpack5': 6.5.12_yalvw3r2waubxycyb7k7qsruca '@storybook/preset-scss': 1.0.3_bwzccejaufux335em5rfxw325i - '@storybook/react': 6.5.12_4pckcgkfmm4wjiducqsnlnfdlm + '@storybook/react': 6.5.12_k3yxu2mvbthdjhmwp2roy5mt64 '@storybook/testing-library': 0.0.13_biqbaboplfbrettd7655fr4n2y '@tailwindcss/line-clamp': 0.4.2_tailwindcss@3.1.8 '@tailwindcss/typography': 0.5.7_tailwindcss@3.1.8 '@types/react': 18.0.21 '@types/react-dom': 18.0.6 - autoprefixer: 10.4.12_postcss@8.4.16 - babel-loader: 8.2.5_@babel+core@7.19.1 + autoprefixer: 10.4.12_postcss@8.4.17 + babel-loader: 8.2.5_@babel+core@7.19.3 css-loader: 6.7.1 - postcss-loader: 7.0.1_postcss@8.4.16 + postcss-loader: 7.0.1_postcss@8.4.17 sass: 1.55.0 sass-loader: 13.0.2_sass@1.55.0 storybook-tailwind-dark-mode: 1.0.15_biqbaboplfbrettd7655fr4n2y style-loader: 3.3.1 - typescript: 4.8.3 + typescript: 4.8.4 packages: @@ -565,27 +575,22 @@ packages: dependencies: '@babel/highlight': 7.18.6 - /@babel/compat-data/7.19.1: - resolution: {integrity: sha512-72a9ghR0gnESIa7jBN53U32FOVCEoztyIlKaNoU05zRhEecduGK9L9c3ww7Mp06JiR+0ls0GBPFJQwwtjn9ksg==} - engines: {node: '>=6.9.0'} - /@babel/compat-data/7.19.3: resolution: {integrity: sha512-prBHMK4JYYK+wDjJF1q99KK4JLL+egWS4nmNqdlMUgCExMZ+iZW0hGhyC3VEbsPjvaN0TBhW//VIFwBrk8sEiw==} engines: {node: '>=6.9.0'} - dev: true /@babel/core/7.12.9: resolution: {integrity: sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.18.6 - '@babel/generator': 7.19.0 + '@babel/generator': 7.19.3 '@babel/helper-module-transforms': 7.19.0 '@babel/helpers': 7.19.0 - '@babel/parser': 7.19.1 + '@babel/parser': 7.19.3 '@babel/template': 7.18.10 - '@babel/traverse': 7.19.1 - '@babel/types': 7.19.0 + '@babel/traverse': 7.19.3 + '@babel/types': 7.19.3 convert-source-map: 1.8.0 debug: 4.3.4 gensync: 1.0.0-beta.2 @@ -604,7 +609,7 @@ packages: '@ampproject/remapping': 2.2.0 '@babel/code-frame': 7.18.6 '@babel/generator': 7.17.7 - '@babel/helper-compilation-targets': 7.19.1_@babel+core@7.17.8 + '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.17.8 '@babel/helper-module-transforms': 7.19.0 '@babel/helpers': 7.19.0 '@babel/parser': 7.17.8 @@ -620,28 +625,6 @@ packages: - supports-color dev: true - /@babel/core/7.19.1: - resolution: {integrity: sha512-1H8VgqXme4UXCRv7/Wa1bq7RVymKOzC7znjyFM8KiEzwFqcKUKYNoQef4GhdklgNvoBXyW4gYhuBNCM5o1zImw==} - engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.2.0 - '@babel/code-frame': 7.18.6 - '@babel/generator': 7.19.0 - '@babel/helper-compilation-targets': 7.19.1_@babel+core@7.19.1 - '@babel/helper-module-transforms': 7.19.0 - '@babel/helpers': 7.19.0 - '@babel/parser': 7.19.1 - '@babel/template': 7.18.10 - '@babel/traverse': 7.19.1 - '@babel/types': 7.19.0 - convert-source-map: 1.8.0 - debug: 4.3.4 - gensync: 1.0.0-beta.2 - json5: 2.2.1 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - /@babel/core/7.19.3: resolution: {integrity: sha512-WneDJxdsjEvyKtXKsaBGbDeiyOjR5vYq4HcShxnIbG0qixpoHjI3MqeZM9NDvsojNCEBItQE4juOo/bU6e72gQ==} engines: {node: '>=6.9.0'} @@ -663,7 +646,6 @@ packages: semver: 6.3.0 transitivePeerDependencies: - supports-color - dev: true /@babel/generator/7.17.7: resolution: {integrity: sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==} @@ -674,14 +656,6 @@ packages: source-map: 0.5.7 dev: true - /@babel/generator/7.19.0: - resolution: {integrity: sha512-S1ahxf1gZ2dpoiFgA+ohK9DIpz50bJ0CWs7Zlzb54Z4sG8qmdIrGrVqmy1sAtTVRb+9CU6U8VqT9L0Zj7hxHVg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.19.0 - '@jridgewell/gen-mapping': 0.3.2 - jsesc: 2.5.2 - /@babel/generator/7.19.3: resolution: {integrity: sha512-fqVZnmp1ncvZU757UzDheKZpfPgatqY59XtW2/j/18H7u76akb8xqvjw82f+i2UKd/ksYsSick/BCLQUUtJ/qQ==} engines: {node: '>=6.9.0'} @@ -689,54 +663,28 @@ packages: '@babel/types': 7.19.3 '@jridgewell/gen-mapping': 0.3.2 jsesc: 2.5.2 - dev: true /@babel/helper-annotate-as-pure/7.18.6: resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.19.0 + '@babel/types': 7.19.3 /@babel/helper-builder-binary-assignment-operator-visitor/7.18.9: resolution: {integrity: sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-explode-assignable-expression': 7.18.6 - '@babel/types': 7.19.0 + '@babel/types': 7.19.3 - /@babel/helper-compilation-targets/7.19.1_@babel+core@7.17.8: - resolution: {integrity: sha512-LlLkkqhCMyz2lkQPvJNdIYU7O5YjWRgC2R4omjCTpZd8u8KMQzZvX4qce+/BluN1rcQiV7BoGUpmQ0LeHerbhg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/compat-data': 7.19.1 - '@babel/core': 7.17.8 - '@babel/helper-validator-option': 7.18.6 - browserslist: 4.21.4 - semver: 6.3.0 - dev: true - - /@babel/helper-compilation-targets/7.19.1_@babel+core@7.19.1: - resolution: {integrity: sha512-LlLkkqhCMyz2lkQPvJNdIYU7O5YjWRgC2R4omjCTpZd8u8KMQzZvX4qce+/BluN1rcQiV7BoGUpmQ0LeHerbhg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/compat-data': 7.19.1 - '@babel/core': 7.19.1 - '@babel/helper-validator-option': 7.18.6 - browserslist: 4.21.4 - semver: 6.3.0 - - /@babel/helper-compilation-targets/7.19.3_@babel+core@7.19.1: + /@babel/helper-compilation-targets/7.19.3_@babel+core@7.17.8: resolution: {integrity: sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: '@babel/compat-data': 7.19.3 - '@babel/core': 7.19.1 + '@babel/core': 7.17.8 '@babel/helper-validator-option': 7.18.6 browserslist: 4.21.4 semver: 6.3.0 @@ -753,15 +701,14 @@ packages: '@babel/helper-validator-option': 7.18.6 browserslist: 4.21.4 semver: 6.3.0 - dev: true - /@babel/helper-create-class-features-plugin/7.19.0_@babel+core@7.19.1: + /@babel/helper-create-class-features-plugin/7.19.0_@babel+core@7.19.3: resolution: {integrity: sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-annotate-as-pure': 7.18.6 '@babel/helper-environment-visitor': 7.18.9 '@babel/helper-function-name': 7.19.0 @@ -772,26 +719,26 @@ packages: transitivePeerDependencies: - supports-color - /@babel/helper-create-regexp-features-plugin/7.19.0_@babel+core@7.19.1: + /@babel/helper-create-regexp-features-plugin/7.19.0_@babel+core@7.19.3: resolution: {integrity: sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-annotate-as-pure': 7.18.6 regexpu-core: 5.2.1 - /@babel/helper-define-polyfill-provider/0.1.5_@babel+core@7.19.1: + /@babel/helper-define-polyfill-provider/0.1.5_@babel+core@7.19.3: resolution: {integrity: sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==} peerDependencies: '@babel/core': ^7.4.0-0 dependencies: - '@babel/core': 7.19.1 - '@babel/helper-compilation-targets': 7.19.1_@babel+core@7.19.1 + '@babel/core': 7.19.3 + '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.19.3 '@babel/helper-module-imports': 7.18.6 '@babel/helper-plugin-utils': 7.19.0 - '@babel/traverse': 7.19.1 + '@babel/traverse': 7.19.3 debug: 4.3.4 lodash.debounce: 4.0.8 resolve: 1.22.1 @@ -799,13 +746,13 @@ packages: transitivePeerDependencies: - supports-color - /@babel/helper-define-polyfill-provider/0.3.3_@babel+core@7.19.1: + /@babel/helper-define-polyfill-provider/0.3.3_@babel+core@7.19.3: resolution: {integrity: sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==} peerDependencies: '@babel/core': ^7.4.0-0 dependencies: - '@babel/core': 7.19.1 - '@babel/helper-compilation-targets': 7.19.1_@babel+core@7.19.1 + '@babel/core': 7.19.3 + '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.19.3 '@babel/helper-plugin-utils': 7.19.0 debug: 4.3.4 lodash.debounce: 4.0.8 @@ -822,39 +769,39 @@ packages: resolution: {integrity: sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.19.0 + '@babel/types': 7.19.3 /@babel/helper-function-name/7.19.0: resolution: {integrity: sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==} engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.18.10 - '@babel/types': 7.19.0 + '@babel/types': 7.19.3 /@babel/helper-hoist-variables/7.18.6: resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.19.0 + '@babel/types': 7.19.3 /@babel/helper-member-expression-to-functions/7.18.9: resolution: {integrity: sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.19.0 + '@babel/types': 7.19.3 /@babel/helper-module-imports/7.16.0: resolution: {integrity: sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.19.0 + '@babel/types': 7.19.3 dev: true /@babel/helper-module-imports/7.18.6: resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.19.0 + '@babel/types': 7.19.3 /@babel/helper-module-transforms/7.19.0: resolution: {integrity: sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ==} @@ -866,8 +813,8 @@ packages: '@babel/helper-split-export-declaration': 7.18.6 '@babel/helper-validator-identifier': 7.19.1 '@babel/template': 7.18.10 - '@babel/traverse': 7.19.1 - '@babel/types': 7.19.0 + '@babel/traverse': 7.19.3 + '@babel/types': 7.19.3 transitivePeerDependencies: - supports-color @@ -875,7 +822,7 @@ packages: resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.19.0 + '@babel/types': 7.19.3 /@babel/helper-plugin-utils/7.10.4: resolution: {integrity: sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==} @@ -884,17 +831,17 @@ packages: resolution: {integrity: sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==} engines: {node: '>=6.9.0'} - /@babel/helper-remap-async-to-generator/7.18.9_@babel+core@7.19.1: + /@babel/helper-remap-async-to-generator/7.18.9_@babel+core@7.19.3: resolution: {integrity: sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-annotate-as-pure': 7.18.6 '@babel/helper-environment-visitor': 7.18.9 '@babel/helper-wrap-function': 7.19.0 - '@babel/types': 7.19.0 + '@babel/types': 7.19.3 transitivePeerDependencies: - supports-color @@ -905,8 +852,8 @@ packages: '@babel/helper-environment-visitor': 7.18.9 '@babel/helper-member-expression-to-functions': 7.18.9 '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/traverse': 7.19.1 - '@babel/types': 7.19.0 + '@babel/traverse': 7.19.3 + '@babel/types': 7.19.3 transitivePeerDependencies: - supports-color @@ -914,19 +861,19 @@ packages: resolution: {integrity: sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.19.0 + '@babel/types': 7.19.3 /@babel/helper-skip-transparent-expression-wrappers/7.18.9: resolution: {integrity: sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.19.0 + '@babel/types': 7.19.3 /@babel/helper-split-export-declaration/7.18.6: resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.19.0 + '@babel/types': 7.19.3 /@babel/helper-string-parser/7.18.10: resolution: {integrity: sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==} @@ -946,8 +893,8 @@ packages: dependencies: '@babel/helper-function-name': 7.19.0 '@babel/template': 7.18.10 - '@babel/traverse': 7.19.1 - '@babel/types': 7.19.0 + '@babel/traverse': 7.19.3 + '@babel/types': 7.19.3 transitivePeerDependencies: - supports-color @@ -956,8 +903,8 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.18.10 - '@babel/traverse': 7.19.1 - '@babel/types': 7.19.0 + '@babel/traverse': 7.19.3 + '@babel/types': 7.19.3 transitivePeerDependencies: - supports-color @@ -977,164 +924,156 @@ packages: '@babel/types': 7.17.0 dev: true - /@babel/parser/7.19.1: - resolution: {integrity: sha512-h7RCSorm1DdTVGJf3P2Mhj3kdnkmF/EiysUkzS2TdgAYqyjFdMQJbVuXOBej2SBJaXan/lIVtT6KkGbyyq753A==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.19.0 - /@babel/parser/7.19.3: resolution: {integrity: sha512-pJ9xOlNWHiy9+FuFP09DEAFbAn4JskgRsVcc169w2xRBC3FRGuQEwjeIMMND9L2zc0iEhO/tGv4Zq+km+hxNpQ==} engines: {node: '>=6.0.0'} hasBin: true dependencies: '@babel/types': 7.19.3 - dev: true - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.18.6_@babel+core@7.19.1: + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.18.9_@babel+core@7.19.1: + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.18.9_@babel+core@7.19.3: resolution: {integrity: sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 - '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.19.1 + '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.19.3 - /@babel/plugin-proposal-async-generator-functions/7.19.1_@babel+core@7.19.1: + /@babel/plugin-proposal-async-generator-functions/7.19.1_@babel+core@7.19.3: resolution: {integrity: sha512-0yu8vNATgLy4ivqMNBIwb1HebCelqN7YX8SL3FDXORv/RqT0zEEWUCH4GH44JsSrvCu6GqnAdR5EBFAPeNBB4Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-environment-visitor': 7.18.9 '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.19.1 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.19.1 + '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.19.3 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.19.3 transitivePeerDependencies: - supports-color - /@babel/plugin-proposal-class-properties/7.18.6_@babel+core@7.19.1: + /@babel/plugin-proposal-class-properties/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 - '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.19.1 + '@babel/core': 7.19.3 + '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.19.3 '@babel/helper-plugin-utils': 7.19.0 transitivePeerDependencies: - supports-color - /@babel/plugin-proposal-class-static-block/7.18.6_@babel+core@7.19.1: + /@babel/plugin-proposal-class-static-block/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 dependencies: - '@babel/core': 7.19.1 - '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.19.1 + '@babel/core': 7.19.3 + '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.19.3 '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.19.1 + '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.19.3 transitivePeerDependencies: - supports-color - /@babel/plugin-proposal-decorators/7.19.1_@babel+core@7.19.1: - resolution: {integrity: sha512-LfIKNBBY7Q1OX5C4xAgRQffOg2OnhAo9fnbcOHgOC9Yytm2Sw+4XqHufRYU86tHomzepxtvuVaNO+3EVKR4ivw==} + /@babel/plugin-proposal-decorators/7.19.3_@babel+core@7.19.3: + resolution: {integrity: sha512-MbgXtNXqo7RTKYIXVchVJGPvaVufQH3pxvQyfbGvNw1DObIhph+PesYXJTcd8J4DdWibvf6Z2eanOyItX8WnJg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 - '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.19.1 + '@babel/core': 7.19.3 + '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.19.3 '@babel/helper-plugin-utils': 7.19.0 '@babel/helper-replace-supers': 7.19.1 '@babel/helper-split-export-declaration': 7.18.6 - '@babel/plugin-syntax-decorators': 7.19.0_@babel+core@7.19.1 + '@babel/plugin-syntax-decorators': 7.19.0_@babel+core@7.19.3 transitivePeerDependencies: - supports-color - /@babel/plugin-proposal-dynamic-import/7.18.6_@babel+core@7.19.1: + /@babel/plugin-proposal-dynamic-import/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.19.1 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.19.3 - /@babel/plugin-proposal-export-default-from/7.18.10_@babel+core@7.19.1: + /@babel/plugin-proposal-export-default-from/7.18.10_@babel+core@7.19.3: resolution: {integrity: sha512-5H2N3R2aQFxkV4PIBUR/i7PUSwgTZjouJKzI8eKswfIjT0PhvzkPn0t0wIS5zn6maQuvtT0t1oHtMUz61LOuow==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-export-default-from': 7.18.6_@babel+core@7.19.1 + '@babel/plugin-syntax-export-default-from': 7.18.6_@babel+core@7.19.3 - /@babel/plugin-proposal-export-namespace-from/7.18.9_@babel+core@7.19.1: + /@babel/plugin-proposal-export-namespace-from/7.18.9_@babel+core@7.19.3: resolution: {integrity: sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.19.1 + '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.19.3 - /@babel/plugin-proposal-json-strings/7.18.6_@babel+core@7.19.1: + /@babel/plugin-proposal-json-strings/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.19.1 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.19.3 - /@babel/plugin-proposal-logical-assignment-operators/7.18.9_@babel+core@7.19.1: + /@babel/plugin-proposal-logical-assignment-operators/7.18.9_@babel+core@7.19.3: resolution: {integrity: sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.19.1 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.19.3 - /@babel/plugin-proposal-nullish-coalescing-operator/7.18.6_@babel+core@7.19.1: + /@babel/plugin-proposal-nullish-coalescing-operator/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.19.1 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.19.3 - /@babel/plugin-proposal-numeric-separator/7.18.6_@babel+core@7.19.1: + /@babel/plugin-proposal-numeric-separator/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.19.1 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.19.3 /@babel/plugin-proposal-object-rest-spread/7.12.1_@babel+core@7.12.9: resolution: {integrity: sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==} @@ -1142,163 +1081,163 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.10.4 '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.12.9 '@babel/plugin-transform-parameters': 7.18.8_@babel+core@7.12.9 - /@babel/plugin-proposal-object-rest-spread/7.18.9_@babel+core@7.19.1: + /@babel/plugin-proposal-object-rest-spread/7.18.9_@babel+core@7.19.3: resolution: {integrity: sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.19.1 - '@babel/core': 7.19.1 - '@babel/helper-compilation-targets': 7.19.1_@babel+core@7.19.1 + '@babel/compat-data': 7.19.3 + '@babel/core': 7.19.3 + '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.19.3 '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.19.1 - '@babel/plugin-transform-parameters': 7.18.8_@babel+core@7.19.1 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.19.3 + '@babel/plugin-transform-parameters': 7.18.8_@babel+core@7.19.3 - /@babel/plugin-proposal-optional-catch-binding/7.18.6_@babel+core@7.19.1: + /@babel/plugin-proposal-optional-catch-binding/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.19.1 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.19.3 - /@babel/plugin-proposal-optional-chaining/7.18.9_@babel+core@7.19.1: + /@babel/plugin-proposal-optional-chaining/7.18.9_@babel+core@7.19.3: resolution: {integrity: sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.19.1 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.19.3 - /@babel/plugin-proposal-private-methods/7.18.6_@babel+core@7.19.1: + /@babel/plugin-proposal-private-methods/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 - '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.19.1 + '@babel/core': 7.19.3 + '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.19.3 '@babel/helper-plugin-utils': 7.19.0 transitivePeerDependencies: - supports-color - /@babel/plugin-proposal-private-property-in-object/7.18.6_@babel+core@7.19.1: + /@babel/plugin-proposal-private-property-in-object/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.19.1 + '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.19.3 '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.19.1 + '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.19.3 transitivePeerDependencies: - supports-color - /@babel/plugin-proposal-unicode-property-regex/7.18.6_@babel+core@7.19.1: + /@babel/plugin-proposal-unicode-property-regex/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} engines: {node: '>=4'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 - '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.19.1 + '@babel/core': 7.19.3 + '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.19.3 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.19.1: + /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.19.3: resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.19.1: + /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.19.3: resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-syntax-class-static-block/7.14.5_@babel+core@7.19.1: + /@babel/plugin-syntax-class-static-block/7.14.5_@babel+core@7.19.3: resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-syntax-decorators/7.19.0_@babel+core@7.19.1: + /@babel/plugin-syntax-decorators/7.19.0_@babel+core@7.19.3: resolution: {integrity: sha512-xaBZUEDntt4faL1yN8oIFlhfXeQAWJW7CLKYsHTUqriCUbj8xOra8bfxxKGi/UwExPFBuPdH4XfHc9rGQhrVkQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.19.1: + /@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.19.3: resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-syntax-export-default-from/7.18.6_@babel+core@7.19.1: + /@babel/plugin-syntax-export-default-from/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-Kr//z3ujSVNx6E9z9ih5xXXMqK07VVTuqPmqGe6Mss/zW5XPeLZeSDZoP9ab/hT4wPKqAgjl2PnhPrcpk8Seew==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-syntax-export-namespace-from/7.8.3_@babel+core@7.19.1: + /@babel/plugin-syntax-export-namespace-from/7.8.3_@babel+core@7.19.3: resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-syntax-flow/7.18.6_@babel+core@7.19.1: + /@babel/plugin-syntax-flow/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-syntax-import-assertions/7.18.6_@babel+core@7.19.1: + /@babel/plugin-syntax-import-assertions/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.19.1: + /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.19.3: resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 /@babel/plugin-syntax-jsx/7.12.1_@babel+core@7.12.9: @@ -1309,15 +1248,6 @@ packages: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.19.1: - resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} engines: {node: '>=6.9.0'} @@ -1326,30 +1256,29 @@ packages: dependencies: '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 - dev: true - /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.19.1: + /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.19.3: resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.19.1: + /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.19.3: resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.19.1: + /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.19.3: resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.12.9: @@ -1360,106 +1289,106 @@ packages: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.19.1: + /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.19.3: resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.19.1: + /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.19.3: resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.19.1: + /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.19.3: resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-syntax-private-property-in-object/7.14.5_@babel+core@7.19.1: + /@babel/plugin-syntax-private-property-in-object/7.14.5_@babel+core@7.19.3: resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.19.1: + /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.19.3: resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-syntax-typescript/7.18.6_@babel+core@7.19.1: + /@babel/plugin-syntax-typescript/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-arrow-functions/7.18.6_@babel+core@7.19.1: + /@babel/plugin-transform-arrow-functions/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-async-to-generator/7.18.6_@babel+core@7.19.1: + /@babel/plugin-transform-async-to-generator/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-module-imports': 7.18.6 '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.19.1 + '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.19.3 transitivePeerDependencies: - supports-color - /@babel/plugin-transform-block-scoped-functions/7.18.6_@babel+core@7.19.1: + /@babel/plugin-transform-block-scoped-functions/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-block-scoping/7.18.9_@babel+core@7.19.1: + /@babel/plugin-transform-block-scoping/7.18.9_@babel+core@7.19.3: resolution: {integrity: sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-classes/7.19.0_@babel+core@7.19.1: + /@babel/plugin-transform-classes/7.19.0_@babel+core@7.19.3: resolution: {integrity: sha512-YfeEE9kCjqTS9IitkgfJuxjcEtLUHMqa8yUJ6zdz8vR7hKuo6mOy2C05P0F1tdMmDCeuyidKnlrw/iTppHcr2A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-compilation-targets': 7.19.1_@babel+core@7.19.1 + '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.19.3 '@babel/helper-environment-visitor': 7.18.9 '@babel/helper-function-name': 7.19.0 '@babel/helper-optimise-call-expression': 7.18.6 @@ -1470,121 +1399,121 @@ packages: transitivePeerDependencies: - supports-color - /@babel/plugin-transform-computed-properties/7.18.9_@babel+core@7.19.1: + /@babel/plugin-transform-computed-properties/7.18.9_@babel+core@7.19.3: resolution: {integrity: sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-destructuring/7.18.13_@babel+core@7.19.1: + /@babel/plugin-transform-destructuring/7.18.13_@babel+core@7.19.3: resolution: {integrity: sha512-TodpQ29XekIsex2A+YJPj5ax2plkGa8YYY6mFjCohk/IG9IY42Rtuj1FuDeemfg2ipxIFLzPeA83SIBnlhSIow==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-dotall-regex/7.18.6_@babel+core@7.19.1: + /@babel/plugin-transform-dotall-regex/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 - '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.19.1 + '@babel/core': 7.19.3 + '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.19.3 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-duplicate-keys/7.18.9_@babel+core@7.19.1: + /@babel/plugin-transform-duplicate-keys/7.18.9_@babel+core@7.19.3: resolution: {integrity: sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-exponentiation-operator/7.18.6_@babel+core@7.19.1: + /@babel/plugin-transform-exponentiation-operator/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-builder-binary-assignment-operator-visitor': 7.18.9 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-flow-strip-types/7.19.0_@babel+core@7.19.1: + /@babel/plugin-transform-flow-strip-types/7.19.0_@babel+core@7.19.3: resolution: {integrity: sha512-sgeMlNaQVbCSpgLSKP4ZZKfsJVnFnNQlUSk6gPYzR/q7tzCgQF2t8RBKAP6cKJeZdveei7Q7Jm527xepI8lNLg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-flow': 7.18.6_@babel+core@7.19.1 + '@babel/plugin-syntax-flow': 7.18.6_@babel+core@7.19.3 - /@babel/plugin-transform-for-of/7.18.8_@babel+core@7.19.1: + /@babel/plugin-transform-for-of/7.18.8_@babel+core@7.19.3: resolution: {integrity: sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-function-name/7.18.9_@babel+core@7.19.1: + /@babel/plugin-transform-function-name/7.18.9_@babel+core@7.19.3: resolution: {integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 - '@babel/helper-compilation-targets': 7.19.1_@babel+core@7.19.1 + '@babel/core': 7.19.3 + '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.19.3 '@babel/helper-function-name': 7.19.0 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-literals/7.18.9_@babel+core@7.19.1: + /@babel/plugin-transform-literals/7.18.9_@babel+core@7.19.3: resolution: {integrity: sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-member-expression-literals/7.18.6_@babel+core@7.19.1: + /@babel/plugin-transform-member-expression-literals/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-modules-amd/7.18.6_@babel+core@7.19.1: + /@babel/plugin-transform-modules-amd/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-module-transforms': 7.19.0 '@babel/helper-plugin-utils': 7.19.0 babel-plugin-dynamic-import-node: 2.3.3 transitivePeerDependencies: - supports-color - /@babel/plugin-transform-modules-commonjs/7.18.6_@babel+core@7.19.1: + /@babel/plugin-transform-modules-commonjs/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-module-transforms': 7.19.0 '@babel/helper-plugin-utils': 7.19.0 '@babel/helper-simple-access': 7.18.6 @@ -1592,13 +1521,13 @@ packages: transitivePeerDependencies: - supports-color - /@babel/plugin-transform-modules-systemjs/7.19.0_@babel+core@7.19.1: + /@babel/plugin-transform-modules-systemjs/7.19.0_@babel+core@7.19.3: resolution: {integrity: sha512-x9aiR0WXAWmOWsqcsnrzGR+ieaTMVyGyffPVA7F8cXAGt/UxefYv6uSHZLkAFChN5M5Iy1+wjE+xJuPt22H39A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-hoist-variables': 7.18.6 '@babel/helper-module-transforms': 7.19.0 '@babel/helper-plugin-utils': 7.19.0 @@ -1607,44 +1536,44 @@ packages: transitivePeerDependencies: - supports-color - /@babel/plugin-transform-modules-umd/7.18.6_@babel+core@7.19.1: + /@babel/plugin-transform-modules-umd/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-module-transforms': 7.19.0 '@babel/helper-plugin-utils': 7.19.0 transitivePeerDependencies: - supports-color - /@babel/plugin-transform-named-capturing-groups-regex/7.19.1_@babel+core@7.19.1: + /@babel/plugin-transform-named-capturing-groups-regex/7.19.1_@babel+core@7.19.3: resolution: {integrity: sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.19.1 - '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.19.1 + '@babel/core': 7.19.3 + '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.19.3 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-new-target/7.18.6_@babel+core@7.19.1: + /@babel/plugin-transform-new-target/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-object-super/7.18.6_@babel+core@7.19.1: + /@babel/plugin-transform-object-super/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 '@babel/helper-replace-supers': 7.19.1 transitivePeerDependencies: @@ -1659,31 +1588,22 @@ packages: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-parameters/7.18.8_@babel+core@7.19.1: + /@babel/plugin-transform-parameters/7.18.8_@babel+core@7.19.3: resolution: {integrity: sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-property-literals/7.18.6_@babel+core@7.19.1: + /@babel/plugin-transform-property-literals/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - - /@babel/plugin-transform-react-display-name/7.18.6_@babel+core@7.19.1: - resolution: {integrity: sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 /@babel/plugin-transform-react-display-name/7.18.6_@babel+core@7.19.3: @@ -1694,16 +1614,6 @@ packages: dependencies: '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 - dev: true - - /@babel/plugin-transform-react-jsx-development/7.18.6_@babel+core@7.19.1: - resolution: {integrity: sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.1 - '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.19.1 /@babel/plugin-transform-react-jsx-development/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==} @@ -1713,39 +1623,25 @@ packages: dependencies: '@babel/core': 7.19.3 '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.19.3 - dev: true - /@babel/plugin-transform-react-jsx-self/7.18.6_@babel+core@7.19.1: + /@babel/plugin-transform-react-jsx-self/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-react-jsx-source/7.18.6_@babel+core@7.19.1: + /@babel/plugin-transform-react-jsx-source/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-utZmlASneDfdaMh0m/WausbjUjEdGrQJz0vFK93d7wD3xf5wBtX219+q6IlCNZeguIcxS2f/CvLZrlLSvSHQXw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-react-jsx/7.19.0_@babel+core@7.19.1: - resolution: {integrity: sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.1 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-module-imports': 7.18.6 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.19.1 - '@babel/types': 7.19.0 - /@babel/plugin-transform-react-jsx/7.19.0_@babel+core@7.19.3: resolution: {integrity: sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==} engines: {node: '>=6.9.0'} @@ -1757,18 +1653,7 @@ packages: '@babel/helper-module-imports': 7.18.6 '@babel/helper-plugin-utils': 7.19.0 '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.19.3 - '@babel/types': 7.19.0 - dev: true - - /@babel/plugin-transform-react-pure-annotations/7.18.6_@babel+core@7.19.1: - resolution: {integrity: sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.1 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/types': 7.19.3 /@babel/plugin-transform-react-pure-annotations/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==} @@ -1779,62 +1664,52 @@ packages: '@babel/core': 7.19.3 '@babel/helper-annotate-as-pure': 7.18.6 '@babel/helper-plugin-utils': 7.19.0 - dev: true - /@babel/plugin-transform-regenerator/7.18.6_@babel+core@7.19.1: + /@babel/plugin-transform-regenerator/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 regenerator-transform: 0.15.0 - /@babel/plugin-transform-reserved-words/7.18.6_@babel+core@7.19.1: + /@babel/plugin-transform-reserved-words/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-shorthand-properties/7.18.6_@babel+core@7.19.1: + /@babel/plugin-transform-shorthand-properties/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-spread/7.19.0_@babel+core@7.19.1: + /@babel/plugin-transform-spread/7.19.0_@babel+core@7.19.3: resolution: {integrity: sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 - /@babel/plugin-transform-sticky-regex/7.18.6_@babel+core@7.19.1: + /@babel/plugin-transform-sticky-regex/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - - /@babel/plugin-transform-template-literals/7.18.9_@babel+core@7.19.1: - resolution: {integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 /@babel/plugin-transform-template-literals/7.18.9_@babel+core@7.19.3: @@ -1845,257 +1720,156 @@ packages: dependencies: '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 - dev: true - /@babel/plugin-transform-typeof-symbol/7.18.9_@babel+core@7.19.1: + /@babel/plugin-transform-typeof-symbol/7.18.9_@babel+core@7.19.3: resolution: {integrity: sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-typescript/7.19.1_@babel+core@7.19.1: - resolution: {integrity: sha512-+ILcOU+6mWLlvCwnL920m2Ow3wWx3Wo8n2t5aROQmV55GZt+hOiLvBaa3DNzRjSEHa1aauRs4/YLmkCfFkhhRQ==} + /@babel/plugin-transform-typescript/7.19.3_@babel+core@7.19.3: + resolution: {integrity: sha512-z6fnuK9ve9u/0X0rRvI9MY0xg+DOUaABDYOe+/SQTxtlptaBB/V9JIUxJn6xp3lMBeb9qe8xSFmHU35oZDXD+w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 - '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.19.1 + '@babel/core': 7.19.3 + '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.19.3 '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-typescript': 7.18.6_@babel+core@7.19.1 + '@babel/plugin-syntax-typescript': 7.18.6_@babel+core@7.19.3 transitivePeerDependencies: - supports-color - /@babel/plugin-transform-unicode-escapes/7.18.10_@babel+core@7.19.1: + /@babel/plugin-transform-unicode-escapes/7.18.10_@babel+core@7.19.3: resolution: {integrity: sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-unicode-regex/7.18.6_@babel+core@7.19.1: + /@babel/plugin-transform-unicode-regex/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 - '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.19.1 + '@babel/core': 7.19.3 + '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.19.3 '@babel/helper-plugin-utils': 7.19.0 - /@babel/preset-env/7.19.1_@babel+core@7.19.1: - resolution: {integrity: sha512-c8B2c6D16Lp+Nt6HcD+nHl0VbPKVnNPTpszahuxJJnurfMtKeZ80A+qUv48Y7wqvS+dTFuLuaM9oYxyNHbCLWA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.19.1 - '@babel/core': 7.19.1 - '@babel/helper-compilation-targets': 7.19.1_@babel+core@7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-validator-option': 7.18.6 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.18.9_@babel+core@7.19.1 - '@babel/plugin-proposal-async-generator-functions': 7.19.1_@babel+core@7.19.1 - '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-proposal-class-static-block': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-proposal-dynamic-import': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-proposal-export-namespace-from': 7.18.9_@babel+core@7.19.1 - '@babel/plugin-proposal-json-strings': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-proposal-logical-assignment-operators': 7.18.9_@babel+core@7.19.1 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-proposal-numeric-separator': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-proposal-object-rest-spread': 7.18.9_@babel+core@7.19.1 - '@babel/plugin-proposal-optional-catch-binding': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.19.1 - '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-proposal-private-property-in-object': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.19.1 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.19.1 - '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.19.1 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.19.1 - '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.19.1 - '@babel/plugin-syntax-import-assertions': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.19.1 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.19.1 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.19.1 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.19.1 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.19.1 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.19.1 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.19.1 - '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.19.1 - '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.19.1 - '@babel/plugin-transform-arrow-functions': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-transform-async-to-generator': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-transform-block-scoped-functions': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-transform-block-scoping': 7.18.9_@babel+core@7.19.1 - '@babel/plugin-transform-classes': 7.19.0_@babel+core@7.19.1 - '@babel/plugin-transform-computed-properties': 7.18.9_@babel+core@7.19.1 - '@babel/plugin-transform-destructuring': 7.18.13_@babel+core@7.19.1 - '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-transform-duplicate-keys': 7.18.9_@babel+core@7.19.1 - '@babel/plugin-transform-exponentiation-operator': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-transform-for-of': 7.18.8_@babel+core@7.19.1 - '@babel/plugin-transform-function-name': 7.18.9_@babel+core@7.19.1 - '@babel/plugin-transform-literals': 7.18.9_@babel+core@7.19.1 - '@babel/plugin-transform-member-expression-literals': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-transform-modules-amd': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-transform-modules-commonjs': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-transform-modules-systemjs': 7.19.0_@babel+core@7.19.1 - '@babel/plugin-transform-modules-umd': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-transform-named-capturing-groups-regex': 7.19.1_@babel+core@7.19.1 - '@babel/plugin-transform-new-target': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-transform-object-super': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-transform-parameters': 7.18.8_@babel+core@7.19.1 - '@babel/plugin-transform-property-literals': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-transform-regenerator': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-transform-reserved-words': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-transform-spread': 7.19.0_@babel+core@7.19.1 - '@babel/plugin-transform-sticky-regex': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.19.1 - '@babel/plugin-transform-typeof-symbol': 7.18.9_@babel+core@7.19.1 - '@babel/plugin-transform-unicode-escapes': 7.18.10_@babel+core@7.19.1 - '@babel/plugin-transform-unicode-regex': 7.18.6_@babel+core@7.19.1 - '@babel/preset-modules': 0.1.5_@babel+core@7.19.1 - '@babel/types': 7.19.0 - babel-plugin-polyfill-corejs2: 0.3.3_@babel+core@7.19.1 - babel-plugin-polyfill-corejs3: 0.6.0_@babel+core@7.19.1 - babel-plugin-polyfill-regenerator: 0.4.1_@babel+core@7.19.1 - core-js-compat: 3.25.2 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - - /@babel/preset-env/7.19.3_@babel+core@7.19.1: + /@babel/preset-env/7.19.3_@babel+core@7.19.3: resolution: {integrity: sha512-ziye1OTc9dGFOAXSWKUqQblYHNlBOaDl8wzqf2iKXJAltYiR3hKHUKmkt+S9PppW7RQpq4fFCrwwpIDj/f5P4w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/compat-data': 7.19.3 - '@babel/core': 7.19.1 - '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.19.1 + '@babel/core': 7.19.3 + '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.19.3 '@babel/helper-plugin-utils': 7.19.0 '@babel/helper-validator-option': 7.18.6 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.18.9_@babel+core@7.19.1 - '@babel/plugin-proposal-async-generator-functions': 7.19.1_@babel+core@7.19.1 - '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-proposal-class-static-block': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-proposal-dynamic-import': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-proposal-export-namespace-from': 7.18.9_@babel+core@7.19.1 - '@babel/plugin-proposal-json-strings': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-proposal-logical-assignment-operators': 7.18.9_@babel+core@7.19.1 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-proposal-numeric-separator': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-proposal-object-rest-spread': 7.18.9_@babel+core@7.19.1 - '@babel/plugin-proposal-optional-catch-binding': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.19.1 - '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-proposal-private-property-in-object': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.19.1 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.19.1 - '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.19.1 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.19.1 - '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.19.1 - '@babel/plugin-syntax-import-assertions': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.19.1 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.19.1 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.19.1 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.19.1 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.19.1 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.19.1 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.19.1 - '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.19.1 - '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.19.1 - '@babel/plugin-transform-arrow-functions': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-transform-async-to-generator': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-transform-block-scoped-functions': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-transform-block-scoping': 7.18.9_@babel+core@7.19.1 - '@babel/plugin-transform-classes': 7.19.0_@babel+core@7.19.1 - '@babel/plugin-transform-computed-properties': 7.18.9_@babel+core@7.19.1 - '@babel/plugin-transform-destructuring': 7.18.13_@babel+core@7.19.1 - '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-transform-duplicate-keys': 7.18.9_@babel+core@7.19.1 - '@babel/plugin-transform-exponentiation-operator': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-transform-for-of': 7.18.8_@babel+core@7.19.1 - '@babel/plugin-transform-function-name': 7.18.9_@babel+core@7.19.1 - '@babel/plugin-transform-literals': 7.18.9_@babel+core@7.19.1 - '@babel/plugin-transform-member-expression-literals': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-transform-modules-amd': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-transform-modules-commonjs': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-transform-modules-systemjs': 7.19.0_@babel+core@7.19.1 - '@babel/plugin-transform-modules-umd': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-transform-named-capturing-groups-regex': 7.19.1_@babel+core@7.19.1 - '@babel/plugin-transform-new-target': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-transform-object-super': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-transform-parameters': 7.18.8_@babel+core@7.19.1 - '@babel/plugin-transform-property-literals': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-transform-regenerator': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-transform-reserved-words': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-transform-spread': 7.19.0_@babel+core@7.19.1 - '@babel/plugin-transform-sticky-regex': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.19.1 - '@babel/plugin-transform-typeof-symbol': 7.18.9_@babel+core@7.19.1 - '@babel/plugin-transform-unicode-escapes': 7.18.10_@babel+core@7.19.1 - '@babel/plugin-transform-unicode-regex': 7.18.6_@babel+core@7.19.1 - '@babel/preset-modules': 0.1.5_@babel+core@7.19.1 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.18.9_@babel+core@7.19.3 + '@babel/plugin-proposal-async-generator-functions': 7.19.1_@babel+core@7.19.3 + '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-proposal-class-static-block': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-proposal-dynamic-import': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-proposal-export-namespace-from': 7.18.9_@babel+core@7.19.3 + '@babel/plugin-proposal-json-strings': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-proposal-logical-assignment-operators': 7.18.9_@babel+core@7.19.3 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-proposal-numeric-separator': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-proposal-object-rest-spread': 7.18.9_@babel+core@7.19.3 + '@babel/plugin-proposal-optional-catch-binding': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.19.3 + '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-proposal-private-property-in-object': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.19.3 + '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.19.3 + '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.19.3 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.19.3 + '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.19.3 + '@babel/plugin-syntax-import-assertions': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.19.3 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.19.3 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.19.3 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.19.3 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.19.3 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.19.3 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.19.3 + '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.19.3 + '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.19.3 + '@babel/plugin-transform-arrow-functions': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-transform-async-to-generator': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-transform-block-scoped-functions': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-transform-block-scoping': 7.18.9_@babel+core@7.19.3 + '@babel/plugin-transform-classes': 7.19.0_@babel+core@7.19.3 + '@babel/plugin-transform-computed-properties': 7.18.9_@babel+core@7.19.3 + '@babel/plugin-transform-destructuring': 7.18.13_@babel+core@7.19.3 + '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-transform-duplicate-keys': 7.18.9_@babel+core@7.19.3 + '@babel/plugin-transform-exponentiation-operator': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-transform-for-of': 7.18.8_@babel+core@7.19.3 + '@babel/plugin-transform-function-name': 7.18.9_@babel+core@7.19.3 + '@babel/plugin-transform-literals': 7.18.9_@babel+core@7.19.3 + '@babel/plugin-transform-member-expression-literals': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-transform-modules-amd': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-transform-modules-commonjs': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-transform-modules-systemjs': 7.19.0_@babel+core@7.19.3 + '@babel/plugin-transform-modules-umd': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-transform-named-capturing-groups-regex': 7.19.1_@babel+core@7.19.3 + '@babel/plugin-transform-new-target': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-transform-object-super': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-transform-parameters': 7.18.8_@babel+core@7.19.3 + '@babel/plugin-transform-property-literals': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-transform-regenerator': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-transform-reserved-words': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-transform-spread': 7.19.0_@babel+core@7.19.3 + '@babel/plugin-transform-sticky-regex': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.19.3 + '@babel/plugin-transform-typeof-symbol': 7.18.9_@babel+core@7.19.3 + '@babel/plugin-transform-unicode-escapes': 7.18.10_@babel+core@7.19.3 + '@babel/plugin-transform-unicode-regex': 7.18.6_@babel+core@7.19.3 + '@babel/preset-modules': 0.1.5_@babel+core@7.19.3 '@babel/types': 7.19.3 - babel-plugin-polyfill-corejs2: 0.3.3_@babel+core@7.19.1 - babel-plugin-polyfill-corejs3: 0.6.0_@babel+core@7.19.1 - babel-plugin-polyfill-regenerator: 0.4.1_@babel+core@7.19.1 + babel-plugin-polyfill-corejs2: 0.3.3_@babel+core@7.19.3 + babel-plugin-polyfill-corejs3: 0.6.0_@babel+core@7.19.3 + babel-plugin-polyfill-regenerator: 0.4.1_@babel+core@7.19.3 core-js-compat: 3.25.5 semver: 6.3.0 transitivePeerDependencies: - supports-color - dev: true - /@babel/preset-flow/7.18.6_@babel+core@7.19.1: + /@babel/preset-flow/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-E7BDhL64W6OUqpuyHnSroLnqyRTcG6ZdOBl1OKI/QK/HJfplqK/S3sq1Cckx7oTodJ5yOXyfw7rEADJ6UjoQDQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 '@babel/helper-validator-option': 7.18.6 - '@babel/plugin-transform-flow-strip-types': 7.19.0_@babel+core@7.19.1 + '@babel/plugin-transform-flow-strip-types': 7.19.0_@babel+core@7.19.3 - /@babel/preset-modules/0.1.5_@babel+core@7.19.1: + /@babel/preset-modules/0.1.5_@babel+core@7.19.3: resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.19.1 - '@babel/types': 7.19.0 + '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.19.3 + '@babel/types': 7.19.3 esutils: 2.0.3 - /@babel/preset-react/7.18.6_@babel+core@7.19.1: - resolution: {integrity: sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-validator-option': 7.18.6 - '@babel/plugin-transform-react-display-name': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.19.1 - '@babel/plugin-transform-react-jsx-development': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-transform-react-pure-annotations': 7.18.6_@babel+core@7.19.1 - /@babel/preset-react/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==} engines: {node: '>=6.9.0'} @@ -2109,28 +1883,27 @@ packages: '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.19.3 '@babel/plugin-transform-react-jsx-development': 7.18.6_@babel+core@7.19.3 '@babel/plugin-transform-react-pure-annotations': 7.18.6_@babel+core@7.19.3 - dev: true - /@babel/preset-typescript/7.18.6_@babel+core@7.19.1: + /@babel/preset-typescript/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 '@babel/helper-validator-option': 7.18.6 - '@babel/plugin-transform-typescript': 7.19.1_@babel+core@7.19.1 + '@babel/plugin-transform-typescript': 7.19.3_@babel+core@7.19.3 transitivePeerDependencies: - supports-color - /@babel/register/7.18.9_@babel+core@7.19.1: + /@babel/register/7.18.9_@babel+core@7.19.3: resolution: {integrity: sha512-ZlbnXDcNYHMR25ITwwNKT88JiaukkdVj/nG7r3wnuXkOTHc60Uy05PwMCPre0hSkY68E6zK3xz+vUJSP2jWmcw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 clone-deep: 4.0.1 find-cache-dir: 2.1.0 make-dir: 2.1.0 @@ -2178,8 +1951,8 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.18.6 - '@babel/parser': 7.19.1 - '@babel/types': 7.19.0 + '@babel/parser': 7.19.3 + '@babel/types': 7.19.3 /@babel/traverse/7.17.3: resolution: {integrity: sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==} @@ -2199,23 +1972,6 @@ packages: - supports-color dev: true - /@babel/traverse/7.19.1: - resolution: {integrity: sha512-0j/ZfZMxKukDaag2PtOPDbwuELqIar6lLskVPPJDjXMXjfLb1Obo/1yjxIGqqAJrmfaTIY3z2wFLAQ7qSkLsuA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.18.6 - '@babel/generator': 7.19.0 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.19.0 - '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/parser': 7.19.1 - '@babel/types': 7.19.0 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - /@babel/traverse/7.19.3: resolution: {integrity: sha512-qh5yf6149zhq2sgIXmwjnsvmnNQC2iw70UFjp4olxucKrWd/dvlUsBI88VSLUsnMNF7/vnOiA+nk1+yLoCqROQ==} engines: {node: '>=6.9.0'} @@ -2232,7 +1988,6 @@ packages: globals: 11.12.0 transitivePeerDependencies: - supports-color - dev: true /@babel/types/7.17.0: resolution: {integrity: sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==} @@ -2242,14 +1997,6 @@ packages: to-fast-properties: 2.0.0 dev: true - /@babel/types/7.19.0: - resolution: {integrity: sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.18.10 - '@babel/helper-validator-identifier': 7.19.1 - to-fast-properties: 2.0.0 - /@babel/types/7.19.3: resolution: {integrity: sha512-hGCaQzIY22DJlDh9CH7NOxgKkFjBk0Cw9xDO1Xmh2151ti7wiGfQ3LauXzL4HP1fmFlTX6XjpRETTpUcv7wQLw==} engines: {node: '>=6.9.0'} @@ -2257,7 +2004,6 @@ packages: '@babel/helper-string-parser': 7.18.10 '@babel/helper-validator-identifier': 7.19.1 to-fast-properties: 2.0.0 - dev: true /@base2/pretty-print-object/1.0.1: resolution: {integrity: sha512-4iri8i1AqYHJE2DstZYkyEprg6Pq6sKx3xn5FpySk9sNhH7qN2LLlHJCfDTZRILNwQNPD7mATWM0TBui7uC1pA==} @@ -2291,8 +2037,8 @@ packages: dev: true optional: true - /@cspell/cspell-bundled-dicts/6.10.1: - resolution: {integrity: sha512-FBoPQFM3mziJCAodN1M3i5G1vaSraPXjHiw0mHPTXEnB+fnMP4N0i3kwDPLn0US8O2dHNP0AzwVmoJ2FmEuBFA==} + /@cspell/cspell-bundled-dicts/6.12.0: + resolution: {integrity: sha512-myfsDwSJcAMjKbztKBG424wIp/YV9/lvxsgHFKxBGPi+nNx1p7TbOjAAO9EWk0mZVHyGKZwCFJS2ohkoqxJWoQ==} engines: {node: '>=14'} dependencies: '@cspell/dict-ada': 2.0.1 @@ -2308,8 +2054,8 @@ packages: '@cspell/dict-docker': 1.1.1 '@cspell/dict-dotnet': 2.0.1 '@cspell/dict-elixir': 2.0.1 - '@cspell/dict-en-gb': 1.1.33 '@cspell/dict-en_us': 2.3.3 + '@cspell/dict-en-gb': 1.1.33 '@cspell/dict-filetypes': 2.1.1 '@cspell/dict-fonts': 2.1.0 '@cspell/dict-fullstack': 2.0.6 @@ -2323,7 +2069,7 @@ packages: '@cspell/dict-lorem-ipsum': 2.0.1 '@cspell/dict-lua': 2.0.0 '@cspell/dict-node': 3.0.1 - '@cspell/dict-npm': 3.1.2 + '@cspell/dict-npm': 3.1.3 '@cspell/dict-php': 2.0.0 '@cspell/dict-powershell': 2.0.0 '@cspell/dict-public-licenses': 1.0.6 @@ -2332,25 +2078,25 @@ packages: '@cspell/dict-ruby': 2.0.2 '@cspell/dict-rust': 2.0.1 '@cspell/dict-scala': 2.0.0 - '@cspell/dict-software-terms': 2.2.9 + '@cspell/dict-software-terms': 2.2.12 '@cspell/dict-sql': 1.0.4 '@cspell/dict-swift': 1.0.3 '@cspell/dict-typescript': 2.0.2 '@cspell/dict-vue': 2.0.2 dev: true - /@cspell/cspell-pipe/6.10.1: - resolution: {integrity: sha512-c31P1Vh4wfqX43rS+MvTGnaevwM+r7Wb/DhJRxt5Wwh1lsV2KeJqPJ0D2nwyW+SDc9Sv6SgxdJzNwOgAD8n0hg==} + /@cspell/cspell-pipe/6.12.0: + resolution: {integrity: sha512-Nkm+tIJ5k+jZPovZCdmZhrWrwRFwnDq+7yCxhov0C7UX3hsSNtTJIpFuaCNEQJ+Whpvxdh1YKflvHiHYygEgTg==} engines: {node: '>=14'} dev: true - /@cspell/cspell-service-bus/6.10.1: - resolution: {integrity: sha512-yHf1FRoy3khALNWXPX9oazPJ6piqLvg9h5hW5/MxG66fOERfzP5x4myBHmUbgMsSW/ORyS2fGlVp9hnqV+q6/Q==} + /@cspell/cspell-service-bus/6.12.0: + resolution: {integrity: sha512-GgvciSeMUekl8z8vP8//cs5/qRQJSLz9IVREf6fxQW4upjw6zXZ1KonwPqOF5uLocIMAr8eCdrJzHKuKvigJIA==} engines: {node: '>=14'} dev: true - /@cspell/cspell-types/6.10.1: - resolution: {integrity: sha512-0e4xk9qLo8GwvO6a3w9jiC6RTaiPH5z/DKLBfWPVZqZxjVlKfQAGNL+fRPFV67+ZNxceb9L7SdZUYru8BDJfFQ==} + /@cspell/cspell-types/6.12.0: + resolution: {integrity: sha512-BcZTt05fNy9SGXfbPgUyxS4FfIaUpcVq8IOJ0noN+jsKsmlbssOUgJOB2ApN1h66FfWcKuFy/uNrjfcrQ7PTqg==} engines: {node: '>=14'} dev: true @@ -2466,8 +2212,8 @@ packages: resolution: {integrity: sha512-sK2cpuV0EAc43Amd5xeQXkI9MeRTECMw+yjap06gKSModbgI7BqJUHeKZed+0Hii+LpaJ4TYpLGiRVsO+qSk0w==} dev: true - /@cspell/dict-npm/3.1.2: - resolution: {integrity: sha512-dg4M38nrCCeBOYKVqPG91JPJ67j9LygPeNnu5fa7E9Z1eho3fkYHvfKlF3t4EZyAOxEobp0ZB0iXaCuX2YknlA==} + /@cspell/dict-npm/3.1.3: + resolution: {integrity: sha512-xnGp+TMpArdMLBUSG+ZrbEuhvY016rb76Yh35/OPDDEEz4ulENxLSZJxtN2/A0tZ9FJngDNSdFh7eJsOFmciZQ==} dev: true /@cspell/dict-php/2.0.0: @@ -2502,8 +2248,8 @@ packages: resolution: {integrity: sha512-MUwA2YKpqaQOSR4V1/CVGRNk8Ii5kf6I8Ch+4/BhRZRQXuwWbi21rDRYWPqdQWps7VNzAbbMA+PQDWsD5YY38g==} dev: true - /@cspell/dict-software-terms/2.2.9: - resolution: {integrity: sha512-uty2txffWWgYVTwt6/ekPwtVHb8GRDKgfmhOrcQbpTgMghIjxFgS8ADYgt5h+NrAomy7oGrffWDI1BimbhzRCA==} + /@cspell/dict-software-terms/2.2.12: + resolution: {integrity: sha512-wVVy4on8Uq5VAWm3cqrrhewTRRbpmNxtmTURGQ5rT6FqUtJvZ7W2Pj3QquzXsA9zSFZhGFQR3U7IdFesET9yAg==} dev: true /@cspell/dict-sql/1.0.4: @@ -2600,16 +2346,16 @@ packages: engines: {node: '>=10.0.0'} dev: true - /@esbuild/android-arm/0.15.9: - resolution: {integrity: sha512-VZPy/ETF3fBG5PiinIkA0W/tlsvlEgJccyN2DzWZEl0DlVKRbu91PvY2D6Lxgluj4w9QtYHjOWjAT44C+oQ+EQ==} + /@esbuild/android-arm/0.15.10: + resolution: {integrity: sha512-FNONeQPy/ox+5NBkcSbYJxoXj9GWu8gVGJTVmUyoOCKQFDTrHVKgNSzChdNt0I8Aj/iKcsDf2r9BFwv+FSNUXg==} engines: {node: '>=12'} cpu: [arm] os: [android] requiresBuild: true optional: true - /@esbuild/linux-loong64/0.15.9: - resolution: {integrity: sha512-O+NfmkfRrb3uSsTa4jE3WApidSe3N5++fyOVGP1SmMZi4A3BZELkhUUvj5hwmMuNdlpzAZ8iAPz2vmcR7DCFQA==} + /@esbuild/linux-loong64/0.15.10: + resolution: {integrity: sha512-w0Ou3Z83LOYEkwaui2M8VwIp+nLi/NA60lBLMvaJ+vXVMcsARYdEzLNE7RSm4+lSg4zq4d7fAVuzk7PNQ5JFgg==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -2678,16 +2424,16 @@ packages: - '@types/react' dev: false - /@fontsource/inter/4.5.12: - resolution: {integrity: sha512-bGKk4/8tube/nCk8hav0ZDBVbzJzc7m0Vt4xF5p15IN4YImwGdtKG38Oq5bU8xHNS+VfvbFFCepgQNj7Pr/Lvg==} + /@fontsource/inter/4.5.13: + resolution: {integrity: sha512-nABtF6jNZZHrotLRiGBByhG7NKJGJHgMbX5W8v6C/7nSdyiWtMRfZX7AMIECDLYGUOEArZDeVO/SbkgwKLrLJw==} dev: false /@gar/promisify/1.1.3: resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} dev: true - /@headlessui/react/1.7.2_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-snLv2lxwsf2HNTOBNgHYdvoYZ3ChJE8QszPi1d/hl9js8KrFrUulTaQBfSyPbJP5BybVreWh9DxCgz9S0Z6hKQ==} + /@headlessui/react/1.7.3_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-LGp06SrGv7BMaIQlTs8s2G06moqkI0cb0b8stgq7KZ3xcHdH3qMP+cRyV7qe5x4XEW/IGY48BW4fLesD6NQLng==} engines: {node: '>=10'} peerDependencies: react: ^16 || ^17 || ^18 @@ -2697,16 +2443,16 @@ packages: react-dom: 18.2.0_react@18.2.0 dev: false - /@heroicons/react/2.0.11_react@18.2.0: - resolution: {integrity: sha512-bASjOgSSaYj8HqXWsOqaBiB6ZLalE/g90WYGgZ5lPm4KCCG7wPXntY4kzHf5NrLh6UBAcnPwvbiw1Ne9GYfJtw==} + /@heroicons/react/2.0.12_react@18.2.0: + resolution: {integrity: sha512-FZxKh3i9aKIDxyALTgIpSF2t6V6/eZfF5mRu41QlwkX3Oxzecdm1u6dpft6PQGxIBwO7TKYWaMAYYL8mp/EaOg==} peerDependencies: react: '>= 16' dependencies: react: 18.2.0 dev: false - /@humanwhocodes/config-array/0.10.5: - resolution: {integrity: sha512-XVVDtp+dVvRxMoxSiSfasYaG02VEe1qH5cKgMQJWhol6HwzbcqoCMJi8dAGoYAO57jhUyhI6cWuRiTcRaDaYug==} + /@humanwhocodes/config-array/0.10.7: + resolution: {integrity: sha512-MDl6D6sBsaV452/QSdX+4CXIjZhIcI0PELsxUjk4U828yd58vk3bTIvk/6w5FY+4hIy9sLW0sfrV7K7Kc++j/w==} engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 1.2.1 @@ -2729,8 +2475,8 @@ packages: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} dev: true - /@icons-pack/react-simple-icons/5.6.0_react@18.2.0: - resolution: {integrity: sha512-WiXl5x27d1AKTAaZizVt8Sq0LUKRlnfXLuTFkj8oqQyaE6hUvs8R+G6SPOyInD4fL+96rwCpfFboirUF876BtQ==} + /@icons-pack/react-simple-icons/5.8.0_react@18.2.0: + resolution: {integrity: sha512-5szUSKt/jslgOsNmH+uRs9wfRVl399Xhwf4//V28H5TXgMXZPaqQ+w82mMwmapsMW6DigFkgynLHZcic43PQRw==} peerDependencies: react: ^16.13 || ^17 || ^18 dependencies: @@ -2782,7 +2528,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.8.1 + '@types/node': 18.8.2 '@types/yargs': 15.0.14 chalk: 4.1.2 dev: true @@ -2793,7 +2539,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.8.1 + '@types/node': 18.8.2 '@types/yargs': 16.0.4 chalk: 4.1.2 dev: true @@ -3290,7 +3036,7 @@ packages: resolution: {integrity: sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==} dependencies: '@gar/promisify': 1.1.3 - semver: 7.3.7 + semver: 7.3.8 dev: true /@npmcli/move-file/1.1.2: @@ -3344,14 +3090,8 @@ packages: resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==} dev: false - /@radix-ui/number/0.1.0: - resolution: {integrity: sha512-rpf6QiOWLHAkM4FEMYu9i+5Jr8cKT893+R4mPpcdsy4LD7omr9JfdOqj/h/xPA5+EcVrpMMlU6rrRYpUB5UI8g==} - dependencies: - '@babel/runtime': 7.19.0 - dev: false - - /@radix-ui/primitive/0.1.0: - resolution: {integrity: sha512-tqxZKybwN5Fa3VzZry4G6mXAAb9aAqKmPtnVbZpL0vsBwvOHTBwsjHVPXylocYLwEtBY9SCe665bYnNB515uoA==} + /@radix-ui/number/1.0.0: + resolution: {integrity: sha512-Ofwh/1HX69ZfJRiRBMTy7rgjAzHmwe4kW9C9Y99HTRUcYLUuVT0KESFj15rPjRgKJs20GPq8Bm5aEDJ8DuA3vA==} dependencies: '@babel/runtime': 7.19.0 dev: false @@ -3374,19 +3114,6 @@ packages: react-dom: 18.2.0_react@18.2.0 dev: false - /@radix-ui/react-collection/0.1.4_react@18.2.0: - resolution: {integrity: sha512-3muGI15IdgaDFjOcO7xX8a35HQRBRF6LH9pS6UCeZeRmbslkVeHyJRQr2rzICBUoX7zgIA0kXyMDbpQnJGyJTA==} - peerDependencies: - react: ^16.8 || ^17.0 - dependencies: - '@babel/runtime': 7.19.0 - '@radix-ui/react-compose-refs': 0.1.0_react@18.2.0 - '@radix-ui/react-context': 0.1.1_react@18.2.0 - '@radix-ui/react-primitive': 0.1.4_react@18.2.0 - '@radix-ui/react-slot': 0.1.2_react@18.2.0 - react: 18.2.0 - dev: false - /@radix-ui/react-collection/1.0.0_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-8i1pf5dKjnq90Z8udnnXKzdCEV3/FYrfw0n/b6NvB6piXEn3fO1bOh7HBcpG8XrnIXzxlYu2oCcR38QpyLS/mg==} peerDependencies: @@ -3402,15 +3129,6 @@ packages: react-dom: 18.2.0_react@18.2.0 dev: false - /@radix-ui/react-compose-refs/0.1.0_react@18.2.0: - resolution: {integrity: sha512-eyclbh+b77k+69Dk72q3694OHrn9B3QsoIRx7ywX341U9RK1ThgQjMFZoPtmZNQTksXHLNEiefR8hGVeFyInGg==} - peerDependencies: - react: ^16.8 || ^17.0 - dependencies: - '@babel/runtime': 7.19.0 - react: 18.2.0 - dev: false - /@radix-ui/react-compose-refs/1.0.0_react@18.2.0: resolution: {integrity: sha512-0KaSv6sx787/hK3eF53iOkiSLwAGlFMx5lotrqD2pTjB18KbybKoEIgkNZTKC60YECDQTKGTRcDBILwZVqVKvA==} peerDependencies: @@ -3439,15 +3157,6 @@ packages: - '@types/react' dev: false - /@radix-ui/react-context/0.1.1_react@18.2.0: - resolution: {integrity: sha512-PkyVX1JsLBioeu0jB9WvRpDBBLtLZohVDT3BB5CTSJqActma8S8030P57mWZb4baZifMvN7KKWPAA40UmWKkQg==} - peerDependencies: - react: ^16.8 || ^17.0 - dependencies: - '@babel/runtime': 7.19.0 - react: 18.2.0 - dev: false - /@radix-ui/react-context/1.0.0_react@18.2.0: resolution: {integrity: sha512-1pVM9RfOQ+n/N5PJK33kRSKsr1glNxomxONs5c49MliinBY6Yw2Q995qfBUUo0/Mbg05B/sGA0gkgPI7kmSHBg==} peerDependencies: @@ -3648,16 +3357,6 @@ packages: react-dom: 18.2.0_react@18.2.0 dev: false - /@radix-ui/react-primitive/0.1.4_react@18.2.0: - resolution: {integrity: sha512-6gSl2IidySupIMJFjYnDIkIWRyQdbu/AHK7rbICPani+LW4b0XdxBXc46og/iZvuwW8pjCS8I2SadIerv84xYA==} - peerDependencies: - react: ^16.8 || ^17.0 - dependencies: - '@babel/runtime': 7.19.0 - '@radix-ui/react-slot': 0.1.2_react@18.2.0 - react: 18.2.0 - dev: false - /@radix-ui/react-primitive/1.0.0_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-EyXe6mnRlHZ8b6f4ilTDrXmkLShICIuOTTj0GX4w1rp+wSxf3+TD05u1UOITC8VsJ2a9nwHvdXtOXEOl0Cw/zQ==} peerDependencies: @@ -3670,15 +3369,17 @@ packages: react-dom: 18.2.0_react@18.2.0 dev: false - /@radix-ui/react-progress/0.1.4_react@18.2.0: - resolution: {integrity: sha512-Q+H7r/S0HMlwVriksgyUgBtol5TgkNllQPVtaXDDaeJBNFK2uiToHBp3j1Gi88/4Fw+EKT+SyWpeM/5nVtGujw==} + /@radix-ui/react-progress/1.0.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-j+JHtTuDpIhF0eOolNug+8hpZqNXcXp2GhTtwz+lnFzhY2a8+LXRSU79iy0r0WUs7UqCXCEeIJIrhg7NS/vPGA==} peerDependencies: - react: ^16.8 || ^17.0 + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 dependencies: '@babel/runtime': 7.19.0 - '@radix-ui/react-context': 0.1.1_react@18.2.0 - '@radix-ui/react-primitive': 0.1.4_react@18.2.0 + '@radix-ui/react-context': 1.0.0_react@18.2.0 + '@radix-ui/react-primitive': 1.0.0_biqbaboplfbrettd7655fr4n2y react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 dev: false /@radix-ui/react-roving-focus/1.0.0_biqbaboplfbrettd7655fr4n2y: @@ -3701,34 +3402,26 @@ packages: react-dom: 18.2.0_react@18.2.0 dev: false - /@radix-ui/react-slider/0.1.4_react@18.2.0: - resolution: {integrity: sha512-0z3bCcdrAi+FIcoLXS6r0ESVWuuyMnUJoCsFm7tC7Rtv95x34YtaI8YfSyQmzuMVS4rTsNtCCTZ/s727uRaVkQ==} + /@radix-ui/react-slider/1.0.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-LMZET7vn7HYwYSjsc9Jcen8Vn4cJXZZxQT7T+lGlqp+F+FofX+H86TBF2yDq+L51d99f1KLEsflTGBz9WRLSig==} peerDependencies: - react: ^16.8 || ^17.0 + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 dependencies: '@babel/runtime': 7.19.0 - '@radix-ui/number': 0.1.0 - '@radix-ui/primitive': 0.1.0 - '@radix-ui/react-collection': 0.1.4_react@18.2.0 - '@radix-ui/react-compose-refs': 0.1.0_react@18.2.0 - '@radix-ui/react-context': 0.1.1_react@18.2.0 - '@radix-ui/react-primitive': 0.1.4_react@18.2.0 - '@radix-ui/react-use-controllable-state': 0.1.0_react@18.2.0 - '@radix-ui/react-use-direction': 0.1.0_react@18.2.0 - '@radix-ui/react-use-layout-effect': 0.1.0_react@18.2.0 - '@radix-ui/react-use-previous': 0.1.1_react@18.2.0 - '@radix-ui/react-use-size': 0.1.1_react@18.2.0 - react: 18.2.0 - dev: false - - /@radix-ui/react-slot/0.1.2_react@18.2.0: - resolution: {integrity: sha512-ADkqfL+agEzEguU3yS26jfB50hRrwf7U4VTwAOZEmi/g+ITcBWe12yM46ueS/UCIMI9Py+gFUaAdxgxafFvY2Q==} - peerDependencies: - react: ^16.8 || ^17.0 - dependencies: - '@babel/runtime': 7.19.0 - '@radix-ui/react-compose-refs': 0.1.0_react@18.2.0 + '@radix-ui/number': 1.0.0 + '@radix-ui/primitive': 1.0.0 + '@radix-ui/react-collection': 1.0.0_biqbaboplfbrettd7655fr4n2y + '@radix-ui/react-compose-refs': 1.0.0_react@18.2.0 + '@radix-ui/react-context': 1.0.0_react@18.2.0 + '@radix-ui/react-direction': 1.0.0_react@18.2.0 + '@radix-ui/react-primitive': 1.0.0_biqbaboplfbrettd7655fr4n2y + '@radix-ui/react-use-controllable-state': 1.0.0_react@18.2.0 + '@radix-ui/react-use-layout-effect': 1.0.0_react@18.2.0 + '@radix-ui/react-use-previous': 1.0.0_react@18.2.0 + '@radix-ui/react-use-size': 1.0.0_react@18.2.0 react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 dev: false /@radix-ui/react-slot/1.0.0_react@18.2.0: @@ -3760,6 +3453,29 @@ packages: react-dom: 18.2.0_react@18.2.0 dev: false + /@radix-ui/react-toast/1.0.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-mdoF6rahgushdev0OX+9a7JKoH0xZAZBo2Ktf/s779S7EnkZeL3/MFiRIV5LpRP5CtASmfdSD3FLnEvG1RHRtQ==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + dependencies: + '@babel/runtime': 7.19.0 + '@radix-ui/primitive': 1.0.0 + '@radix-ui/react-collection': 1.0.0_biqbaboplfbrettd7655fr4n2y + '@radix-ui/react-compose-refs': 1.0.0_react@18.2.0 + '@radix-ui/react-context': 1.0.0_react@18.2.0 + '@radix-ui/react-dismissable-layer': 1.0.0_biqbaboplfbrettd7655fr4n2y + '@radix-ui/react-portal': 1.0.0_biqbaboplfbrettd7655fr4n2y + '@radix-ui/react-presence': 1.0.0_biqbaboplfbrettd7655fr4n2y + '@radix-ui/react-primitive': 1.0.0_biqbaboplfbrettd7655fr4n2y + '@radix-ui/react-use-callback-ref': 1.0.0_react@18.2.0 + '@radix-ui/react-use-controllable-state': 1.0.0_react@18.2.0 + '@radix-ui/react-use-layout-effect': 1.0.0_react@18.2.0 + '@radix-ui/react-visually-hidden': 1.0.0_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + dev: false + /@radix-ui/react-tooltip/1.0.0_rj7ozvcq3uehdlnj3cbwzbi5ce: resolution: {integrity: sha512-RB06pov+O4Npy10ei1C6fsyB9QoOjz7Ubo8Sl3qdKtLgkL9iI96925DYtH0bxx6MH6YB2FuzLU6B75qn3AQQQw==} peerDependencies: @@ -3785,15 +3501,6 @@ packages: - '@types/react' dev: false - /@radix-ui/react-use-callback-ref/0.1.0_react@18.2.0: - resolution: {integrity: sha512-Va041McOFFl+aV+sejvl0BS2aeHx86ND9X/rVFmEFQKTXCp6xgUK0NGUAGcgBlIjnJSbMYPGEk1xKSSlVcN2Aw==} - peerDependencies: - react: ^16.8 || ^17.0 - dependencies: - '@babel/runtime': 7.19.0 - react: 18.2.0 - dev: false - /@radix-ui/react-use-callback-ref/1.0.0_react@18.2.0: resolution: {integrity: sha512-GZtyzoHz95Rhs6S63D2t/eqvdFCm7I+yHMLVQheKM7nBD8mbZIt+ct1jz4536MDnaOGKIxynJ8eHTkVGVVkoTg==} peerDependencies: @@ -3803,16 +3510,6 @@ packages: react: 18.2.0 dev: false - /@radix-ui/react-use-controllable-state/0.1.0_react@18.2.0: - resolution: {integrity: sha512-zv7CX/PgsRl46a52Tl45TwqwVJdmqnlQEQhaYMz/yBOD2sx2gCkCFSoF/z9mpnYWmS6DTLNTg5lIps3fV6EnXg==} - peerDependencies: - react: ^16.8 || ^17.0 - dependencies: - '@babel/runtime': 7.19.0 - '@radix-ui/react-use-callback-ref': 0.1.0_react@18.2.0 - react: 18.2.0 - dev: false - /@radix-ui/react-use-controllable-state/1.0.0_react@18.2.0: resolution: {integrity: sha512-FohDoZvk3mEXh9AWAVyRTYR4Sq7/gavuofglmiXB2g1aKyboUD4YtgWxKj8O5n+Uak52gXQ4wKz5IFST4vtJHg==} peerDependencies: @@ -3823,15 +3520,6 @@ packages: react: 18.2.0 dev: false - /@radix-ui/react-use-direction/0.1.0_react@18.2.0: - resolution: {integrity: sha512-NajpY/An9TCPSfOVkgWIdXJV+VuWl67PxB6kOKYmtNAFHvObzIoh8o0n9sAuwSAyFCZVq211FEf9gvVDRhOyiA==} - peerDependencies: - react: ^16.8 || ^17.0 - dependencies: - '@babel/runtime': 7.19.0 - react: 18.2.0 - dev: false - /@radix-ui/react-use-escape-keydown/1.0.0_react@18.2.0: resolution: {integrity: sha512-JwfBCUIfhXRxKExgIqGa4CQsiMemo1Xt0W/B4ei3fpzpvPENKpMKQ8mZSB6Acj3ebrAEgi2xiQvcI1PAAodvyg==} peerDependencies: @@ -3842,15 +3530,6 @@ packages: react: 18.2.0 dev: false - /@radix-ui/react-use-layout-effect/0.1.0_react@18.2.0: - resolution: {integrity: sha512-+wdeS51Y+E1q1Wmd+1xSSbesZkpVj4jsg0BojCbopWvgq5iBvixw5vgemscdh58ep98BwUbsFYnrywFhV9yrVg==} - peerDependencies: - react: ^16.8 || ^17.0 - dependencies: - '@babel/runtime': 7.19.0 - react: 18.2.0 - dev: false - /@radix-ui/react-use-layout-effect/1.0.0_react@18.2.0: resolution: {integrity: sha512-6Tpkq+R6LOlmQb1R5NNETLG0B4YP0wc+klfXafpUCj6JGyaUc8il7/kUZ7m59rGbXGczE9Bs+iz2qloqsZBduQ==} peerDependencies: @@ -3860,10 +3539,10 @@ packages: react: 18.2.0 dev: false - /@radix-ui/react-use-previous/0.1.1_react@18.2.0: - resolution: {integrity: sha512-O/ZgrDBr11dR8rhO59ED8s5zIXBRFi8MiS+CmFGfi7MJYdLbfqVOmQU90Ghf87aifEgWe6380LA69KBneaShAg==} + /@radix-ui/react-use-previous/1.0.0_react@18.2.0: + resolution: {integrity: sha512-RG2K8z/K7InnOKpq6YLDmT49HGjNmrK+fr82UCVKT2sW0GYfVnYp4wZWBooT/EYfQ5faA9uIjvsuMMhH61rheg==} peerDependencies: - react: ^16.8 || ^17.0 + react: ^16.8 || ^17.0 || ^18.0 dependencies: '@babel/runtime': 7.19.0 react: 18.2.0 @@ -3879,15 +3558,6 @@ packages: react: 18.2.0 dev: false - /@radix-ui/react-use-size/0.1.1_react@18.2.0: - resolution: {integrity: sha512-pTgWM5qKBu6C7kfKxrKPoBI2zZYZmp2cSXzpUiGM3qEBQlMLtYhaY2JXdXUCxz+XmD1YEjc8oRwvyfsD4AG4WA==} - peerDependencies: - react: ^16.8 || ^17.0 - dependencies: - '@babel/runtime': 7.19.0 - react: 18.2.0 - dev: false - /@radix-ui/react-use-size/1.0.0_react@18.2.0: resolution: {integrity: sha512-imZ3aYcoYCKhhgNpkNDh/aTiU05qw9hX+HHI1QDBTyIlcFjgeFlKKySNGMwTp7nYFLQg/j0VA2FmCY4WPDDHMg==} peerDependencies: @@ -3916,53 +3586,44 @@ packages: '@babel/runtime': 7.19.0 dev: false + /@remix-run/router/1.0.2: + resolution: {integrity: sha512-GRSOFhJzjGN+d4sKHTMSvNeUPoZiDHWmRnXfzaxrqe7dE/Nzlc8BiMSJdLDESZlndM7jIUrZ/F4yWqVYlI0rwQ==} + engines: {node: '>=14'} + dev: false + /@rollup/pluginutils/4.2.1: resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} engines: {node: '>= 8.0.0'} dependencies: estree-walker: 2.0.2 picomatch: 2.3.1 - - /@rspc/client/0.0.6: - resolution: {integrity: sha512-NcJbmObbf+BzFcYWGvZaP7+a+KWTbAk9CkBRqW1nIu7TamV7tZtkHVmibwPHTeFnpAKPlKV7SH5vodV4yYETcw==} - dev: false + dev: true /@rspc/client/0.1.2: resolution: {integrity: sha512-MfgSZkrqVzzqCN4GU3LKhfy4qG+PS1LpEz/MMays6rtz5EFNJIvEVMA5Ooc+DH8KLe5h4/3bf4dfyEs7czhA2w==} dev: false - /@rspc/react/0.0.6: - resolution: {integrity: sha512-iU7DUbc0WkMW7q53sx0+t/gUhcShQ/a0KLpBmHGT6QTwhjnFsdqzW7GohCD4CTcT+RYUxirqHq6TvKPlmtKHcQ==} + /@rspc/react/0.1.2_2j6p62nqyqxwo4xyixi65nw6l4: + resolution: {integrity: sha512-uLyBPCx+Bwk2qkvIcVJQWHT1Z9WhvzbbX4zfEsrZdk2aVtwVb6q0anbIBM/eGc7QgLowaOcSi/o7MZTAL4Sbsw==} peerDependencies: + '@tanstack/react-query': ^4.8.0 react: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@rspc/client': 0.0.6 - '@tanstack/react-query': 4.6.0 - transitivePeerDependencies: - - react-dom - - react-native + '@rspc/client': 0.1.2 + '@tanstack/react-query': 4.10.1 dev: false - /@rspc/solid/0.1.2_g3bwuoybcazh55rssfvtneirfq: + /@rspc/solid/0.1.2_cv7ovwikjqypkqjgvnamt35pny: resolution: {integrity: sha512-lnboDerqpCypgHp2dzrr9eltGXN59WiyQgZqYeZCUXTgU92tlJq5yV/1KMtZ0BYmHRIvUDGNJBV2DiRINNqoMg==} peerDependencies: '@tanstack/solid-query': ^4.6.0 solid-js: ^1.5.5 dependencies: '@rspc/client': 0.1.2 - '@tanstack/solid-query': 4.7.1_solid-js@1.5.7 + '@tanstack/solid-query': 4.10.1_solid-js@1.5.7 solid-js: 1.5.7 dev: false - /@rspc/tauri/0.0.6_@tauri-apps+api@1.0.2: - resolution: {integrity: sha512-zFitmJC/r0WNv2s9yw9R1mHkUgYQ6Qfm79zp0X0GjV3qq8ZhViWcQNxvouYAJrqR3eBiuNHbqie0Fa6YnAuNCA==} - peerDependencies: - '@tauri-apps/api': ^1.0.2 - dependencies: - '@rspc/client': 0.0.6 - '@tauri-apps/api': 1.0.2 - dev: false - /@rspc/tauri/0.1.2: resolution: {integrity: sha512-Esa5WkW7e+VeKqdkCYlA3zi/uBZio1dn5NWWhPoi8wdUaBVNiOIZ5IJVRN9Udlg0CGbI7vF9cX6Id1RNdTI+TQ==} peerDependencies: @@ -3971,6 +3632,15 @@ packages: '@rspc/client': 0.1.2 dev: false + /@rspc/tauri/0.1.2_@tauri-apps+api@1.1.0: + resolution: {integrity: sha512-Esa5WkW7e+VeKqdkCYlA3zi/uBZio1dn5NWWhPoi8wdUaBVNiOIZ5IJVRN9Udlg0CGbI7vF9cX6Id1RNdTI+TQ==} + peerDependencies: + '@tauri-apps/api': ^1.0.2 + dependencies: + '@rspc/client': 0.1.2 + '@tauri-apps/api': 1.1.0 + dev: false + /@sindresorhus/is/0.14.0: resolution: {integrity: sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==} engines: {node: '>=6'} @@ -4047,7 +3717,7 @@ packages: util-deprecate: 1.0.2 dev: true - /@storybook/addon-controls/6.5.12_bb2lpehc4sm6fnn2zwweqmbmoy: + /@storybook/addon-controls/6.5.12_yalvw3r2waubxycyb7k7qsruca: resolution: {integrity: sha512-UoaamkGgAQXplr0kixkPhROdzkY+ZJQpG7VFDU6kmZsIgPRNfX/QoJFR5vV6TpDArBIjWaUUqWII+GHgPRzLgQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -4062,7 +3732,7 @@ packages: '@storybook/api': 6.5.12_biqbaboplfbrettd7655fr4n2y '@storybook/client-logger': 6.5.12 '@storybook/components': 6.5.12_biqbaboplfbrettd7655fr4n2y - '@storybook/core-common': 6.5.12_bb2lpehc4sm6fnn2zwweqmbmoy + '@storybook/core-common': 6.5.12_yalvw3r2waubxycyb7k7qsruca '@storybook/csf': 0.0.2--canary.4566f4d.1 '@storybook/node-logger': 6.5.12 '@storybook/store': 6.5.12_biqbaboplfbrettd7655fr4n2y @@ -4081,7 +3751,7 @@ packages: - webpack-command dev: true - /@storybook/addon-docs/6.5.12_5m5u3ebjmyiua7mtlytflkzccu: + /@storybook/addon-docs/6.5.12_kp27jdcapdfmsr2iyuaso7hgri: resolution: {integrity: sha512-T+QTkmF7QlMVfXHXEberP8CYti/XMTo9oi6VEbZLx+a2N3qY4GZl7X2g26Sf5V4Za+xnapYKBMEIiJ5SvH9weQ==} peerDependencies: '@storybook/mdx2-csf': ^0.0.3 @@ -4095,25 +3765,25 @@ packages: react-dom: optional: true dependencies: - '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.19.1 - '@babel/preset-env': 7.19.3_@babel+core@7.19.1 + '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.19.3 + '@babel/preset-env': 7.19.3_@babel+core@7.19.3 '@jest/transform': 26.6.2 '@mdx-js/react': 1.6.22_react@18.2.0 '@storybook/addons': 6.5.12_biqbaboplfbrettd7655fr4n2y '@storybook/api': 6.5.12_biqbaboplfbrettd7655fr4n2y '@storybook/components': 6.5.12_biqbaboplfbrettd7655fr4n2y - '@storybook/core-common': 6.5.12_bb2lpehc4sm6fnn2zwweqmbmoy + '@storybook/core-common': 6.5.12_yalvw3r2waubxycyb7k7qsruca '@storybook/core-events': 6.5.12 '@storybook/csf': 0.0.2--canary.4566f4d.1 '@storybook/docs-tools': 6.5.12_biqbaboplfbrettd7655fr4n2y - '@storybook/mdx1-csf': 0.0.1_@babel+core@7.19.1 + '@storybook/mdx1-csf': 0.0.1_@babel+core@7.19.3 '@storybook/node-logger': 6.5.12 '@storybook/postinstall': 6.5.12 '@storybook/preview-web': 6.5.12_biqbaboplfbrettd7655fr4n2y '@storybook/source-loader': 6.5.12_biqbaboplfbrettd7655fr4n2y '@storybook/store': 6.5.12_biqbaboplfbrettd7655fr4n2y '@storybook/theming': 6.5.12_biqbaboplfbrettd7655fr4n2y - babel-loader: 8.2.5_@babel+core@7.19.1 + babel-loader: 8.2.5_@babel+core@7.19.3 core-js: 3.25.5 fast-deep-equal: 3.1.3 global: 4.4.0 @@ -4136,7 +3806,7 @@ packages: - webpack-command dev: true - /@storybook/addon-essentials/6.5.12_zxcu6pznswh4g42qafokfu6cri: + /@storybook/addon-essentials/6.5.12_att4lxsvixpqlbweimew737fji: resolution: {integrity: sha512-4AAV0/mQPSk3V0Pie1NIqqgBgScUc0VtBEXDm8BgPeuDNVhPEupnaZgVt+I3GkzzPPo6JjdCsp2L11f3bBSEjw==} peerDependencies: '@babel/core': ^7.9.6 @@ -4193,19 +3863,19 @@ packages: webpack: optional: true dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@storybook/addon-actions': 6.5.12_biqbaboplfbrettd7655fr4n2y '@storybook/addon-backgrounds': 6.5.12_biqbaboplfbrettd7655fr4n2y - '@storybook/addon-controls': 6.5.12_bb2lpehc4sm6fnn2zwweqmbmoy - '@storybook/addon-docs': 6.5.12_5m5u3ebjmyiua7mtlytflkzccu + '@storybook/addon-controls': 6.5.12_yalvw3r2waubxycyb7k7qsruca + '@storybook/addon-docs': 6.5.12_kp27jdcapdfmsr2iyuaso7hgri '@storybook/addon-measure': 6.5.12_biqbaboplfbrettd7655fr4n2y '@storybook/addon-outline': 6.5.12_biqbaboplfbrettd7655fr4n2y '@storybook/addon-toolbars': 6.5.12_biqbaboplfbrettd7655fr4n2y '@storybook/addon-viewport': 6.5.12_biqbaboplfbrettd7655fr4n2y '@storybook/addons': 6.5.12_biqbaboplfbrettd7655fr4n2y '@storybook/api': 6.5.12_biqbaboplfbrettd7655fr4n2y - '@storybook/builder-webpack5': 6.5.12_bb2lpehc4sm6fnn2zwweqmbmoy - '@storybook/core-common': 6.5.12_bb2lpehc4sm6fnn2zwweqmbmoy + '@storybook/builder-webpack5': 6.5.12_yalvw3r2waubxycyb7k7qsruca + '@storybook/core-common': 6.5.12_yalvw3r2waubxycyb7k7qsruca '@storybook/node-logger': 6.5.12 core-js: 3.25.5 react: 18.2.0 @@ -4222,7 +3892,7 @@ packages: - webpack-command dev: true - /@storybook/addon-interactions/6.5.12_synxnxbvuog6xowtndxwunielm: + /@storybook/addon-interactions/6.5.12_335cwx3de7hzzvfoyjqbus3zhu: resolution: {integrity: sha512-wAkKqUX57qZMzgykMIltjDrFfA0II+pKz2SchK4hXHK3/2rtOe+Ah0Sj5nTQo++Ee5oC1PVZWIq/Y1kufCTBJQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -4238,7 +3908,7 @@ packages: '@storybook/api': 6.5.12_biqbaboplfbrettd7655fr4n2y '@storybook/client-logger': 6.5.12 '@storybook/components': 6.5.12_biqbaboplfbrettd7655fr4n2y - '@storybook/core-common': 6.5.12_bb2lpehc4sm6fnn2zwweqmbmoy + '@storybook/core-common': 6.5.12_yalvw3r2waubxycyb7k7qsruca '@storybook/core-events': 6.5.12 '@storybook/csf': 0.0.2--canary.4566f4d.1 '@storybook/instrumenter': 6.5.12_biqbaboplfbrettd7655fr4n2y @@ -4444,7 +4114,7 @@ packages: util-deprecate: 1.0.2 dev: true - /@storybook/builder-webpack4/6.5.12_bb2lpehc4sm6fnn2zwweqmbmoy: + /@storybook/builder-webpack4/6.5.12_yalvw3r2waubxycyb7k7qsruca: resolution: {integrity: sha512-TsthT5jm9ZxQPNOZJbF5AV24me3i+jjYD7gbdKdSHrOVn1r3ydX4Z8aD6+BjLCtTn3T+e8NMvUkL4dInEo1x6g==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -4462,7 +4132,7 @@ packages: '@storybook/client-api': 6.5.12_biqbaboplfbrettd7655fr4n2y '@storybook/client-logger': 6.5.12 '@storybook/components': 6.5.12_biqbaboplfbrettd7655fr4n2y - '@storybook/core-common': 6.5.12_bb2lpehc4sm6fnn2zwweqmbmoy + '@storybook/core-common': 6.5.12_yalvw3r2waubxycyb7k7qsruca '@storybook/core-events': 6.5.12 '@storybook/node-logger': 6.5.12 '@storybook/preview-web': 6.5.12_biqbaboplfbrettd7655fr4n2y @@ -4480,12 +4150,12 @@ packages: css-loader: 3.6.0_webpack@4.46.0 file-loader: 6.2.0_webpack@4.46.0 find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 4.1.6_omrux4vvqa62tf6r3deo7igg6u + fork-ts-checker-webpack-plugin: 4.1.6_lasgyenclx45ngbljrbo537mpe glob: 7.2.3 glob-promise: 3.4.0_glob@7.2.3 global: 4.4.0 html-webpack-plugin: 4.5.2_webpack@4.46.0 - pnp-webpack-plugin: 1.6.4_typescript@4.8.3 + pnp-webpack-plugin: 1.6.4_typescript@4.8.4 postcss: 7.0.39 postcss-flexbugs-fixes: 4.2.1 postcss-loader: 4.3.0_gzaxsinx64nntyd3vmdqwl7coe @@ -4496,7 +4166,7 @@ packages: style-loader: 1.3.0_webpack@4.46.0 terser-webpack-plugin: 4.2.3_webpack@4.46.0 ts-dedent: 2.2.0 - typescript: 4.8.3 + typescript: 4.8.4 url-loader: 4.1.1_lit45vopotvaqup7lrvlnvtxwy util-deprecate: 1.0.2 webpack: 4.46.0 @@ -4513,7 +4183,7 @@ packages: - webpack-command dev: true - /@storybook/builder-webpack5/6.5.12_bb2lpehc4sm6fnn2zwweqmbmoy: + /@storybook/builder-webpack5/6.5.12_yalvw3r2waubxycyb7k7qsruca: resolution: {integrity: sha512-jK5jWxhSbMAM/onPB6WN7xVqwZnAmzJljOG24InO/YIjW8pQof7MeAXCYBM4rYM+BbK61gkZ/RKxwlkqXBWv+Q==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -4531,7 +4201,7 @@ packages: '@storybook/client-api': 6.5.12_biqbaboplfbrettd7655fr4n2y '@storybook/client-logger': 6.5.12 '@storybook/components': 6.5.12_biqbaboplfbrettd7655fr4n2y - '@storybook/core-common': 6.5.12_bb2lpehc4sm6fnn2zwweqmbmoy + '@storybook/core-common': 6.5.12_yalvw3r2waubxycyb7k7qsruca '@storybook/core-events': 6.5.12 '@storybook/node-logger': 6.5.12 '@storybook/preview-web': 6.5.12_biqbaboplfbrettd7655fr4n2y @@ -4546,7 +4216,7 @@ packages: case-sensitive-paths-webpack-plugin: 2.4.0 core-js: 3.25.5 css-loader: 5.2.7_webpack@5.74.0 - fork-ts-checker-webpack-plugin: 6.5.2_kb3egcnme7w23lfa5xodfjfhge + fork-ts-checker-webpack-plugin: 6.5.2_qqxisngxjbp7lstdk7boexbu3e glob: 7.2.3 glob-promise: 3.4.0_glob@7.2.3 html-webpack-plugin: 5.5.0_webpack@5.74.0 @@ -4558,7 +4228,7 @@ packages: style-loader: 2.0.0_webpack@5.74.0 terser-webpack-plugin: 5.3.6_webpack@5.74.0 ts-dedent: 2.2.0 - typescript: 4.8.3 + typescript: 4.8.4 util-deprecate: 1.0.2 webpack: 5.74.0 webpack-dev-middleware: 4.3.0_webpack@5.74.0 @@ -4605,22 +4275,22 @@ packages: util-deprecate: 1.0.2 dev: true - /@storybook/cli/6.5.12_bb2lpehc4sm6fnn2zwweqmbmoy: + /@storybook/cli/6.5.12_yalvw3r2waubxycyb7k7qsruca: resolution: {integrity: sha512-QMtopzK5sFLyOS/i3STjS8V+7J+r6HnOKaib8Tt6l90uDYACXbl7oM1BCcabKNeS6UIk9m/Z4KCirhfBAtyN8Q==} hasBin: true dependencies: - '@babel/core': 7.19.1 - '@babel/preset-env': 7.19.1_@babel+core@7.19.1 - '@storybook/codemod': 6.5.12_@babel+preset-env@7.19.1 - '@storybook/core-common': 6.5.12_bb2lpehc4sm6fnn2zwweqmbmoy + '@babel/core': 7.19.3 + '@babel/preset-env': 7.19.3_@babel+core@7.19.3 + '@storybook/codemod': 6.5.12_@babel+preset-env@7.19.3 + '@storybook/core-common': 6.5.12_yalvw3r2waubxycyb7k7qsruca '@storybook/csf-tools': 6.5.12 '@storybook/node-logger': 6.5.12 '@storybook/semver': 7.3.2 - '@storybook/telemetry': 6.5.12_bb2lpehc4sm6fnn2zwweqmbmoy + '@storybook/telemetry': 6.5.12_yalvw3r2waubxycyb7k7qsruca boxen: 5.1.2 chalk: 4.1.2 commander: 6.2.1 - core-js: 3.25.2 + core-js: 3.25.5 cross-spawn: 7.0.3 envinfo: 7.8.1 express: 4.18.1 @@ -4628,7 +4298,7 @@ packages: fs-extra: 9.1.0 get-port: 5.1.1 globby: 11.1.0 - jscodeshift: 0.13.1_@babel+preset-env@7.19.1 + jscodeshift: 0.13.1_@babel+preset-env@7.19.3 json5: 2.2.1 leven: 3.1.0 prompts: 2.4.2 @@ -4686,21 +4356,21 @@ packages: /@storybook/client-logger/6.5.12: resolution: {integrity: sha512-IrkMr5KZcudX935/C2balFbxLHhkvQnJ78rbVThHDVckQ7l3oIXTh66IMzldeOabVFDZEMiW8AWuGEYof+JtLw==} dependencies: - core-js: 3.25.2 + core-js: 3.25.5 global: 4.4.0 - /@storybook/codemod/6.5.12_@babel+preset-env@7.19.1: + /@storybook/codemod/6.5.12_@babel+preset-env@7.19.3: resolution: {integrity: sha512-KFh9L6B3mpRaKqe3MTiuWWoNanB+tHtcnDzZH4QSKRYB2AgWY3jmuEXOQVaKrR65e3WjFccTDMYyU+ZnK9RofA==} dependencies: - '@babel/types': 7.19.0 + '@babel/types': 7.19.3 '@mdx-js/mdx': 1.6.22 '@storybook/csf': 0.0.2--canary.4566f4d.1 '@storybook/csf-tools': 6.5.12 '@storybook/node-logger': 6.5.12 - core-js: 3.25.2 + core-js: 3.25.5 cross-spawn: 7.0.3 globby: 11.1.0 - jscodeshift: 0.13.1_@babel+preset-env@7.19.1 + jscodeshift: 0.13.1_@babel+preset-env@7.19.3 lodash: 4.17.21 prettier: 2.3.0 recast: 0.19.1 @@ -4729,7 +4399,7 @@ packages: util-deprecate: 1.0.2 dev: true - /@storybook/core-client/6.5.12_gb7obzxizvrzrpjapgh6fkjruy: + /@storybook/core-client/6.5.12_glstf7nzdgkpv4airl4j7svpo4: resolution: {integrity: sha512-jyAd0ud6zO+flpLv0lEHbbt1Bv9Ms225M6WTQLrfe7kN/7j1pVKZEoeVCLZwkJUtSKcNiWQxZbS15h31pcYwqg==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -4760,50 +4430,50 @@ packages: react-dom: 18.2.0_react@18.2.0 regenerator-runtime: 0.13.9 ts-dedent: 2.2.0 - typescript: 4.8.3 - unfetch: 4.2.0 - util-deprecate: 1.0.2 - webpack: 4.46.0 - dev: true - - /@storybook/core-client/6.5.12_pospbsmgsjcopriakyffi74twe: - resolution: {integrity: sha512-jyAd0ud6zO+flpLv0lEHbbt1Bv9Ms225M6WTQLrfe7kN/7j1pVKZEoeVCLZwkJUtSKcNiWQxZbS15h31pcYwqg==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - typescript: '*' - webpack: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@storybook/addons': 6.5.12_biqbaboplfbrettd7655fr4n2y - '@storybook/channel-postmessage': 6.5.12 - '@storybook/channel-websocket': 6.5.12 - '@storybook/client-api': 6.5.12_biqbaboplfbrettd7655fr4n2y - '@storybook/client-logger': 6.5.12 - '@storybook/core-events': 6.5.12 - '@storybook/csf': 0.0.2--canary.4566f4d.1 - '@storybook/preview-web': 6.5.12_biqbaboplfbrettd7655fr4n2y - '@storybook/store': 6.5.12_biqbaboplfbrettd7655fr4n2y - '@storybook/ui': 6.5.12_biqbaboplfbrettd7655fr4n2y - airbnb-js-shims: 2.2.1 - ansi-to-html: 0.6.15 - core-js: 3.25.5 - global: 4.4.0 - lodash: 4.17.21 - qs: 6.11.0 - react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 - regenerator-runtime: 0.13.9 - ts-dedent: 2.2.0 - typescript: 4.8.3 + typescript: 4.8.4 unfetch: 4.2.0 util-deprecate: 1.0.2 webpack: 5.74.0 dev: true - /@storybook/core-common/6.5.12_bb2lpehc4sm6fnn2zwweqmbmoy: + /@storybook/core-client/6.5.12_vknrbelhugdkckamahrfl2bl2m: + resolution: {integrity: sha512-jyAd0ud6zO+flpLv0lEHbbt1Bv9Ms225M6WTQLrfe7kN/7j1pVKZEoeVCLZwkJUtSKcNiWQxZbS15h31pcYwqg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + typescript: '*' + webpack: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@storybook/addons': 6.5.12_biqbaboplfbrettd7655fr4n2y + '@storybook/channel-postmessage': 6.5.12 + '@storybook/channel-websocket': 6.5.12 + '@storybook/client-api': 6.5.12_biqbaboplfbrettd7655fr4n2y + '@storybook/client-logger': 6.5.12 + '@storybook/core-events': 6.5.12 + '@storybook/csf': 0.0.2--canary.4566f4d.1 + '@storybook/preview-web': 6.5.12_biqbaboplfbrettd7655fr4n2y + '@storybook/store': 6.5.12_biqbaboplfbrettd7655fr4n2y + '@storybook/ui': 6.5.12_biqbaboplfbrettd7655fr4n2y + airbnb-js-shims: 2.2.1 + ansi-to-html: 0.6.15 + core-js: 3.25.5 + global: 4.4.0 + lodash: 4.17.21 + qs: 6.11.0 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + regenerator-runtime: 0.13.9 + ts-dedent: 2.2.0 + typescript: 4.8.4 + unfetch: 4.2.0 + util-deprecate: 1.0.2 + webpack: 4.46.0 + dev: true + + /@storybook/core-common/6.5.12_yalvw3r2waubxycyb7k7qsruca: resolution: {integrity: sha512-gG20+eYdIhwQNu6Xs805FLrOCWtkoc8Rt8gJiRt8yXzZh9EZkU4xgCRoCxrrJ03ys/gTiCFbBOfRi749uM3z4w==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -4813,41 +4483,41 @@ packages: typescript: optional: true dependencies: - '@babel/core': 7.19.1 - '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-proposal-decorators': 7.19.1_@babel+core@7.19.1 - '@babel/plugin-proposal-export-default-from': 7.18.10_@babel+core@7.19.1 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-proposal-object-rest-spread': 7.18.9_@babel+core@7.19.1 - '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.19.1 - '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-proposal-private-property-in-object': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.19.1 - '@babel/plugin-transform-arrow-functions': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-transform-block-scoping': 7.18.9_@babel+core@7.19.1 - '@babel/plugin-transform-classes': 7.19.0_@babel+core@7.19.1 - '@babel/plugin-transform-destructuring': 7.18.13_@babel+core@7.19.1 - '@babel/plugin-transform-for-of': 7.18.8_@babel+core@7.19.1 - '@babel/plugin-transform-parameters': 7.18.8_@babel+core@7.19.1 - '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-transform-spread': 7.19.0_@babel+core@7.19.1 - '@babel/preset-env': 7.19.1_@babel+core@7.19.1 - '@babel/preset-react': 7.18.6_@babel+core@7.19.1 - '@babel/preset-typescript': 7.18.6_@babel+core@7.19.1 - '@babel/register': 7.18.9_@babel+core@7.19.1 + '@babel/core': 7.19.3 + '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-proposal-decorators': 7.19.3_@babel+core@7.19.3 + '@babel/plugin-proposal-export-default-from': 7.18.10_@babel+core@7.19.3 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-proposal-object-rest-spread': 7.18.9_@babel+core@7.19.3 + '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.19.3 + '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-proposal-private-property-in-object': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.19.3 + '@babel/plugin-transform-arrow-functions': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-transform-block-scoping': 7.18.9_@babel+core@7.19.3 + '@babel/plugin-transform-classes': 7.19.0_@babel+core@7.19.3 + '@babel/plugin-transform-destructuring': 7.18.13_@babel+core@7.19.3 + '@babel/plugin-transform-for-of': 7.18.8_@babel+core@7.19.3 + '@babel/plugin-transform-parameters': 7.18.8_@babel+core@7.19.3 + '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-transform-spread': 7.19.0_@babel+core@7.19.3 + '@babel/preset-env': 7.19.3_@babel+core@7.19.3 + '@babel/preset-react': 7.18.6_@babel+core@7.19.3 + '@babel/preset-typescript': 7.18.6_@babel+core@7.19.3 + '@babel/register': 7.18.9_@babel+core@7.19.3 '@storybook/node-logger': 6.5.12 '@storybook/semver': 7.3.2 - '@types/node': 16.11.60 + '@types/node': 16.11.64 '@types/pretty-hrtime': 1.0.1 - babel-loader: 8.2.5_7k5t74zmen3ocxyd32avkcyrwe + babel-loader: 8.2.5_jeg5564y5etyvi3ajplf6yhqg4 babel-plugin-macros: 3.1.0 - babel-plugin-polyfill-corejs3: 0.1.7_@babel+core@7.19.1 + babel-plugin-polyfill-corejs3: 0.1.7_@babel+core@7.19.3 chalk: 4.1.2 - core-js: 3.25.2 + core-js: 3.25.5 express: 4.18.1 file-system-cache: 1.1.0 find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 6.5.2_omrux4vvqa62tf6r3deo7igg6u + fork-ts-checker-webpack-plugin: 6.5.2_lasgyenclx45ngbljrbo537mpe fs-extra: 9.1.0 glob: 7.2.3 handlebars: 4.7.7 @@ -4863,7 +4533,7 @@ packages: slash: 3.0.0 telejson: 6.0.8 ts-dedent: 2.2.0 - typescript: 4.8.3 + typescript: 4.8.4 util-deprecate: 1.0.2 webpack: 4.46.0 transitivePeerDependencies: @@ -4879,7 +4549,7 @@ packages: core-js: 3.25.5 dev: true - /@storybook/core-server/6.5.12_gjltyk3rwckdiiez4focyr3iq4: + /@storybook/core-server/6.5.12_kgesy2a4vuj3eqhfm2rb2bv7ny: resolution: {integrity: sha512-q1b/XKwoLUcCoCQ+8ndPD5THkEwXZYJ9ROv16i2VGUjjjAuSqpEYBq5GMGQUgxlWp1bkxtdGL2Jz+6pZfvldzA==} peerDependencies: '@storybook/builder-webpack5': '*' @@ -4896,19 +4566,19 @@ packages: optional: true dependencies: '@discoveryjs/json-ext': 0.5.7 - '@storybook/builder-webpack4': 6.5.12_bb2lpehc4sm6fnn2zwweqmbmoy - '@storybook/builder-webpack5': 6.5.12_bb2lpehc4sm6fnn2zwweqmbmoy - '@storybook/core-client': 6.5.12_gb7obzxizvrzrpjapgh6fkjruy - '@storybook/core-common': 6.5.12_bb2lpehc4sm6fnn2zwweqmbmoy + '@storybook/builder-webpack4': 6.5.12_yalvw3r2waubxycyb7k7qsruca + '@storybook/builder-webpack5': 6.5.12_yalvw3r2waubxycyb7k7qsruca + '@storybook/core-client': 6.5.12_vknrbelhugdkckamahrfl2bl2m + '@storybook/core-common': 6.5.12_yalvw3r2waubxycyb7k7qsruca '@storybook/core-events': 6.5.12 '@storybook/csf': 0.0.2--canary.4566f4d.1 '@storybook/csf-tools': 6.5.12 - '@storybook/manager-webpack4': 6.5.12_bb2lpehc4sm6fnn2zwweqmbmoy - '@storybook/manager-webpack5': 6.5.12_bb2lpehc4sm6fnn2zwweqmbmoy + '@storybook/manager-webpack4': 6.5.12_yalvw3r2waubxycyb7k7qsruca + '@storybook/manager-webpack5': 6.5.12_yalvw3r2waubxycyb7k7qsruca '@storybook/node-logger': 6.5.12 '@storybook/semver': 7.3.2 '@storybook/store': 6.5.12_biqbaboplfbrettd7655fr4n2y - '@storybook/telemetry': 6.5.12_bb2lpehc4sm6fnn2zwweqmbmoy + '@storybook/telemetry': 6.5.12_yalvw3r2waubxycyb7k7qsruca '@types/node': 16.11.64 '@types/node-fetch': 2.6.2 '@types/pretty-hrtime': 1.0.1 @@ -4939,7 +4609,7 @@ packages: slash: 3.0.0 telejson: 6.0.8 ts-dedent: 2.2.0 - typescript: 4.8.3 + typescript: 4.8.4 util-deprecate: 1.0.2 watchpack: 2.4.0 webpack: 4.46.0 @@ -4958,7 +4628,7 @@ packages: - webpack-command dev: true - /@storybook/core/6.5.12_cwscycm3h7bou75zj7z6rixdde: + /@storybook/core/6.5.12_4mlodsleo73l2apakhbdwixwwy: resolution: {integrity: sha512-+o3psAVWL+5LSwyJmEbvhgxKO1Et5uOX8ujNVt/f1fgwJBIf6BypxyPKu9YGQDRzcRssESQQZWNrZCCAZlFeuQ==} peerDependencies: '@storybook/builder-webpack5': '*' @@ -4975,13 +4645,13 @@ packages: typescript: optional: true dependencies: - '@storybook/builder-webpack5': 6.5.12_bb2lpehc4sm6fnn2zwweqmbmoy - '@storybook/core-client': 6.5.12_pospbsmgsjcopriakyffi74twe - '@storybook/core-server': 6.5.12_gjltyk3rwckdiiez4focyr3iq4 - '@storybook/manager-webpack5': 6.5.12_bb2lpehc4sm6fnn2zwweqmbmoy + '@storybook/builder-webpack5': 6.5.12_yalvw3r2waubxycyb7k7qsruca + '@storybook/core-client': 6.5.12_glstf7nzdgkpv4airl4j7svpo4 + '@storybook/core-server': 6.5.12_kgesy2a4vuj3eqhfm2rb2bv7ny + '@storybook/manager-webpack5': 6.5.12_yalvw3r2waubxycyb7k7qsruca react: 18.2.0 react-dom: 18.2.0_react@18.2.0 - typescript: 4.8.3 + typescript: 4.8.4 webpack: 5.74.0 transitivePeerDependencies: - '@storybook/mdx2-csf' @@ -5004,16 +4674,16 @@ packages: '@storybook/mdx2-csf': optional: true dependencies: - '@babel/core': 7.19.1 - '@babel/generator': 7.19.0 - '@babel/parser': 7.19.1 - '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.19.1 - '@babel/preset-env': 7.19.1_@babel+core@7.19.1 - '@babel/traverse': 7.19.1 - '@babel/types': 7.19.0 + '@babel/core': 7.19.3 + '@babel/generator': 7.19.3 + '@babel/parser': 7.19.3 + '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.19.3 + '@babel/preset-env': 7.19.3_@babel+core@7.19.3 + '@babel/traverse': 7.19.3 + '@babel/types': 7.19.3 '@storybook/csf': 0.0.2--canary.4566f4d.1 - '@storybook/mdx1-csf': 0.0.1_@babel+core@7.19.1 - core-js: 3.25.2 + '@storybook/mdx1-csf': 0.0.1_@babel+core@7.19.3 + core-js: 3.25.5 fs-extra: 9.1.0 global: 4.4.0 regenerator-runtime: 0.13.9 @@ -5055,7 +4725,7 @@ packages: - react-dom dev: true - /@storybook/manager-webpack4/6.5.12_bb2lpehc4sm6fnn2zwweqmbmoy: + /@storybook/manager-webpack4/6.5.12_yalvw3r2waubxycyb7k7qsruca: resolution: {integrity: sha512-LH3e6qfvq2znEdxe2kaWtmdDPTnvSkufzoC9iwOgNvo3YrTGrYNyUTDegvW293TOTVfUn7j6TBcsOxIgRnt28g==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -5069,8 +4739,8 @@ packages: '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.19.3 '@babel/preset-react': 7.18.6_@babel+core@7.19.3 '@storybook/addons': 6.5.12_biqbaboplfbrettd7655fr4n2y - '@storybook/core-client': 6.5.12_gb7obzxizvrzrpjapgh6fkjruy - '@storybook/core-common': 6.5.12_bb2lpehc4sm6fnn2zwweqmbmoy + '@storybook/core-client': 6.5.12_vknrbelhugdkckamahrfl2bl2m + '@storybook/core-common': 6.5.12_yalvw3r2waubxycyb7k7qsruca '@storybook/node-logger': 6.5.12 '@storybook/theming': 6.5.12_biqbaboplfbrettd7655fr4n2y '@storybook/ui': 6.5.12_biqbaboplfbrettd7655fr4n2y @@ -5087,7 +4757,7 @@ packages: fs-extra: 9.1.0 html-webpack-plugin: 4.5.2_webpack@4.46.0 node-fetch: 2.6.7 - pnp-webpack-plugin: 1.6.4_typescript@4.8.3 + pnp-webpack-plugin: 1.6.4_typescript@4.8.4 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 read-pkg-up: 7.0.1 @@ -5097,7 +4767,7 @@ packages: telejson: 6.0.8 terser-webpack-plugin: 4.2.3_webpack@4.46.0 ts-dedent: 2.2.0 - typescript: 4.8.3 + typescript: 4.8.4 url-loader: 4.1.1_lit45vopotvaqup7lrvlnvtxwy util-deprecate: 1.0.2 webpack: 4.46.0 @@ -5113,7 +4783,7 @@ packages: - webpack-command dev: true - /@storybook/manager-webpack5/6.5.12_bb2lpehc4sm6fnn2zwweqmbmoy: + /@storybook/manager-webpack5/6.5.12_yalvw3r2waubxycyb7k7qsruca: resolution: {integrity: sha512-F+KgoINhfo1ArbirCc9L+EyADYD8Z4t0LyZYDVcBiZ8DlRIMIoUSye6tDsnyEm+OPloLVAcGwRMYgFhuHB70Lg==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -5127,8 +4797,8 @@ packages: '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.19.3 '@babel/preset-react': 7.18.6_@babel+core@7.19.3 '@storybook/addons': 6.5.12_biqbaboplfbrettd7655fr4n2y - '@storybook/core-client': 6.5.12_pospbsmgsjcopriakyffi74twe - '@storybook/core-common': 6.5.12_bb2lpehc4sm6fnn2zwweqmbmoy + '@storybook/core-client': 6.5.12_glstf7nzdgkpv4airl4j7svpo4 + '@storybook/core-common': 6.5.12_yalvw3r2waubxycyb7k7qsruca '@storybook/node-logger': 6.5.12 '@storybook/theming': 6.5.12_biqbaboplfbrettd7655fr4n2y '@storybook/ui': 6.5.12_biqbaboplfbrettd7655fr4n2y @@ -5153,7 +4823,7 @@ packages: telejson: 6.0.8 terser-webpack-plugin: 5.3.6_webpack@5.74.0 ts-dedent: 2.2.0 - typescript: 4.8.3 + typescript: 4.8.4 util-deprecate: 1.0.2 webpack: 5.74.0 webpack-dev-middleware: 4.3.0_webpack@5.74.0 @@ -5170,15 +4840,15 @@ packages: - webpack-command dev: true - /@storybook/mdx1-csf/0.0.1_@babel+core@7.19.1: + /@storybook/mdx1-csf/0.0.1_@babel+core@7.19.3: resolution: {integrity: sha512-4biZIWWzoWlCarMZmTpqcJNgo/RBesYZwGFbQeXiGYsswuvfWARZnW9RE9aUEMZ4XPn7B1N3EKkWcdcWe/K2tg==} dependencies: - '@babel/generator': 7.19.0 - '@babel/parser': 7.19.1 - '@babel/preset-env': 7.19.1_@babel+core@7.19.1 - '@babel/types': 7.19.0 + '@babel/generator': 7.19.3 + '@babel/parser': 7.19.3 + '@babel/preset-env': 7.19.3_@babel+core@7.19.3 + '@babel/types': 7.19.3 '@mdx-js/mdx': 1.6.22 - '@types/lodash': 4.14.185 + '@types/lodash': 4.14.186 js-string-escape: 1.0.1 loader-utils: 2.0.2 lodash: 4.17.21 @@ -5193,7 +4863,7 @@ packages: dependencies: '@types/npmlog': 4.1.4 chalk: 4.1.2 - core-js: 3.25.2 + core-js: 3.25.5 npmlog: 5.0.1 pretty-hrtime: 1.0.3 @@ -5241,7 +4911,7 @@ packages: util-deprecate: 1.0.2 dev: true - /@storybook/react-docgen-typescript-plugin/1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0_kb3egcnme7w23lfa5xodfjfhge: + /@storybook/react-docgen-typescript-plugin/1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0_qqxisngxjbp7lstdk7boexbu3e: resolution: {integrity: sha512-eVg3BxlOm2P+chijHBTByr90IZVUtgRW56qEOLX7xlww2NBuKrcavBlcmn+HH7GIUktquWkMPtvy6e0W0NgA5w==} peerDependencies: typescript: '>= 3.x' @@ -5252,15 +4922,15 @@ packages: find-cache-dir: 3.3.2 flat-cache: 3.0.4 micromatch: 4.0.5 - react-docgen-typescript: 2.2.2_typescript@4.8.3 + react-docgen-typescript: 2.2.2_typescript@4.8.4 tslib: 2.4.0 - typescript: 4.8.3 + typescript: 4.8.4 webpack: 5.74.0 transitivePeerDependencies: - supports-color dev: true - /@storybook/react/6.5.12_4pckcgkfmm4wjiducqsnlnfdlm: + /@storybook/react/6.5.12_k3yxu2mvbthdjhmwp2roy5mt64: resolution: {integrity: sha512-1tG8EdSfp+OZAKAWPT2UrexF4o007jEMwQFFXw1atIQrQOADzSnZ7lTYJ08o5TyJwksswtr18tH3oJJ9sG3KPw==} engines: {node: '>=10.13.0'} hasBin: true @@ -5288,20 +4958,20 @@ packages: typescript: optional: true dependencies: - '@babel/core': 7.19.1 - '@babel/preset-flow': 7.18.6_@babel+core@7.19.1 - '@babel/preset-react': 7.18.6_@babel+core@7.19.1 + '@babel/core': 7.19.3 + '@babel/preset-flow': 7.18.6_@babel+core@7.19.3 + '@babel/preset-react': 7.18.6_@babel+core@7.19.3 '@pmmmwh/react-refresh-webpack-plugin': 0.5.7_metx475lqcp4j5c75za4zf7xbi '@storybook/addons': 6.5.12_biqbaboplfbrettd7655fr4n2y - '@storybook/builder-webpack5': 6.5.12_bb2lpehc4sm6fnn2zwweqmbmoy + '@storybook/builder-webpack5': 6.5.12_yalvw3r2waubxycyb7k7qsruca '@storybook/client-logger': 6.5.12 - '@storybook/core': 6.5.12_cwscycm3h7bou75zj7z6rixdde - '@storybook/core-common': 6.5.12_bb2lpehc4sm6fnn2zwweqmbmoy + '@storybook/core': 6.5.12_4mlodsleo73l2apakhbdwixwwy + '@storybook/core-common': 6.5.12_yalvw3r2waubxycyb7k7qsruca '@storybook/csf': 0.0.2--canary.4566f4d.1 '@storybook/docs-tools': 6.5.12_biqbaboplfbrettd7655fr4n2y - '@storybook/manager-webpack5': 6.5.12_bb2lpehc4sm6fnn2zwweqmbmoy + '@storybook/manager-webpack5': 6.5.12_yalvw3r2waubxycyb7k7qsruca '@storybook/node-logger': 6.5.12 - '@storybook/react-docgen-typescript-plugin': 1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0_kb3egcnme7w23lfa5xodfjfhge + '@storybook/react-docgen-typescript-plugin': 1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0_qqxisngxjbp7lstdk7boexbu3e '@storybook/semver': 7.3.2 '@storybook/store': 6.5.12_biqbaboplfbrettd7655fr4n2y '@types/estree': 0.0.51 @@ -5326,7 +4996,7 @@ packages: read-pkg-up: 7.0.1 regenerator-runtime: 0.13.9 ts-dedent: 2.2.0 - typescript: 4.8.3 + typescript: 4.8.4 util-deprecate: 1.0.2 webpack: 5.74.0 transitivePeerDependencies: @@ -5371,7 +5041,7 @@ packages: engines: {node: '>=10'} hasBin: true dependencies: - core-js: 3.25.2 + core-js: 3.25.5 find-up: 4.1.0 /@storybook/source-loader/6.5.12_biqbaboplfbrettd7655fr4n2y: @@ -5419,13 +5089,13 @@ packages: util-deprecate: 1.0.2 dev: true - /@storybook/telemetry/6.5.12_bb2lpehc4sm6fnn2zwweqmbmoy: + /@storybook/telemetry/6.5.12_yalvw3r2waubxycyb7k7qsruca: resolution: {integrity: sha512-mCHxx7NmQ3n7gx0nmblNlZE5ZgrjQm6B08mYeWg6Y7r4GZnqS6wZbvAwVhZZ3Gg/9fdqaBApHsdAXp0d5BrlxA==} dependencies: '@storybook/client-logger': 6.5.12 - '@storybook/core-common': 6.5.12_bb2lpehc4sm6fnn2zwweqmbmoy + '@storybook/core-common': 6.5.12_yalvw3r2waubxycyb7k7qsruca chalk: 4.1.2 - core-js: 3.25.2 + core-js: 3.25.5 detect-package-manager: 2.0.1 fetch-retry: 5.0.3 fs-extra: 9.1.0 @@ -5496,124 +5166,198 @@ packages: resolve-from: 5.0.0 dev: true - /@svgr/babel-plugin-add-jsx-attribute/6.3.1_@babel+core@7.19.1: + /@svgr/babel-plugin-add-jsx-attribute/6.3.1: + resolution: {integrity: sha512-jDBKArXYO1u0B1dmd2Nf8Oy6aTF5vLDfLoO9Oon/GLkqZ/NiggYWZA+a2HpUMH4ITwNqS3z43k8LWApB8S583w==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dev: true + + /@svgr/babel-plugin-add-jsx-attribute/6.3.1_@babel+core@7.19.3: resolution: {integrity: sha512-jDBKArXYO1u0B1dmd2Nf8Oy6aTF5vLDfLoO9Oon/GLkqZ/NiggYWZA+a2HpUMH4ITwNqS3z43k8LWApB8S583w==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 dev: true - /@svgr/babel-plugin-remove-jsx-attribute/6.3.1_@babel+core@7.19.1: + /@svgr/babel-plugin-remove-jsx-attribute/6.3.1: + resolution: {integrity: sha512-dQzyJ4prwjcFd929T43Z8vSYiTlTu8eafV40Z2gO7zy/SV5GT+ogxRJRBIKWomPBOiaVXFg3jY4S5hyEN3IBjQ==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dev: true + + /@svgr/babel-plugin-remove-jsx-attribute/6.3.1_@babel+core@7.19.3: resolution: {integrity: sha512-dQzyJ4prwjcFd929T43Z8vSYiTlTu8eafV40Z2gO7zy/SV5GT+ogxRJRBIKWomPBOiaVXFg3jY4S5hyEN3IBjQ==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 dev: true - /@svgr/babel-plugin-remove-jsx-empty-expression/6.3.1_@babel+core@7.19.1: + /@svgr/babel-plugin-remove-jsx-empty-expression/6.3.1: + resolution: {integrity: sha512-HBOUc1XwSU67fU26V5Sfb8MQsT0HvUyxru7d0oBJ4rA2s4HW3PhyAPC7fV/mdsSGpAvOdd8Wpvkjsr0fWPUO7A==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dev: true + + /@svgr/babel-plugin-remove-jsx-empty-expression/6.3.1_@babel+core@7.19.3: resolution: {integrity: sha512-HBOUc1XwSU67fU26V5Sfb8MQsT0HvUyxru7d0oBJ4rA2s4HW3PhyAPC7fV/mdsSGpAvOdd8Wpvkjsr0fWPUO7A==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 dev: true - /@svgr/babel-plugin-replace-jsx-attribute-value/6.3.1_@babel+core@7.19.1: + /@svgr/babel-plugin-replace-jsx-attribute-value/6.3.1: + resolution: {integrity: sha512-C12e6aN4BXAolRrI601gPn5MDFCRHO7C4TM8Kks+rDtl8eEq+NN1sak0eAzJu363x3TmHXdZn7+Efd2nr9I5dA==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dev: true + + /@svgr/babel-plugin-replace-jsx-attribute-value/6.3.1_@babel+core@7.19.3: resolution: {integrity: sha512-C12e6aN4BXAolRrI601gPn5MDFCRHO7C4TM8Kks+rDtl8eEq+NN1sak0eAzJu363x3TmHXdZn7+Efd2nr9I5dA==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 dev: true - /@svgr/babel-plugin-svg-dynamic-title/6.3.1_@babel+core@7.19.1: + /@svgr/babel-plugin-svg-dynamic-title/6.3.1: + resolution: {integrity: sha512-6NU55Mmh3M5u2CfCCt6TX29/pPneutrkJnnDCHbKZnjukZmmgUAZLtZ2g6ZoSPdarowaQmAiBRgAHqHmG0vuqA==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dev: true + + /@svgr/babel-plugin-svg-dynamic-title/6.3.1_@babel+core@7.19.3: resolution: {integrity: sha512-6NU55Mmh3M5u2CfCCt6TX29/pPneutrkJnnDCHbKZnjukZmmgUAZLtZ2g6ZoSPdarowaQmAiBRgAHqHmG0vuqA==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 dev: true - /@svgr/babel-plugin-svg-em-dimensions/6.3.1_@babel+core@7.19.1: + /@svgr/babel-plugin-svg-em-dimensions/6.3.1: + resolution: {integrity: sha512-HV1NGHYTTe1vCNKlBgq/gKuCSfaRlKcHIADn7P8w8U3Zvujdw1rmusutghJ1pZJV7pDt3Gt8ws+SVrqHnBO/Qw==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dev: true + + /@svgr/babel-plugin-svg-em-dimensions/6.3.1_@babel+core@7.19.3: resolution: {integrity: sha512-HV1NGHYTTe1vCNKlBgq/gKuCSfaRlKcHIADn7P8w8U3Zvujdw1rmusutghJ1pZJV7pDt3Gt8ws+SVrqHnBO/Qw==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 dev: true - /@svgr/babel-plugin-transform-react-native-svg/6.3.1_@babel+core@7.19.1: + /@svgr/babel-plugin-transform-react-native-svg/6.3.1: + resolution: {integrity: sha512-2wZhSHvTolFNeKDAN/ZmIeSz2O9JSw72XD+o2bNp2QAaWqa8KGpn5Yk5WHso6xqfSAiRzAE+GXlsrBO4UP9LLw==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dev: true + + /@svgr/babel-plugin-transform-react-native-svg/6.3.1_@babel+core@7.19.3: resolution: {integrity: sha512-2wZhSHvTolFNeKDAN/ZmIeSz2O9JSw72XD+o2bNp2QAaWqa8KGpn5Yk5WHso6xqfSAiRzAE+GXlsrBO4UP9LLw==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 dev: true - /@svgr/babel-plugin-transform-svg-component/6.3.1_@babel+core@7.19.1: + /@svgr/babel-plugin-transform-svg-component/6.3.1: + resolution: {integrity: sha512-cZ8Tr6ZAWNUFfDeCKn/pGi976iWSkS8ijmEYKosP+6ktdZ7lW9HVLHojyusPw3w0j8PI4VBeWAXAmi/2G7owxw==} + engines: {node: '>=12'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dev: true + + /@svgr/babel-plugin-transform-svg-component/6.3.1_@babel+core@7.19.3: resolution: {integrity: sha512-cZ8Tr6ZAWNUFfDeCKn/pGi976iWSkS8ijmEYKosP+6ktdZ7lW9HVLHojyusPw3w0j8PI4VBeWAXAmi/2G7owxw==} engines: {node: '>=12'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 dev: true - /@svgr/babel-preset/6.3.1_@babel+core@7.19.1: - resolution: {integrity: sha512-tQtWtzuMMQ3opH7je+MpwfuRA1Hf3cKdSgTtAYwOBDfmhabP7rcTfBi3E7V3MuwJNy/Y02/7/RutvwS1W4Qv9g==} + /@svgr/babel-preset/6.4.0: + resolution: {integrity: sha512-Ytuh7N282fv2Cy1JePf6HZ29/G5Hb8mQAjx4iykPjvfFl9NK6o5lZavmewgjOGT8kNPtwgvheuOQn4CifHRUhQ==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 - '@svgr/babel-plugin-add-jsx-attribute': 6.3.1_@babel+core@7.19.1 - '@svgr/babel-plugin-remove-jsx-attribute': 6.3.1_@babel+core@7.19.1 - '@svgr/babel-plugin-remove-jsx-empty-expression': 6.3.1_@babel+core@7.19.1 - '@svgr/babel-plugin-replace-jsx-attribute-value': 6.3.1_@babel+core@7.19.1 - '@svgr/babel-plugin-svg-dynamic-title': 6.3.1_@babel+core@7.19.1 - '@svgr/babel-plugin-svg-em-dimensions': 6.3.1_@babel+core@7.19.1 - '@svgr/babel-plugin-transform-react-native-svg': 6.3.1_@babel+core@7.19.1 - '@svgr/babel-plugin-transform-svg-component': 6.3.1_@babel+core@7.19.1 + '@svgr/babel-plugin-add-jsx-attribute': 6.3.1 + '@svgr/babel-plugin-remove-jsx-attribute': 6.3.1 + '@svgr/babel-plugin-remove-jsx-empty-expression': 6.3.1 + '@svgr/babel-plugin-replace-jsx-attribute-value': 6.3.1 + '@svgr/babel-plugin-svg-dynamic-title': 6.3.1 + '@svgr/babel-plugin-svg-em-dimensions': 6.3.1 + '@svgr/babel-plugin-transform-react-native-svg': 6.3.1 + '@svgr/babel-plugin-transform-svg-component': 6.3.1 dev: true - /@svgr/core/6.3.1: - resolution: {integrity: sha512-Sm3/7OdXbQreemf9aO25keerZSbnKMpGEfmH90EyYpj1e8wMD4TuwJIb3THDSgRMWk1kYJfSRulELBy4gVgZUA==} + /@svgr/babel-preset/6.4.0_@babel+core@7.19.3: + resolution: {integrity: sha512-Ytuh7N282fv2Cy1JePf6HZ29/G5Hb8mQAjx4iykPjvfFl9NK6o5lZavmewgjOGT8kNPtwgvheuOQn4CifHRUhQ==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.19.3 + '@svgr/babel-plugin-add-jsx-attribute': 6.3.1_@babel+core@7.19.3 + '@svgr/babel-plugin-remove-jsx-attribute': 6.3.1_@babel+core@7.19.3 + '@svgr/babel-plugin-remove-jsx-empty-expression': 6.3.1_@babel+core@7.19.3 + '@svgr/babel-plugin-replace-jsx-attribute-value': 6.3.1_@babel+core@7.19.3 + '@svgr/babel-plugin-svg-dynamic-title': 6.3.1_@babel+core@7.19.3 + '@svgr/babel-plugin-svg-em-dimensions': 6.3.1_@babel+core@7.19.3 + '@svgr/babel-plugin-transform-react-native-svg': 6.3.1_@babel+core@7.19.3 + '@svgr/babel-plugin-transform-svg-component': 6.3.1_@babel+core@7.19.3 + dev: true + + /@svgr/core/6.4.0: + resolution: {integrity: sha512-wU9uyF6BUnwAqG7fDOowmDQzmbvovj1uq/iETfMK9xwQNaT+e7yN7SmDDcETXC72dnOrMcRuEWw0JEvpJha+yg==} engines: {node: '>=10'} dependencies: - '@svgr/plugin-jsx': 6.3.1_@svgr+core@6.3.1 + '@svgr/babel-preset': 6.4.0 + '@svgr/plugin-jsx': 6.4.0_@svgr+core@6.4.0 camelcase: 6.3.0 cosmiconfig: 7.0.1 transitivePeerDependencies: + - '@babel/core' - supports-color dev: true - /@svgr/hast-util-to-babel-ast/6.3.1: - resolution: {integrity: sha512-NgyCbiTQIwe3wHe/VWOUjyxmpUmsrBjdoIxKpXt3Nqc3TN30BpJG22OxBvVzsAh9jqep0w0/h8Ywvdk3D9niNQ==} + /@svgr/hast-util-to-babel-ast/6.4.0: + resolution: {integrity: sha512-PjcU8jCneKXJnrREycsgfgQ/bzR1ogSKC5MBeUu2wmEoJIjzXX7X14DDktUjU9bkBy26yMDiVHn46Nl82P3WEg==} engines: {node: '>=10'} dependencies: - '@babel/types': 7.19.0 + '@babel/types': 7.19.3 entities: 4.4.0 dev: true - /@svgr/plugin-jsx/6.3.1_@svgr+core@6.3.1: - resolution: {integrity: sha512-r9+0mYG3hD4nNtUgsTXWGYJomv/bNd7kC16zvsM70I/bGeoCi/3lhTmYqeN6ChWX317OtQCSZZbH4wq9WwoXbw==} + /@svgr/plugin-jsx/6.4.0_@svgr+core@6.4.0: + resolution: {integrity: sha512-gu6E7v8qRAtCxbymI1et3G7athogvKvzsJkSWiHVZsuVZbyx5O2b7+DIkKvAGh2RvEzgSvfGf8QD1BaHal2vBw==} engines: {node: '>=10'} peerDependencies: '@svgr/core': ^6.0.0 dependencies: - '@babel/core': 7.19.1 - '@svgr/babel-preset': 6.3.1_@babel+core@7.19.1 - '@svgr/core': 6.3.1 - '@svgr/hast-util-to-babel-ast': 6.3.1 + '@babel/core': 7.19.3 + '@svgr/babel-preset': 6.4.0_@babel+core@7.19.3 + '@svgr/core': 6.4.0 + '@svgr/hast-util-to-babel-ast': 6.4.0 svg-parser: 2.0.4 transitivePeerDependencies: - supports-color @@ -5638,7 +5382,7 @@ packages: tailwindcss: '>=3.0.0 || >= 3.0.0-alpha.1' dependencies: mini-svg-data-uri: 1.4.4 - tailwindcss: 3.1.8_postcss@8.4.16 + tailwindcss: 3.1.8 dev: false /@tailwindcss/line-clamp/0.4.2: @@ -5652,7 +5396,7 @@ packages: peerDependencies: tailwindcss: '>=2.0.0 || >=3.0.0 || >=3.0.0-alpha.1' dependencies: - tailwindcss: 3.1.8_postcss@8.4.16 + tailwindcss: 3.1.8 dev: true /@tailwindcss/typography/0.5.7: @@ -5675,40 +5419,37 @@ packages: lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 postcss-selector-parser: 6.0.10 - tailwindcss: 3.1.8_postcss@8.4.16 + tailwindcss: 3.1.8 dev: true - /@tanstack/match-sorter-utils/8.1.1: - resolution: {integrity: sha512-IdmEekEYxQsoLOR0XQyw3jD1GujBpRRYaGJYQUw1eOT1eUugWxdc7jomh1VQ1EKHcdwDLpLaCz/8y4KraU4T9A==} + /@tanstack/match-sorter-utils/8.5.14: + resolution: {integrity: sha512-lVNhzTcOJ2bZ4IU+PeCPQ36vowBHvviJb2ZfdRFX5uhy7G0jM8N34zAMbmS5ZmVH8D2B7oU82OWo0e/5ZFzQrw==} engines: {node: '>=12'} dependencies: remove-accents: 0.4.2 dev: false - /@tanstack/query-core/4.6.0: - resolution: {integrity: sha512-8b+vwooh8b4z1bIT3Ca7OVSyARM5JNbXi6F+g5VLYiflRd0AtJ+koqhin7UGhR11bbypmzVRKllWHwexWjKjDg==} + /@tanstack/query-core/4.10.1: + resolution: {integrity: sha512-UZRYzjgQSfYhQ+cJX0CspAbzutf8p93gR1xFjQuH3OYcb/7t3WnHkdb/qC9mbqrfWXN/JAbBTJlTU/XQHc5HbA==} dev: false - /@tanstack/query-core/4.7.1: - resolution: {integrity: sha512-BzFI4KdiklxfUUgNiO6E4XsSwaX5NscuIhP7aqWbS8Hqik1KohfvO+SXpftSZHOyzm0+XpycRsip/QEs3Hx3AA==} - dev: false - - /@tanstack/react-query-devtools/4.6.0_35w334xqtbzboqulr5pz522esm: - resolution: {integrity: sha512-utuDpgHBNcb4UsszWqOXh3maj/FqgyccOpuTEdBdB0Ffl2T9bckCgWt3cFsVdGcGi6QsotT/qXAsZxC8vKAjQA==} + /@tanstack/react-query-devtools/4.10.1_u34amavde33a6d2g2dyykucmvy: + resolution: {integrity: sha512-aPsFBr9zbylnQxQoCNzPF1teN+NVGdeU1xQO515FM3gq6uISUWbqirVj/mE6HHJJpH/zi0j6HD1StD5h1XdNmg==} peerDependencies: - '@tanstack/react-query': 4.6.0 + '@tanstack/react-query': 4.10.1 react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@tanstack/match-sorter-utils': 8.1.1 - '@tanstack/react-query': 4.6.0_biqbaboplfbrettd7655fr4n2y + '@tanstack/match-sorter-utils': 8.5.14 + '@tanstack/react-query': 4.10.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 + superjson: 1.10.0 use-sync-external-store: 1.2.0_react@18.2.0 dev: false - /@tanstack/react-query/4.6.0: - resolution: {integrity: sha512-ZIx8EfRBGagxw+3onFb//Fnv0hhXDj/UHIYovPGwHdancAG9ZL4D0ymUan4cXJib/L0rGPzYFvET/yTEIPPXAw==} + /@tanstack/react-query/4.10.1: + resolution: {integrity: sha512-6GaLYAsAu/4aX6HR4krpOej9qbKWXe0X0eccikpv5hAw4CoAAPG29Pydql1nTl9cYF2zd21unVm4yApklFY0AA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -5719,12 +5460,12 @@ packages: react-native: optional: true dependencies: - '@tanstack/query-core': 4.6.0 + '@tanstack/query-core': 4.10.1 use-sync-external-store: 1.2.0 dev: false - /@tanstack/react-query/4.6.0_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-ZIx8EfRBGagxw+3onFb//Fnv0hhXDj/UHIYovPGwHdancAG9ZL4D0ymUan4cXJib/L0rGPzYFvET/yTEIPPXAw==} + /@tanstack/react-query/4.10.1_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-6GaLYAsAu/4aX6HR4krpOej9qbKWXe0X0eccikpv5hAw4CoAAPG29Pydql1nTl9cYF2zd21unVm4yApklFY0AA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -5735,7 +5476,7 @@ packages: react-native: optional: true dependencies: - '@tanstack/query-core': 4.6.0 + '@tanstack/query-core': 4.10.1 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 use-sync-external-store: 1.2.0_react@18.2.0 @@ -5751,12 +5492,12 @@ packages: react: 18.2.0 dev: false - /@tanstack/solid-query/4.7.1_solid-js@1.5.7: - resolution: {integrity: sha512-KT1xKzs0xuMhaPtSsmUL5LagZm/0nwwB6OoNiL3MwjFfGblX2oMm2U5f5tcd67+dVz02ase17mpHP/adMid+HA==} + /@tanstack/solid-query/4.10.1_solid-js@1.5.7: + resolution: {integrity: sha512-mKOOQJZBYrf1Di7qhejNfMny5vBncLTx1MIkIsTdJI47DpD/sA+UPsafawns+Q5/4mXoVOi2D3dz0U5uzAVfBA==} peerDependencies: solid-js: ^1.5.4 dependencies: - '@tanstack/query-core': 4.7.1 + '@tanstack/query-core': 4.10.1 solid-js: 1.5.7 dev: false @@ -5765,20 +5506,11 @@ packages: engines: {node: '>=12'} dev: false - /@tauri-apps/api/1.0.2: - resolution: {integrity: sha512-yuNW0oeJ1/ZA7wNF1KgxhHrSu5viPVzY/UgUczzN5ptLM8dH15Juy5rEGkoHfeXGju90Y/l22hi3BtIrp/za+w==} + /@tauri-apps/api/1.1.0: + resolution: {integrity: sha512-n13pIqdPd3KtaMmmAcrU7BTfdMtIlGNnfZD0dNX8L4p8dgmuNyikm6JAA+yCpl9gqq6I8x5cV2Y0muqdgD0cWw==} engines: {node: '>= 12.22.0', npm: '>= 6.6.0', yarn: '>= 1.19.1'} dev: false - /@tauri-apps/cli-darwin-arm64/1.0.5: - resolution: {integrity: sha512-oxpFb9ZeMiC3xPUJ9NsXWCnnwFSVkPbJUvDKpc9IaoDIUpsMTV72W4P0Nh0uQRbyhx4modPpstt7+ONypNVYNg==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - /@tauri-apps/cli-darwin-arm64/1.1.1: resolution: {integrity: sha512-qBG11ig525/qf0f5OQxn0ON3hT8YdpTfpa4Y4kVqBJhdW50R5fadPv6tv5Dpl2TS2X7nWh/zg5mEXYoCK3HZ9w==} engines: {node: '>= 10'} @@ -5788,15 +5520,6 @@ packages: dev: true optional: true - /@tauri-apps/cli-darwin-x64/1.0.5: - resolution: {integrity: sha512-hRNYC6L9edz2dEqK33tssPylF2ti6x6udidBlGWc5GSoeEb/05qKMEA1MESQYKBG+4q+wjJvACA2vvz6AfgJ3Q==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - /@tauri-apps/cli-darwin-x64/1.1.1: resolution: {integrity: sha512-M3dMsp78OdxisbTwAWGvy3jIb3uqThtQcUYVvqOu9LeEOHyldOBFDSht+6PTBpaJLAHFMQK2rmNxiWgigklJaA==} engines: {node: '>= 10'} @@ -5806,15 +5529,6 @@ packages: dev: true optional: true - /@tauri-apps/cli-linux-arm-gnueabihf/1.0.5: - resolution: {integrity: sha512-hc/Jp3TtFpxB8XVkLEwWy7MNcUBlS8rNCafQBUt4KSElXB+/oGo50jPO+wd5GSMSOR59UCzH08v11P0b+sAa/w==} - engines: {node: '>= 10'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@tauri-apps/cli-linux-arm-gnueabihf/1.1.1: resolution: {integrity: sha512-LYlvdAd73cq+yTi6rw7j/DWIvDpeApwgQkIn+HYsNNeFhyFmABU7tmw+pekK3W3nHAkYAJ69Rl4ZdoxdNGKmHg==} engines: {node: '>= 10'} @@ -5824,15 +5538,6 @@ packages: dev: true optional: true - /@tauri-apps/cli-linux-arm64-gnu/1.0.5: - resolution: {integrity: sha512-btFlkD2PG+yzJBZzWeJmyCy8ZV+iys2Jl66Fs4g9lSi3KrBDnyfQ26RpGZb2pRfkkcVP8/x1WSfByO+Rj+PTBA==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@tauri-apps/cli-linux-arm64-gnu/1.1.1: resolution: {integrity: sha512-o/hbMQIKuFI7cTNpeQBHD/OCNJOBIci78faKms/t6AstLXx0QJuRHDk477Rg6VVy/I3BBKbyATALbmcTq+ti0A==} engines: {node: '>= 10'} @@ -5842,15 +5547,6 @@ packages: dev: true optional: true - /@tauri-apps/cli-linux-arm64-musl/1.0.5: - resolution: {integrity: sha512-p5JFdWab2AWhfgAZW/mgOLu+YiIJXKV0NdATGmdiBgQCMmz1k/FM8iOFApCgGbo3/zkR58cJ7Z7hyWmQ07M6Pw==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@tauri-apps/cli-linux-arm64-musl/1.1.1: resolution: {integrity: sha512-8Ci4qlDnXIp93XqUrtzFCBDatUzPHpZq7L3bociUbWpvy/bnlzxp1C/C+vwdc4uS1MiAp9v3BFgrU4i0f0Z3QQ==} engines: {node: '>= 10'} @@ -5860,15 +5556,6 @@ packages: dev: true optional: true - /@tauri-apps/cli-linux-x64-gnu/1.0.5: - resolution: {integrity: sha512-fOXR635AXxwSO7MCfBhMLnGpcg1H83XGw9ocuyg4jjvtE8QoYPwC4ksfb5lLhDVMui9iIKY93NAK3EkQiSGGmQ==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@tauri-apps/cli-linux-x64-gnu/1.1.1: resolution: {integrity: sha512-ES4Bkx2JAI8+dDNDJswhLS3yqt+yT/4C6UfGOPIHFxcXUh6fe36eUllrTt+HLRS9xTZbYnteJy7ebq2TqMkaxw==} engines: {node: '>= 10'} @@ -5878,15 +5565,6 @@ packages: dev: true optional: true - /@tauri-apps/cli-linux-x64-musl/1.0.5: - resolution: {integrity: sha512-8be4zJVkuMs427JqONhFx5Ia5zWsQ5tbZXd80C3dHNL+5/3VIOK6nGQ0iijyZSLXiE9JKEH2jp1EHB+1TVJRcw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@tauri-apps/cli-linux-x64-musl/1.1.1: resolution: {integrity: sha512-qrN1WOMAaDl+LE8P8iO0+DYlrWNTc9jIu/CsnVY/LImTn79ZPxEkcVBo0UGeKRI7f10TfvkVmLCBLxTz8QhEyA==} engines: {node: '>= 10'} @@ -5896,15 +5574,6 @@ packages: dev: true optional: true - /@tauri-apps/cli-win32-ia32-msvc/1.0.5: - resolution: {integrity: sha512-WpnIfzS1e4InGhvd1IDSKC3w6kbI5c6oJgMmtkMTBlhjhiZXhZmQF4XA784A5Y13pzsbXnbNJKOp8DuPVkoTRQ==} - engines: {node: '>= 10'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true - /@tauri-apps/cli-win32-ia32-msvc/1.1.1: resolution: {integrity: sha512-vw7VOmrQlywHhFV3pf54udf2FRNj9dg9WP1gL0My55FnB+w+PWS9Ipm871kX5qepmChdnZHKq9fsqE2uTjX//Q==} engines: {node: '>= 10'} @@ -5914,15 +5583,6 @@ packages: dev: true optional: true - /@tauri-apps/cli-win32-x64-msvc/1.0.5: - resolution: {integrity: sha512-8iEhVD3X4LZfrlxEPOV+mAj4QrJrEqKTICiJnwmgjvhYQOOsNHzg5kca7pcBbqcgorQOBydLpfGJtxWRusVPaw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true - /@tauri-apps/cli-win32-x64-msvc/1.1.1: resolution: {integrity: sha512-OukxlLLi3AoCN4ABnqCDTiiC7xJGWukAjrKCIx7wFISrLjNfsrnH7/UOzuopfGpZChSe2c+AamVmcpBfVsEmJA==} engines: {node: '>= 10'} @@ -5932,22 +5592,6 @@ packages: dev: true optional: true - /@tauri-apps/cli/1.0.5: - resolution: {integrity: sha512-vbY+MwK+xN65x0R/o16UQPxBtJl8pmzVzC0TZKokZfmeOkomoqOEOinSwznAMeyR1ZMJW+fXVgJCPvGsRQ0LGg==} - engines: {node: '>= 10'} - hasBin: true - optionalDependencies: - '@tauri-apps/cli-darwin-arm64': 1.0.5 - '@tauri-apps/cli-darwin-x64': 1.0.5 - '@tauri-apps/cli-linux-arm-gnueabihf': 1.0.5 - '@tauri-apps/cli-linux-arm64-gnu': 1.0.5 - '@tauri-apps/cli-linux-arm64-musl': 1.0.5 - '@tauri-apps/cli-linux-x64-gnu': 1.0.5 - '@tauri-apps/cli-linux-x64-musl': 1.0.5 - '@tauri-apps/cli-win32-ia32-msvc': 1.0.5 - '@tauri-apps/cli-win32-x64-msvc': 1.0.5 - dev: true - /@tauri-apps/cli/1.1.1: resolution: {integrity: sha512-80kjMEMPBwLYCp0tTKSquy90PHHGGBvZsneNr3B/mWxNsvjzA1C0vOyGJGFrJuT2OmkvrdvuJZ5mch5hL8O1Xg==} engines: {node: '>= 10'} @@ -6073,8 +5717,8 @@ packages: /@types/babel__core/7.1.19: resolution: {integrity: sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==} dependencies: - '@babel/parser': 7.19.1 - '@babel/types': 7.19.0 + '@babel/parser': 7.19.3 + '@babel/types': 7.19.3 '@types/babel__generator': 7.6.4 '@types/babel__template': 7.4.1 '@types/babel__traverse': 7.18.2 @@ -6083,20 +5727,20 @@ packages: /@types/babel__generator/7.6.4: resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} dependencies: - '@babel/types': 7.19.0 + '@babel/types': 7.19.3 dev: true /@types/babel__template/7.4.1: resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} dependencies: - '@babel/parser': 7.19.1 - '@babel/types': 7.19.0 + '@babel/parser': 7.19.3 + '@babel/types': 7.19.3 dev: true /@types/babel__traverse/7.18.2: resolution: {integrity: sha512-FcFaxOr2V5KZCviw1TnutEMVUVsGt4D2hP1TAfXZAMKuHYW3xQhe3jTxNPWutgCJ3/X1c5yX8ZoGVEItxKbwBg==} dependencies: - '@babel/types': 7.19.0 + '@babel/types': 7.19.3 dev: true /@types/babylon/6.16.6: @@ -6109,7 +5753,7 @@ packages: resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} dependencies: '@types/connect': 3.4.35 - '@types/node': 17.0.45 + '@types/node': 18.8.2 dev: false /@types/byte-size/8.1.0: @@ -6121,7 +5765,7 @@ packages: dependencies: '@types/http-cache-semantics': 4.0.1 '@types/keyv': 3.1.4 - '@types/node': 18.8.1 + '@types/node': 18.8.2 '@types/responselike': 1.0.0 dev: true @@ -6134,7 +5778,7 @@ packages: /@types/connect/3.4.35: resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} dependencies: - '@types/node': 17.0.45 + '@types/node': 18.8.2 dev: false /@types/eslint-scope/3.7.4: @@ -6158,7 +5802,7 @@ packages: /@types/express-serve-static-core/4.17.31: resolution: {integrity: sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==} dependencies: - '@types/node': 17.0.45 + '@types/node': 18.8.2 '@types/qs': 6.9.7 '@types/range-parser': 1.2.4 dev: false @@ -6176,20 +5820,20 @@ packages: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 18.8.1 + '@types/node': 16.11.64 dev: true /@types/glob/8.0.0: resolution: {integrity: sha512-l6NQsDDyQUVeoTynNpC9uRvCUint/gSUXQA2euwmTuWGvPY5LSDUu6tkCtJB2SvGQlJQzLaKqcGZP4//7EDveA==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 18.8.1 + '@types/node': 16.11.64 dev: true /@types/graceful-fs/4.1.5: resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} dependencies: - '@types/node': 18.8.1 + '@types/node': 18.8.2 dev: true /@types/hast/2.3.4: @@ -6238,10 +5882,10 @@ packages: /@types/keyv/3.1.4: resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} dependencies: - '@types/node': 18.8.1 + '@types/node': 18.8.2 - /@types/lodash/4.14.185: - resolution: {integrity: sha512-evMDG1bC4rgQg4ku9tKpuMh5iBNEwNa3tf9zRHdP1qlv+1WUg44xat4IxCE14gIpZRGUUWAx2VhItCZc25NfMA==} + /@types/lodash/4.14.186: + resolution: {integrity: sha512-eHcVlLXP0c2FlMPm56ITode2AgLMSa6aJ05JTTbYbI+7EMkCEE5qk2E41d5g2lCVTqRe0GnnRFurmlCsDODrPw==} /@types/marked/4.0.7: resolution: {integrity: sha512-eEAhnz21CwvKVW+YvRvcTuFKNU9CV1qH+opcgVK3pIMI6YZzDm6gc8o2vHjldFk6MGKt5pueSB7IOpvpx5Qekw==} @@ -6267,16 +5911,12 @@ packages: /@types/node-fetch/2.6.2: resolution: {integrity: sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==} dependencies: - '@types/node': 18.8.1 + '@types/node': 16.11.64 form-data: 3.0.1 dev: true - /@types/node/16.11.60: - resolution: {integrity: sha512-kYIYa1D1L+HDv5M5RXQeEu1o0FKA6yedZIoyugm/MBPROkLpX4L7HRxMrPVyo8bnvjpW/wDlqFNGzXNMb7AdRw==} - /@types/node/16.11.64: resolution: {integrity: sha512-z5hPTlVFzNwtJ2LNozTpJcD1Cu44c4LNuzaq1mwxmiHWQh2ULdR6Vjwo1UGldzRpzL0yUEdZddnfqGW2G70z6Q==} - dev: true /@types/node/16.9.1: resolution: {integrity: sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==} @@ -6284,13 +5924,10 @@ packages: /@types/node/17.0.45: resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} - - /@types/node/18.7.20: - resolution: {integrity: sha512-adzY4vLLr5Uivmx8+zfSJ5fbdgKxX8UMtjtl+17n0B1q1Nz8JEmE151vefMdpD+1gyh+77weN4qEhej/O7budQ==} dev: true - /@types/node/18.8.1: - resolution: {integrity: sha512-vuYaNuEIbOYLTLUAJh50ezEbvxrD43iby+lpUA2aa148Nh5kX/AVO/9m1Ahmbux2iU5uxJTNF9g2Y+31uml7RQ==} + /@types/node/18.8.2: + resolution: {integrity: sha512-cRMwIgdDN43GO4xMWAfJAecYn8wV4JbsOGHNfNUIDiuYkUYAR5ec4Rj7IO2SAhFPEfpPtLtUTbbny/TCT7aDwA==} /@types/normalize-package-data/2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} @@ -6382,7 +6019,7 @@ packages: /@types/responselike/1.0.0: resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} dependencies: - '@types/node': 18.8.1 + '@types/node': 18.8.2 /@types/scheduler/0.16.2: resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==} @@ -6391,7 +6028,7 @@ packages: resolution: {integrity: sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==} dependencies: '@types/mime': 3.0.1 - '@types/node': 17.0.45 + '@types/node': 18.8.2 dev: false /@types/source-list-map/0.1.2: @@ -6412,7 +6049,6 @@ packages: dependencies: tailwindcss: 3.1.8 transitivePeerDependencies: - - postcss - ts-node dev: true @@ -6433,10 +6069,6 @@ packages: /@types/unist/2.0.6: resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} - /@types/use-sync-external-store/0.0.3: - resolution: {integrity: sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==} - dev: false - /@types/webpack-env/1.18.0: resolution: {integrity: sha512-56/MAlX5WMsPVbOg7tAxnYvNYMMWr/QJiIp6BxVSW3JJXUVzzOn64qW8TzQyMSqSUFM2+PVI4aUHcHOzIz/1tg==} dev: true @@ -6444,7 +6076,7 @@ packages: /@types/webpack-sources/3.2.0: resolution: {integrity: sha512-Ft7YH3lEVRQ6ls8k4Ff1oB4jN6oy/XmU6tQISKdhfh+1mR+viZFphS6WL0IrtDOzvefmJg5a0s7ZQoRXwqTEFg==} dependencies: - '@types/node': 18.8.1 + '@types/node': 16.11.64 '@types/source-list-map': 0.1.2 source-map: 0.7.4 dev: true @@ -6452,7 +6084,7 @@ packages: /@types/webpack/4.41.32: resolution: {integrity: sha512-cb+0ioil/7oz5//7tZUSwbrSAN/NWHrQylz5cW8G0dWTcF/g+/dSdMlKVZspBYuMAN1+WnwHrkxiRrLcwd0Heg==} dependencies: - '@types/node': 18.8.1 + '@types/node': 16.11.64 '@types/tapable': 1.0.8 '@types/uglify-js': 3.17.0 '@types/webpack-sources': 3.2.0 @@ -6476,8 +6108,8 @@ packages: '@types/yargs-parser': 21.0.0 dev: true - /@typescript-eslint/eslint-plugin/5.38.0_2azyxy5wfmd73v3pbt5rvmgcsm: - resolution: {integrity: sha512-GgHi/GNuUbTOeoJiEANi0oI6fF3gBQc3bGFYj40nnAPCbhrtEDf2rjBmefFadweBmO1Du1YovHeDP2h5JLhtTQ==} + /@typescript-eslint/eslint-plugin/5.39.0_taj4374tq64ju3xgkdrtdwfble: + resolution: {integrity: sha512-xVfKOkBm5iWMNGKQ2fwX5GVgBuHmZBO1tCRwXmY5oAIsPscfwm2UADDuNB8ZVYCtpQvJK4xpjrK7jEhcJ0zY9A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -6487,22 +6119,22 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/parser': 5.38.0_eslint@8.24.0 - '@typescript-eslint/scope-manager': 5.38.0 - '@typescript-eslint/type-utils': 5.38.0_eslint@8.24.0 - '@typescript-eslint/utils': 5.38.0_eslint@8.24.0 + '@typescript-eslint/parser': 5.39.0_eslint@8.24.0 + '@typescript-eslint/scope-manager': 5.39.0 + '@typescript-eslint/type-utils': 5.39.0_eslint@8.24.0 + '@typescript-eslint/utils': 5.39.0_eslint@8.24.0 debug: 4.3.4 eslint: 8.24.0 ignore: 5.2.0 regexpp: 3.2.0 - semver: 7.3.7 + semver: 7.3.8 tsutils: 3.21.0 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser/5.38.0_eslint@8.24.0: - resolution: {integrity: sha512-/F63giJGLDr0ms1Cr8utDAxP2SPiglaD6V+pCOcG35P2jCqdfR7uuEhz1GIC3oy4hkUF8xA1XSXmd9hOh/a5EA==} + /@typescript-eslint/parser/5.39.0_eslint@8.24.0: + resolution: {integrity: sha512-PhxLjrZnHShe431sBAGHaNe6BDdxAASDySgsBCGxcBecVCi8NQWxQZMcizNA4g0pN51bBAn/FUfkWG3SDVcGlA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -6511,25 +6143,25 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.38.0 - '@typescript-eslint/types': 5.38.0 - '@typescript-eslint/typescript-estree': 5.38.0 + '@typescript-eslint/scope-manager': 5.39.0 + '@typescript-eslint/types': 5.39.0 + '@typescript-eslint/typescript-estree': 5.39.0 debug: 4.3.4 eslint: 8.24.0 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager/5.38.0: - resolution: {integrity: sha512-ByhHIuNyKD9giwkkLqzezZ9y5bALW8VNY6xXcP+VxoH4JBDKjU5WNnsiD4HJdglHECdV+lyaxhvQjTUbRboiTA==} + /@typescript-eslint/scope-manager/5.39.0: + resolution: {integrity: sha512-/I13vAqmG3dyqMVSZPjsbuNQlYS082Y7OMkwhCfLXYsmlI0ca4nkL7wJ/4gjX70LD4P8Hnw1JywUVVAwepURBw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.38.0 - '@typescript-eslint/visitor-keys': 5.38.0 + '@typescript-eslint/types': 5.39.0 + '@typescript-eslint/visitor-keys': 5.39.0 dev: true - /@typescript-eslint/type-utils/5.38.0_eslint@8.24.0: - resolution: {integrity: sha512-iZq5USgybUcj/lfnbuelJ0j3K9dbs1I3RICAJY9NZZpDgBYXmuUlYQGzftpQA9wC8cKgtS6DASTvF3HrXwwozA==} + /@typescript-eslint/type-utils/5.39.0_eslint@8.24.0: + resolution: {integrity: sha512-KJHJkOothljQWzR3t/GunL0TPKY+fGJtnpl+pX+sJ0YiKTz3q2Zr87SGTmFqsCMFrLt5E0+o+S6eQY0FAXj9uA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -6538,8 +6170,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.38.0 - '@typescript-eslint/utils': 5.38.0_eslint@8.24.0 + '@typescript-eslint/typescript-estree': 5.39.0 + '@typescript-eslint/utils': 5.39.0_eslint@8.24.0 debug: 4.3.4 eslint: 8.24.0 tsutils: 3.21.0 @@ -6547,13 +6179,13 @@ packages: - supports-color dev: true - /@typescript-eslint/types/5.38.0: - resolution: {integrity: sha512-HHu4yMjJ7i3Cb+8NUuRCdOGu2VMkfmKyIJsOr9PfkBVYLYrtMCK/Ap50Rpov+iKpxDTfnqvDbuPLgBE5FwUNfA==} + /@typescript-eslint/types/5.39.0: + resolution: {integrity: sha512-gQMZrnfEBFXK38hYqt8Lkwt8f4U6yq+2H5VDSgP/qiTzC8Nw8JO3OuSUOQ2qW37S/dlwdkHDntkZM6SQhKyPhw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/typescript-estree/5.38.0: - resolution: {integrity: sha512-6P0RuphkR+UuV7Avv7MU3hFoWaGcrgOdi8eTe1NwhMp2/GjUJoODBTRWzlHpZh6lFOaPmSvgxGlROa0Sg5Zbyg==} + /@typescript-eslint/typescript-estree/5.39.0: + resolution: {integrity: sha512-qLFQP0f398sdnogJoLtd43pUgB18Q50QSA+BTE5h3sUxySzbWDpTSdgt4UyxNSozY/oDK2ta6HVAzvGgq8JYnA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -6561,27 +6193,27 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.38.0 - '@typescript-eslint/visitor-keys': 5.38.0 + '@typescript-eslint/types': 5.39.0 + '@typescript-eslint/visitor-keys': 5.39.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.3.7 + semver: 7.3.8 tsutils: 3.21.0 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils/5.38.0_eslint@8.24.0: - resolution: {integrity: sha512-6sdeYaBgk9Fh7N2unEXGz+D+som2QCQGPAf1SxrkEr+Z32gMreQ0rparXTNGRRfYUWk/JzbGdcM8NSSd6oqnTA==} + /@typescript-eslint/utils/5.39.0_eslint@8.24.0: + resolution: {integrity: sha512-+DnY5jkpOpgj+EBtYPyHRjXampJfC0yUZZzfzLuUWVZvCuKqSdJVC8UhdWipIw7VKNTfwfAPiOWzYkAwuIhiAg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: '@types/json-schema': 7.0.11 - '@typescript-eslint/scope-manager': 5.38.0 - '@typescript-eslint/types': 5.38.0 - '@typescript-eslint/typescript-estree': 5.38.0 + '@typescript-eslint/scope-manager': 5.39.0 + '@typescript-eslint/types': 5.39.0 + '@typescript-eslint/typescript-estree': 5.39.0 eslint: 8.24.0 eslint-scope: 5.1.1 eslint-utils: 3.0.0_eslint@8.24.0 @@ -6590,11 +6222,11 @@ packages: - typescript dev: true - /@typescript-eslint/visitor-keys/5.38.0: - resolution: {integrity: sha512-MxnrdIyArnTi+XyFLR+kt/uNAcdOnmT+879os7qDRI+EYySR4crXJq9BXPfRzzLGq0wgxkwidrCJ9WCAoacm1w==} + /@typescript-eslint/visitor-keys/5.39.0: + resolution: {integrity: sha512-yyE3RPwOG+XJBLrhvsxAidUgybJVQ/hG8BhiJo0k8JSAYfk/CshVcxf0HwP4Jt7WZZ6vLmxdo1p6EyN3tzFTkg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.38.0 + '@typescript-eslint/types': 5.39.0 eslint-visitor-keys: 3.3.0 dev: true @@ -6612,36 +6244,20 @@ packages: resolution: {integrity: sha512-iirJNv92A1ZWxoOHHDYW/1KPoi83939o83iUBQHIim0i3tMeSKEh+bxhJdTHQ86Mr4uXx9xGUTq69cp52ZP8Xw==} dev: false - /@vitejs/plugin-react/1.3.2: - resolution: {integrity: sha512-aurBNmMo0kz1O4qRoY+FM4epSA39y3ShWGuqfLRA/3z0oEJAdtoSfgA3aO98/PCCHAqMaduLxIxErWrVKIFzXA==} - engines: {node: '>=12.0.0'} - dependencies: - '@babel/core': 7.19.1 - '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.19.1 - '@babel/plugin-transform-react-jsx-development': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-transform-react-jsx-self': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-transform-react-jsx-source': 7.18.6_@babel+core@7.19.1 - '@rollup/pluginutils': 4.2.1 - react-refresh: 0.13.0 - resolve: 1.22.1 - transitivePeerDependencies: - - supports-color - dev: false - - /@vitejs/plugin-react/2.1.0_vite@3.1.3: + /@vitejs/plugin-react/2.1.0_vite@3.1.4: resolution: {integrity: sha512-am6rPyyU3LzUYne3Gd9oj9c4Rzbq5hQnuGXSMT6Gujq45Il/+bunwq3lrB7wghLkiF45ygMwft37vgJ/NE8IAA==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: vite: ^3.0.0 dependencies: - '@babel/core': 7.19.1 - '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.19.1 - '@babel/plugin-transform-react-jsx-development': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-transform-react-jsx-self': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-transform-react-jsx-source': 7.18.6_@babel+core@7.19.1 - magic-string: 0.26.4 + '@babel/core': 7.19.3 + '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.19.3 + '@babel/plugin-transform-react-jsx-development': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-transform-react-jsx-self': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-transform-react-jsx-source': 7.18.6_@babel+core@7.19.3 + magic-string: 0.26.6 react-refresh: 0.14.0 - vite: 3.1.3 + vite: 3.1.4 transitivePeerDependencies: - supports-color @@ -7108,7 +6724,7 @@ packages: resolution: {integrity: sha512-jlpIfsOoNoafl92Sz//64uQHGSyMrD2vYG5d8o2a4qGvyNCvXur7bzIsWtAC/6flI2RYAp3kv8rsfBtaLm7w0g==} /app-root-path/2.1.0: - resolution: {integrity: sha1-mL9lmTJ+zqGZMJhm6BQDaP0uZGo=} + resolution: {integrity: sha512-z5BqVjscbjmJBybKlICogJR2jCr2q/Ixu7Pvui5D4y97i7FLsJlvEG9XOR/KJRlkxxZz7UaaS2TMwQh1dRJ2dA==} engines: {node: '>= 4.0.0'} dev: true @@ -7190,7 +6806,7 @@ packages: dev: true /array-flatten/1.1.1: - resolution: {integrity: sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=} + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} /array-includes/3.1.5: resolution: {integrity: sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==} @@ -7292,7 +6908,7 @@ packages: safer-buffer: 2.1.2 /asn1/0.2.3: - resolution: {integrity: sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=} + resolution: {integrity: sha512-6i37w/+EhlWlGUJff3T/Q8u1RGmP5wgbiwYnOnbOqvtrPxT63/sYFyP9RcpxtxGymtfA075IvmOnL7ycNOWl3w==} dev: true /assert/1.5.0: @@ -7371,14 +6987,14 @@ packages: postcss: ^8.1.0 dependencies: browserslist: 4.21.4 - caniuse-lite: 1.0.30001412 + caniuse-lite: 1.0.30001416 fraction.js: 4.2.0 normalize-range: 0.1.2 picocolors: 1.0.0 postcss-value-parser: 4.2.0 dev: false - /autoprefixer/10.4.12_postcss@8.4.16: + /autoprefixer/10.4.12_postcss@8.4.17: resolution: {integrity: sha512-WrCGV9/b97Pa+jtwf5UGaRjgQIg7OK3D06GnoYoZNcG1Xb8Gt3EfuKjlhh9i/VtT16g6PYjZ69jdJ2g8FxSC4Q==} engines: {node: ^10 || ^12 || >=14} hasBin: true @@ -7386,11 +7002,11 @@ packages: postcss: ^8.1.0 dependencies: browserslist: 4.21.4 - caniuse-lite: 1.0.30001412 + caniuse-lite: 1.0.30001416 fraction.js: 4.2.0 normalize-range: 0.1.2 picocolors: 1.0.0 - postcss: 8.4.16 + postcss: 8.4.17 postcss-value-parser: 4.2.0 dev: true @@ -7399,7 +7015,7 @@ packages: hasBin: true dependencies: browserslist: 4.21.4 - caniuse-lite: 1.0.30001415 + caniuse-lite: 1.0.30001416 normalize-range: 0.1.2 num2fraction: 1.2.2 picocolors: 0.2.1 @@ -7416,36 +7032,22 @@ packages: - debug dev: false - /babel-core/7.0.0-bridge.0_@babel+core@7.19.1: + /babel-core/7.0.0-bridge.0_@babel+core@7.19.3: resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 dev: false - /babel-loader/8.2.5_7k5t74zmen3ocxyd32avkcyrwe: + /babel-loader/8.2.5_@babel+core@7.19.3: resolution: {integrity: sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==} engines: {node: '>= 8.9'} peerDependencies: '@babel/core': ^7.0.0 webpack: '>=2' dependencies: - '@babel/core': 7.19.1 - find-cache-dir: 3.3.2 - loader-utils: 2.0.2 - make-dir: 3.1.0 - schema-utils: 2.7.1 - webpack: 4.46.0 - - /babel-loader/8.2.5_@babel+core@7.19.1: - resolution: {integrity: sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==} - engines: {node: '>= 8.9'} - peerDependencies: - '@babel/core': ^7.0.0 - webpack: '>=2' - dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 find-cache-dir: 3.3.2 loader-utils: 2.0.2 make-dir: 3.1.0 @@ -7465,7 +7067,6 @@ packages: make-dir: 3.1.0 schema-utils: 2.7.1 webpack: 4.46.0 - dev: true /babel-loader/8.2.5_wfdvla2jorjoj23kkavho2upde: resolution: {integrity: sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==} @@ -7512,21 +7113,21 @@ packages: '@babel/helper-plugin-utils': 7.19.0 '@istanbuljs/load-nyc-config': 1.1.0 '@istanbuljs/schema': 0.1.3 - istanbul-lib-instrument: 5.2.0 + istanbul-lib-instrument: 5.2.1 test-exclude: 6.0.0 transitivePeerDependencies: - supports-color dev: true - /babel-plugin-jsx-dom-expressions/0.34.11_@babel+core@7.19.1: + /babel-plugin-jsx-dom-expressions/0.34.11_@babel+core@7.19.3: resolution: {integrity: sha512-pXygym8znJC/WiozMVA5R/8keu5j6kTZEVJjJi2tjnQrUHsm9JMbXQw8QjLZSW0oxU601rsutb1TlECdBAvfJQ==} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@babel/helper-module-imports': 7.16.0 - '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.19.1 - '@babel/types': 7.19.0 + '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.19.3 + '@babel/types': 7.19.3 html-entities: 2.3.2 dev: true @@ -7542,47 +7143,47 @@ packages: resolution: {integrity: sha512-OgOYHOLoRK+/mvXU9imKHlG6GkPLYrUCvFXG/CM93R/aNNO8pOOF4aS+S8CCHMDQoNSeiOYEZb/G6RwL95Jktw==} dev: true - /babel-plugin-polyfill-corejs2/0.3.3_@babel+core@7.19.1: + /babel-plugin-polyfill-corejs2/0.3.3_@babel+core@7.19.3: resolution: {integrity: sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.19.1 - '@babel/core': 7.19.1 - '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.19.1 + '@babel/compat-data': 7.19.3 + '@babel/core': 7.19.3 + '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.19.3 semver: 6.3.0 transitivePeerDependencies: - supports-color - /babel-plugin-polyfill-corejs3/0.1.7_@babel+core@7.19.1: + /babel-plugin-polyfill-corejs3/0.1.7_@babel+core@7.19.3: resolution: {integrity: sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 - '@babel/helper-define-polyfill-provider': 0.1.5_@babel+core@7.19.1 - core-js-compat: 3.25.2 + '@babel/core': 7.19.3 + '@babel/helper-define-polyfill-provider': 0.1.5_@babel+core@7.19.3 + core-js-compat: 3.25.5 transitivePeerDependencies: - supports-color - /babel-plugin-polyfill-corejs3/0.6.0_@babel+core@7.19.1: + /babel-plugin-polyfill-corejs3/0.6.0_@babel+core@7.19.3: resolution: {integrity: sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 - '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.19.1 - core-js-compat: 3.25.2 + '@babel/core': 7.19.3 + '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.19.3 + core-js-compat: 3.25.5 transitivePeerDependencies: - supports-color - /babel-plugin-polyfill-regenerator/0.4.1_@babel+core@7.19.1: + /babel-plugin-polyfill-regenerator/0.4.1_@babel+core@7.19.3: resolution: {integrity: sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 - '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.19.1 + '@babel/core': 7.19.3 + '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.19.3 transitivePeerDependencies: - supports-color @@ -7596,17 +7197,17 @@ packages: - supports-color dev: true - /babel-preset-solid/1.5.7_@babel+core@7.19.1: + /babel-preset-solid/1.5.7_@babel+core@7.19.3: resolution: {integrity: sha512-BUE7SOawUNMcw4QDJHWSRWAzmzZKoYNuduAKx8GfdaUhtW+50LTh2ZkHXEPZiQrSpxmvT0zP7e1cKnTYN6iiqw==} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.19.1 - babel-plugin-jsx-dom-expressions: 0.34.11_@babel+core@7.19.1 + '@babel/core': 7.19.3 + babel-plugin-jsx-dom-expressions: 0.34.11_@babel+core@7.19.3 dev: true /babel-runtime/6.26.0: - resolution: {integrity: sha1-llxwWGaOgrVde/4E/yM3vItWR/4=} + resolution: {integrity: sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==} dependencies: core-js: 2.6.12 regenerator-runtime: 0.11.1 @@ -7661,8 +7262,6 @@ packages: /big-integer/1.6.51: resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==} engines: {node: '>=0.6'} - dev: true - optional: true /big.js/5.2.2: resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} @@ -7865,6 +7464,19 @@ packages: dependencies: fill-range: 7.0.1 + /broadcast-channel/3.7.0: + resolution: {integrity: sha512-cIAKJXAxGJceNZGTZSBzMxzyOn72cVgPnKx4dc6LRjQgbaJUQqhy5rzL3zbMxkMWsGKkv2hSFkPRMEXfoMZ2Mg==} + dependencies: + '@babel/runtime': 7.19.0 + detect-node: 2.1.0 + js-sha3: 0.8.0 + microseconds: 0.2.0 + nano-time: 1.0.0 + oblivious-set: 1.0.0 + rimraf: 3.0.2 + unload: 2.2.0 + dev: false + /brorand/1.1.0: resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} @@ -7940,10 +7552,10 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001412 - electron-to-chromium: 1.4.261 + caniuse-lite: 1.0.30001416 + electron-to-chromium: 1.4.275 node-releases: 2.0.6 - update-browserslist-db: 1.0.9_browserslist@4.21.4 + update-browserslist-db: 1.0.10_browserslist@4.21.4 /bser/2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} @@ -7966,7 +7578,7 @@ packages: resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} /buffer-equal-constant-time/1.0.1: - resolution: {integrity: sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=} + resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} dev: true /buffer-equal/0.0.1: @@ -7982,7 +7594,7 @@ packages: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} /buffer-more-ints/0.0.2: - resolution: {integrity: sha1-JrOIXRD6E9t/wBquOquHAZngEkw=} + resolution: {integrity: sha512-PDgX2QJgUc5+Jb2xAoBFP5MxhtVUmZHR33ak+m/SDxRdCrbnX1BggRIaxiW7ImwfmO4iJeCQKN18ToSXWGjYkA==} dev: true /buffer-xor/1.0.3: @@ -8190,12 +7802,8 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - /caniuse-lite/1.0.30001412: - resolution: {integrity: sha512-+TeEIee1gS5bYOiuf+PS/kp2mrXic37Hl66VY6EAfxasIk5fELTktK2oOezYed12H8w7jt3s512PpulQidPjwA==} - - /caniuse-lite/1.0.30001415: - resolution: {integrity: sha512-ER+PfgCJUe8BqunLGWd/1EY4g8AzQcsDAVzdtMGKVtQEmKAwaFfU6vb7EAVIqTMYsqxBorYZi2+22Iouj/y7GQ==} - dev: true + /caniuse-lite/1.0.30001416: + resolution: {integrity: sha512-06wzzdAkCPZO+Qm4e/eNghZBDfVNDsCgw33T27OwBH9unE9S478OYw//Q2L7Npf/zBzs7rjZOszIFQkwQKAEqA==} /capture-exit/2.0.0: resolution: {integrity: sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==} @@ -8364,7 +7972,7 @@ packages: isobject: 3.0.1 static-extend: 0.1.2 - /class-variance-authority/0.2.3_typescript@4.8.3: + /class-variance-authority/0.2.3_typescript@4.8.4: resolution: {integrity: sha512-q3VGDidOOFp5yqNpUljA8L6N78gdOPhP5oeFJPaGRnCAPRmyAw65qo+Kw2WVfKq9uiR1de7HzlcvTN871Gks/g==} peerDependencies: typescript: '>= 4.5.5 < 5' @@ -8372,7 +7980,7 @@ packages: typescript: optional: true dependencies: - typescript: 4.8.3 + typescript: 4.8.4 dev: false /classnames/2.3.2: @@ -8444,6 +8052,15 @@ packages: wrap-ansi: 7.0.0 dev: true + /cliui/8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + dev: true + /clone-deep/4.0.1: resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} engines: {node: '>=6'} @@ -8531,6 +8148,10 @@ packages: resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==} dev: true + /colorette/2.0.19: + resolution: {integrity: sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==} + dev: true + /combined-stream/1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} @@ -8557,8 +8178,8 @@ packages: engines: {node: '>= 12'} dev: true - /commander/9.4.0: - resolution: {integrity: sha512-sRPT+umqkz90UA8M1yqYfnHlZA7fF6nSphDtxeywPZ49ysjxDQybzk13CL+mXekDRG92skbcqCLVovuCusNmFw==} + /commander/9.4.1: + resolution: {integrity: sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==} engines: {node: ^12.20.0 || >=14} dev: true @@ -8631,7 +8252,7 @@ packages: - supports-color /concat-map/0.0.1: - resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} /concat-stream/1.6.2: resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} @@ -8650,12 +8271,12 @@ packages: chalk: 4.1.2 date-fns: 2.29.3 lodash: 4.17.21 - rxjs: 7.5.6 + rxjs: 7.5.7 shell-quote: 1.7.3 spawn-command: 0.0.2-1 supports-color: 8.1.1 tree-kill: 1.2.2 - yargs: 17.5.1 + yargs: 17.6.0 dev: true /config-chain/1.1.13: @@ -8676,6 +8297,15 @@ packages: write-file-atomic: 3.0.3 xdg-basedir: 4.0.0 + /connect-history-api-fallback/1.6.0: + resolution: {integrity: sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==} + engines: {node: '>=0.8'} + dev: true + + /consola/2.15.3: + resolution: {integrity: sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==} + dev: true + /console-browserify/1.2.0: resolution: {integrity: sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==} @@ -8710,7 +8340,7 @@ packages: safe-buffer: 5.1.2 /cookie-signature/1.0.6: - resolution: {integrity: sha1-4wOogrNCzD7oylE6eZmXNNqzriw=} + resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} /cookie/0.3.1: resolution: {integrity: sha512-+IJOX0OqlHCszo2mBUq+SrEbCj6w7Kpffqx60zYbPTFaO4+yYgRjHwcZNpWvaTylDHaV7PPmBHzSecZiMhtPgw==} @@ -8721,6 +8351,13 @@ packages: resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} engines: {node: '>= 0.6'} + /copy-anything/3.0.2: + resolution: {integrity: sha512-CzATjGXzUQ0EvuvgOCI6A4BGOo2bcVx8B+eC2nF862iv9fopnPQwlrbACakNCHRIJbCSBj+J/9JeDf60k64MkA==} + engines: {node: '>=12.13'} + dependencies: + is-what: 4.1.7 + dev: false + /copy-concurrently/1.0.5: resolution: {integrity: sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==} dependencies: @@ -8735,16 +8372,10 @@ packages: resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==} engines: {node: '>=0.10.0'} - /core-js-compat/3.25.2: - resolution: {integrity: sha512-TxfyECD4smdn3/CjWxczVtJqVLEEC2up7/82t7vC0AzNogr+4nQ8vyF7abxAuTXWvjTClSbvGhU0RgqA4ToQaQ==} - dependencies: - browserslist: 4.21.4 - /core-js-compat/3.25.5: resolution: {integrity: sha512-ovcyhs2DEBUIE0MGEKHP4olCUW/XYte3Vroyxuh38rD1wAO4dHohsovUC4eAOuzFxE6b+RXvBU3UZ9o0YhUTkA==} dependencies: browserslist: 4.21.4 - dev: true /core-js-pure/3.25.5: resolution: {integrity: sha512-oml3M22pHM+igfWHDfdLVq2ShWmjM2V4L+dQEBs0DWVIqEm9WHCwGAlZ6BmyBQGy5sFrJmcx+856D9lVKyGWYg==} @@ -8757,14 +8388,9 @@ packages: requiresBuild: true dev: true - /core-js/3.25.2: - resolution: {integrity: sha512-YB4IAT1bjEfxTJ1XYy11hJAKskO+qmhuDBM8/guIfMz4JvdsAQAqvyb97zXX7JgSrfPLG5mRGFWJwJD39ruq2A==} - requiresBuild: true - /core-js/3.25.5: resolution: {integrity: sha512-nbm6eZSjm+ZuBQxCUPQKQCoUEfFOXjUZ8dTTyikyKaWrTYmAVbykQfwsKE5dBK88u3QCkCrzsx/PPlKfhsvgpw==} requiresBuild: true - dev: true /core-util-is/1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} @@ -8926,56 +8552,68 @@ packages: util.promisify: 1.0.0 dev: true - /cspell-gitignore/6.10.1: - resolution: {integrity: sha512-g6320DFIyU56iSdPTF+LwoExvlCNptEXiArE3VmyyTYLXkIHWwFhjcZN43Nd5/eJNzVuuEen64yKtI2ZsTr4xw==} + /cspell-dictionary/6.12.0: + resolution: {integrity: sha512-I2cXSdXndt9H7yXmJzLTjgui/SAPGghXwxFeibTbvF68gyQYD5fUXvOygEIPrOEySKlAIb+aouV77SgoURxMHw==} + engines: {node: '>=14'} + dependencies: + '@cspell/cspell-pipe': 6.12.0 + '@cspell/cspell-types': 6.12.0 + cspell-trie-lib: 6.12.0 + fast-equals: 4.0.3 + gensequence: 4.0.2 + dev: true + + /cspell-gitignore/6.12.0: + resolution: {integrity: sha512-gtsN2AAvqdE8CHVzpxsQcd/Wn5GAMTjzHpDXX71g/k8IJn743poGU06O0O1WSVAgK0fWTRsfg+V5OegA1TAo7A==} engines: {node: '>=14'} hasBin: true dependencies: - cspell-glob: 6.10.1 + cspell-glob: 6.12.0 find-up: 5.0.0 dev: true - /cspell-glob/6.10.1: - resolution: {integrity: sha512-4P2B0BaKUtLwYOIif2rgmwxBnaj6WNhHhM6RDTAYGiestvRarb+NMr1KnMIhq6gDKu5mAeBVC5+/M4DUdNZ0Ww==} + /cspell-glob/6.12.0: + resolution: {integrity: sha512-Q0rMGTxDyFFPm1LmHYM0ziuxQt2aXgr8Oi1glA2s0dBs0hg1DexlAEoLwLiMDUwSTvibEKIidPzlrmZ1AUDWEg==} engines: {node: '>=14'} dependencies: micromatch: 4.0.5 dev: true - /cspell-grammar/6.10.1: - resolution: {integrity: sha512-y4VbZudXBozJ98PH76t2HEkuZqZ5q3Opy2PpgSi1zHcyoVpG5CNpu4FQXO2T24AgA40M8a9cFW5mM9FdLlNUIA==} + /cspell-grammar/6.12.0: + resolution: {integrity: sha512-WXcDiWJ2pTW0jHY0Bf0DW5s8A9S0a+2tsVZsNxE/0CR5P/8yDSnznE+59uok/JN+GXOKQ6VIaqAZA3/XjDZuuA==} engines: {node: '>=14'} hasBin: true dependencies: - '@cspell/cspell-pipe': 6.10.1 - '@cspell/cspell-types': 6.10.1 + '@cspell/cspell-pipe': 6.12.0 + '@cspell/cspell-types': 6.12.0 dev: true - /cspell-io/6.10.1: - resolution: {integrity: sha512-fpZde2txupHfm/Cs2AfsoBJPaEjmIxR9lEFMEqp9JIB4ZQgvZsaND9dlUyqMDQiMStfCT/47OhTJQi+VfjnhRw==} + /cspell-io/6.12.0: + resolution: {integrity: sha512-1faxDj2OMgq61w7GaiXZD7ytks6PksJlG484LMl2USv58jDky4i2lujJs1C/+aP97Box9EcdwzydHX9GpnqqCw==} engines: {node: '>=14'} dependencies: - '@cspell/cspell-service-bus': 6.10.1 + '@cspell/cspell-service-bus': 6.12.0 node-fetch: 2.6.7 transitivePeerDependencies: - encoding dev: true - /cspell-lib/6.10.1: - resolution: {integrity: sha512-h0pQ1OFckhqfjvhE6k1OhIpsuVABgXAFW+MjZhn1QB1awSkC6hrNekGXs6WNGngYC56pII6yk5uagokdwH9siQ==} + /cspell-lib/6.12.0: + resolution: {integrity: sha512-IKd2MzH/zoiXohc26Lqb1b8i+41Y2xGreyAe9ihv/7Z2dscGGVy7F/2taZvZK9kJIhaz33Yatxfx3htT6w0hqg==} engines: {node: '>=14'} dependencies: - '@cspell/cspell-bundled-dicts': 6.10.1 - '@cspell/cspell-pipe': 6.10.1 - '@cspell/cspell-types': 6.10.1 + '@cspell/cspell-bundled-dicts': 6.12.0 + '@cspell/cspell-pipe': 6.12.0 + '@cspell/cspell-types': 6.12.0 clear-module: 4.1.2 comment-json: 4.2.3 configstore: 5.0.1 cosmiconfig: 7.0.1 - cspell-glob: 6.10.1 - cspell-grammar: 6.10.1 - cspell-io: 6.10.1 - cspell-trie-lib: 6.10.1 + cspell-dictionary: 6.12.0 + cspell-glob: 6.12.0 + cspell-grammar: 6.12.0 + cspell-io: 6.12.0 + cspell-trie-lib: 6.12.0 fast-equals: 4.0.3 find-up: 5.0.0 fs-extra: 10.1.0 @@ -8989,34 +8627,34 @@ packages: - encoding dev: true - /cspell-trie-lib/6.10.1: - resolution: {integrity: sha512-3xu0Dyq+AhrivQ3p7FePLcmcjkeWfovlavFhRk/wwWHIMnnmj1q7emPa/BYbgzSMF917C940GbexczB9SujNxQ==} + /cspell-trie-lib/6.12.0: + resolution: {integrity: sha512-SJOdb51Wy3ewaKfttZwc9NYOIXaKlhyr+ykYKBExj3qMfV1J4d4iDLE95FriaRcqnq6X/qEM9jUvZHlvadDk3A==} engines: {node: '>=14'} dependencies: - '@cspell/cspell-pipe': 6.10.1 - '@cspell/cspell-types': 6.10.1 + '@cspell/cspell-pipe': 6.12.0 + '@cspell/cspell-types': 6.12.0 fs-extra: 10.1.0 gensequence: 4.0.2 dev: true - /cspell/6.10.1: - resolution: {integrity: sha512-dO40EnUDlYZarnuha013Les7X2nVoHANzPpTPJYfh4AidP7WvMpqDaIdVODRxxjdjF9sYYFdkyM8xqmAga+3tQ==} + /cspell/6.12.0: + resolution: {integrity: sha512-ny4xVEPYFP2jVf5w71Mnk4HKj6RbPH+CMSzUrOMbYVVNnQUj3GLfzy5DrSFLG0zGa353ZRC4/s9MsEvnAL8mkA==} engines: {node: '>=14'} hasBin: true dependencies: - '@cspell/cspell-pipe': 6.10.1 + '@cspell/cspell-pipe': 6.12.0 chalk: 4.1.2 - commander: 9.4.0 - cspell-gitignore: 6.10.1 - cspell-glob: 6.10.1 - cspell-lib: 6.10.1 + commander: 9.4.1 + cspell-gitignore: 6.12.0 + cspell-glob: 6.12.0 + cspell-lib: 6.12.0 fast-json-stable-stringify: 2.1.0 file-entry-cache: 6.0.1 fs-extra: 10.1.0 get-stdin: 8.0.0 glob: 8.0.3 imurmurhash: 0.1.4 - semver: 7.3.7 + semver: 7.3.8 strip-ansi: 6.0.1 vscode-uri: 3.0.6 transitivePeerDependencies: @@ -9081,7 +8719,7 @@ packages: postcss-modules-values: 4.0.0_postcss@8.4.17 postcss-value-parser: 4.2.0 schema-utils: 3.1.1 - semver: 7.3.7 + semver: 7.3.8 webpack: 5.74.0 dev: true @@ -9091,14 +8729,14 @@ packages: peerDependencies: webpack: ^5.0.0 dependencies: - icss-utils: 5.1.0_postcss@8.4.16 - postcss: 8.4.16 - postcss-modules-extract-imports: 3.0.0_postcss@8.4.16 - postcss-modules-local-by-default: 4.0.0_postcss@8.4.16 - postcss-modules-scope: 3.0.0_postcss@8.4.16 - postcss-modules-values: 4.0.0_postcss@8.4.16 + icss-utils: 5.1.0_postcss@8.4.17 + postcss: 8.4.17 + postcss-modules-extract-imports: 3.0.0_postcss@8.4.17 + postcss-modules-local-by-default: 4.0.0_postcss@8.4.17 + postcss-modules-scope: 3.0.0_postcss@8.4.17 + postcss-modules-values: 4.0.0_postcss@8.4.17 postcss-value-parser: 4.2.0 - semver: 7.3.7 + semver: 7.3.8 dev: true /css-select/4.3.0: @@ -9156,6 +8794,10 @@ packages: resolution: {integrity: sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==} engines: {node: '>=0.11'} + /dayjs/1.11.5: + resolution: {integrity: sha512-CAdX5Q3YW3Gclyo5Vpqkgpj8fSdLQcRuzfX6mC6Phy0nfJ0eGYOeS7m4mt2plDWLAtA4TqTakvbboHvUxfe4iA==} + dev: false + /debug/2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: @@ -9390,7 +9032,6 @@ packages: /detect-node/2.1.0: resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} - dev: true /detect-package-manager/2.0.1: resolution: {integrity: sha512-j/lJHyoLlWi6G1LDdLgvUtz60Zo5GEj+sVYtTVXnYLDPuzgC3llMxonXym9zIwhhUII8vjdw0LXxavpLqTbl1A==} @@ -9552,6 +9193,16 @@ packages: /dotenv-expand/5.1.0: resolution: {integrity: sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==} + /dotenv-expand/8.0.3: + resolution: {integrity: sha512-SErOMvge0ZUyWd5B0NXMQlDkN+8r+HhVUsxgOO7IoPDOdDRD2JjExpN6y3KnFR66jsJMwSn1pqIivhU5rcJiNg==} + engines: {node: '>=12'} + dev: true + + /dotenv/16.0.3: + resolution: {integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==} + engines: {node: '>=12'} + dev: true + /dotenv/8.6.0: resolution: {integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==} engines: {node: '>=10'} @@ -9615,10 +9266,18 @@ packages: dev: true /ee-first/1.1.1: - resolution: {integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=} + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - /electron-to-chromium/1.4.261: - resolution: {integrity: sha512-fVXliNUGJ7XUVJSAasPseBbVgJIeyw5M1xIkgXdTSRjlmCqBbiSTsEdLOCJS31Fc8B7CaloQ/BFAg8By3ODLdg==} + /ejs/3.1.8: + resolution: {integrity: sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==} + engines: {node: '>=0.10.0'} + hasBin: true + dependencies: + jake: 10.8.5 + dev: true + + /electron-to-chromium/1.4.275: + resolution: {integrity: sha512-aJeQQ+Hl9Jyyzv4chBqYJwmVRY46N5i2BEX5Cuyk/5gFCUZ5F3i7Hnba6snZftWla7Gglwc5pIgcd+E7cW+rPg==} /elliptic/6.5.4: resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} @@ -9790,194 +9449,194 @@ packages: resolution: {integrity: sha512-EmTr31wppcaIAgblChZiuN/l9Y7DPyw8Xtbg7fIVngn6zMW+IEBJDJngeKC3x6wr0V/vcA2wqeFnaw1bFJbDdA==} dev: true - /esbuild-android-64/0.15.9: - resolution: {integrity: sha512-HQCX7FJn9T4kxZQkhPjNZC7tBWZqJvhlLHPU2SFzrQB/7nDXjmTIFpFTjt7Bd1uFpeXmuwf5h5fZm+x/hLnhbw==} + /esbuild-android-64/0.15.10: + resolution: {integrity: sha512-UI7krF8OYO1N7JYTgLT9ML5j4+45ra3amLZKx7LO3lmLt1Ibn8t3aZbX5Pu4BjWiqDuJ3m/hsvhPhK/5Y/YpnA==} engines: {node: '>=12'} cpu: [x64] os: [android] requiresBuild: true optional: true - /esbuild-android-arm64/0.15.9: - resolution: {integrity: sha512-E6zbLfqbFVCNEKircSHnPiSTsm3fCRxeIMPfrkS33tFjIAoXtwegQfVZqMGR0FlsvVxp2NEDOUz+WW48COCjSg==} + /esbuild-android-arm64/0.15.10: + resolution: {integrity: sha512-EOt55D6xBk5O05AK8brXUbZmoFj4chM8u3riGflLa6ziEoVvNjRdD7Cnp82NHQGfSHgYR06XsPI8/sMuA/cUwg==} engines: {node: '>=12'} cpu: [arm64] os: [android] requiresBuild: true optional: true - /esbuild-darwin-64/0.15.9: - resolution: {integrity: sha512-gI7dClcDN/HHVacZhTmGjl0/TWZcGuKJ0I7/xDGJwRQQn7aafZGtvagOFNmuOq+OBFPhlPv1T6JElOXb0unkSQ==} + /esbuild-darwin-64/0.15.10: + resolution: {integrity: sha512-hbDJugTicqIm+WKZgp208d7FcXcaK8j2c0l+fqSJ3d2AzQAfjEYDRM3Z2oMeqSJ9uFxyj/muSACLdix7oTstRA==} engines: {node: '>=12'} cpu: [x64] os: [darwin] requiresBuild: true optional: true - /esbuild-darwin-arm64/0.15.9: - resolution: {integrity: sha512-VZIMlcRN29yg/sv7DsDwN+OeufCcoTNaTl3Vnav7dL/nvsApD7uvhVRbgyMzv0zU/PP0xRhhIpTyc7lxEzHGSw==} + /esbuild-darwin-arm64/0.15.10: + resolution: {integrity: sha512-M1t5+Kj4IgSbYmunf2BB6EKLkWUq+XlqaFRiGOk8bmBapu9bCDrxjf4kUnWn59Dka3I27EiuHBKd1rSO4osLFQ==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] requiresBuild: true optional: true - /esbuild-freebsd-64/0.15.9: - resolution: {integrity: sha512-uM4z5bTvuAXqPxrI204txhlsPIolQPWRMLenvGuCPZTnnGlCMF2QLs0Plcm26gcskhxewYo9LkkmYSS5Czrb5A==} + /esbuild-freebsd-64/0.15.10: + resolution: {integrity: sha512-KMBFMa7C8oc97nqDdoZwtDBX7gfpolkk6Bcmj6YFMrtCMVgoU/x2DI1p74DmYl7CSS6Ppa3xgemrLrr5IjIn0w==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] requiresBuild: true optional: true - /esbuild-freebsd-arm64/0.15.9: - resolution: {integrity: sha512-HHDjT3O5gWzicGdgJ5yokZVN9K9KG05SnERwl9nBYZaCjcCgj/sX8Ps1jvoFSfNCO04JSsHSOWo4qvxFuj8FoA==} + /esbuild-freebsd-arm64/0.15.10: + resolution: {integrity: sha512-m2KNbuCX13yQqLlbSojFMHpewbn8wW5uDS6DxRpmaZKzyq8Dbsku6hHvh2U+BcLwWY4mpgXzFUoENEf7IcioGg==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] requiresBuild: true optional: true - /esbuild-linux-32/0.15.9: - resolution: {integrity: sha512-AQIdE8FugGt1DkcekKi5ycI46QZpGJ/wqcMr7w6YUmOmp2ohQ8eO4sKUsOxNOvYL7hGEVwkndSyszR6HpVHLFg==} + /esbuild-linux-32/0.15.10: + resolution: {integrity: sha512-guXrwSYFAvNkuQ39FNeV4sNkNms1bLlA5vF1H0cazZBOLdLFIny6BhT+TUbK/hdByMQhtWQ5jI9VAmPKbVPu1w==} engines: {node: '>=12'} cpu: [ia32] os: [linux] requiresBuild: true optional: true - /esbuild-linux-64/0.15.9: - resolution: {integrity: sha512-4RXjae7g6Qs7StZyiYyXTZXBlfODhb1aBVAjd+ANuPmMhWthQilWo7rFHwJwL7DQu1Fjej2sODAVwLbcIVsAYQ==} + /esbuild-linux-64/0.15.10: + resolution: {integrity: sha512-jd8XfaSJeucMpD63YNMO1JCrdJhckHWcMv6O233bL4l6ogQKQOxBYSRP/XLWP+6kVTu0obXovuckJDcA0DKtQA==} engines: {node: '>=12'} cpu: [x64] os: [linux] requiresBuild: true optional: true - /esbuild-linux-arm/0.15.9: - resolution: {integrity: sha512-3Zf2GVGUOI7XwChH3qrnTOSqfV1V4CAc/7zLVm4lO6JT6wbJrTgEYCCiNSzziSju+J9Jhf9YGWk/26quWPC6yQ==} + /esbuild-linux-arm/0.15.10: + resolution: {integrity: sha512-6N8vThLL/Lysy9y4Ex8XoLQAlbZKUyExCWyayGi2KgTBelKpPgj6RZnUaKri0dHNPGgReJriKVU6+KDGQwn10A==} engines: {node: '>=12'} cpu: [arm] os: [linux] requiresBuild: true optional: true - /esbuild-linux-arm64/0.15.9: - resolution: {integrity: sha512-a+bTtxJmYmk9d+s2W4/R1SYKDDAldOKmWjWP0BnrWtDbvUBNOm++du0ysPju4mZVoEFgS1yLNW+VXnG/4FNwdQ==} + /esbuild-linux-arm64/0.15.10: + resolution: {integrity: sha512-GByBi4fgkvZFTHFDYNftu1DQ1GzR23jws0oWyCfhnI7eMOe+wgwWrc78dbNk709Ivdr/evefm2PJiUBMiusS1A==} engines: {node: '>=12'} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /esbuild-linux-mips64le/0.15.9: - resolution: {integrity: sha512-Zn9HSylDp89y+TRREMDoGrc3Z4Hs5u56ozZLQCiZAUx2+HdbbXbWdjmw3FdTJ/i7t5Cew6/Q+6kfO3KCcFGlyw==} + /esbuild-linux-mips64le/0.15.10: + resolution: {integrity: sha512-BxP+LbaGVGIdQNJUNF7qpYjEGWb0YyHVSKqYKrn+pTwH/SiHUxFyJYSP3pqkku61olQiSBnSmWZ+YUpj78Tw7Q==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] requiresBuild: true optional: true - /esbuild-linux-ppc64le/0.15.9: - resolution: {integrity: sha512-OEiOxNAMH9ENFYqRsWUj3CWyN3V8P3ZXyfNAtX5rlCEC/ERXrCEFCJji/1F6POzsXAzxvUJrTSTCy7G6BhA6Fw==} + /esbuild-linux-ppc64le/0.15.10: + resolution: {integrity: sha512-LoSQCd6498PmninNgqd/BR7z3Bsk/mabImBWuQ4wQgmQEeanzWd5BQU2aNi9mBURCLgyheuZS6Xhrw5luw3OkQ==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] requiresBuild: true optional: true - /esbuild-linux-riscv64/0.15.9: - resolution: {integrity: sha512-ukm4KsC3QRausEFjzTsOZ/qqazw0YvJsKmfoZZm9QW27OHjk2XKSQGGvx8gIEswft/Sadp03/VZvAaqv5AIwNA==} + /esbuild-linux-riscv64/0.15.10: + resolution: {integrity: sha512-Lrl9Cr2YROvPV4wmZ1/g48httE8z/5SCiXIyebiB5N8VT7pX3t6meI7TQVHw/wQpqP/AF4SksDuFImPTM7Z32Q==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] requiresBuild: true optional: true - /esbuild-linux-s390x/0.15.9: - resolution: {integrity: sha512-uDOQEH55wQ6ahcIKzQr3VyjGc6Po/xblLGLoUk3fVL1qjlZAibtQr6XRfy5wPJLu/M2o0vQKLq4lyJ2r1tWKcw==} + /esbuild-linux-s390x/0.15.10: + resolution: {integrity: sha512-ReP+6q3eLVVP2lpRrvl5EodKX7EZ1bS1/z5j6hsluAlZP5aHhk6ghT6Cq3IANvvDdscMMCB4QEbI+AjtvoOFpA==} engines: {node: '>=12'} cpu: [s390x] os: [linux] requiresBuild: true optional: true - /esbuild-netbsd-64/0.15.9: - resolution: {integrity: sha512-yWgxaYTQz+TqX80wXRq6xAtb7GSBAp6gqLKfOdANg9qEmAI1Bxn04IrQr0Mzm4AhxvGKoHzjHjMgXbCCSSDxcw==} + /esbuild-netbsd-64/0.15.10: + resolution: {integrity: sha512-iGDYtJCMCqldMskQ4eIV+QSS/CuT7xyy9i2/FjpKvxAuCzrESZXiA1L64YNj6/afuzfBe9i8m/uDkFHy257hTw==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] requiresBuild: true optional: true - /esbuild-openbsd-64/0.15.9: - resolution: {integrity: sha512-JmS18acQl4iSAjrEha1MfEmUMN4FcnnrtTaJ7Qg0tDCOcgpPPQRLGsZqhes0vmx8VA6IqRyScqXvaL7+Q0Uf3A==} + /esbuild-openbsd-64/0.15.10: + resolution: {integrity: sha512-ftMMIwHWrnrYnvuJQRJs/Smlcb28F9ICGde/P3FUTCgDDM0N7WA0o9uOR38f5Xe2/OhNCgkjNeb7QeaE3cyWkQ==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] requiresBuild: true optional: true - /esbuild-sunos-64/0.15.9: - resolution: {integrity: sha512-UKynGSWpzkPmXW3D2UMOD9BZPIuRaSqphxSCwScfEE05Be3KAmvjsBhht1fLzKpiFVJb0BYMd4jEbWMyJ/z1hQ==} + /esbuild-sunos-64/0.15.10: + resolution: {integrity: sha512-mf7hBL9Uo2gcy2r3rUFMjVpTaGpFJJE5QTDDqUFf1632FxteYANffDZmKbqX0PfeQ2XjUDE604IcE7OJeoHiyg==} engines: {node: '>=12'} cpu: [x64] os: [sunos] requiresBuild: true optional: true - /esbuild-windows-32/0.15.9: - resolution: {integrity: sha512-aqXvu4/W9XyTVqO/hw3rNxKE1TcZiEYHPsXM9LwYmKSX9/hjvfIJzXwQBlPcJ/QOxedfoMVH0YnhhQ9Ffb0RGA==} + /esbuild-windows-32/0.15.10: + resolution: {integrity: sha512-ttFVo+Cg8b5+qHmZHbEc8Vl17kCleHhLzgT8X04y8zudEApo0PxPg9Mz8Z2cKH1bCYlve1XL8LkyXGFjtUYeGg==} engines: {node: '>=12'} cpu: [ia32] os: [win32] requiresBuild: true optional: true - /esbuild-windows-64/0.15.9: - resolution: {integrity: sha512-zm7h91WUmlS4idMtjvCrEeNhlH7+TNOmqw5dJPJZrgFaxoFyqYG6CKDpdFCQXdyKpD5yvzaQBOMVTCBVKGZDEg==} + /esbuild-windows-64/0.15.10: + resolution: {integrity: sha512-2H0gdsyHi5x+8lbng3hLbxDWR7mKHWh5BXZGKVG830KUmXOOWFE2YKJ4tHRkejRduOGDrBvHBriYsGtmTv3ntA==} engines: {node: '>=12'} cpu: [x64] os: [win32] requiresBuild: true optional: true - /esbuild-windows-arm64/0.15.9: - resolution: {integrity: sha512-yQEVIv27oauAtvtuhJVfSNMztJJX47ismRS6Sv2QMVV9RM+6xjbMWuuwM2nxr5A2/gj/mu2z9YlQxiwoFRCfZA==} + /esbuild-windows-arm64/0.15.10: + resolution: {integrity: sha512-S+th4F+F8VLsHLR0zrUcG+Et4hx0RKgK1eyHc08kztmLOES8BWwMiaGdoW9hiXuzznXQ0I/Fg904MNbr11Nktw==} engines: {node: '>=12'} cpu: [arm64] os: [win32] requiresBuild: true optional: true - /esbuild/0.15.9: - resolution: {integrity: sha512-OnYr1rkMVxtmMHIAKZLMcEUlJmqcbxBz9QoBU8G9v455na0fuzlT/GLu6l+SRghrk0Mm2fSSciMmzV43Q8e0Gg==} + /esbuild/0.15.10: + resolution: {integrity: sha512-N7wBhfJ/E5fzn/SpNgX+oW2RLRjwaL8Y0ezqNqhjD6w0H2p0rDuEz2FKZqpqLnO8DCaWumKe8dsC/ljvVSSxng==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.15.9 - '@esbuild/linux-loong64': 0.15.9 - esbuild-android-64: 0.15.9 - esbuild-android-arm64: 0.15.9 - esbuild-darwin-64: 0.15.9 - esbuild-darwin-arm64: 0.15.9 - esbuild-freebsd-64: 0.15.9 - esbuild-freebsd-arm64: 0.15.9 - esbuild-linux-32: 0.15.9 - esbuild-linux-64: 0.15.9 - esbuild-linux-arm: 0.15.9 - esbuild-linux-arm64: 0.15.9 - esbuild-linux-mips64le: 0.15.9 - esbuild-linux-ppc64le: 0.15.9 - esbuild-linux-riscv64: 0.15.9 - esbuild-linux-s390x: 0.15.9 - esbuild-netbsd-64: 0.15.9 - esbuild-openbsd-64: 0.15.9 - esbuild-sunos-64: 0.15.9 - esbuild-windows-32: 0.15.9 - esbuild-windows-64: 0.15.9 - esbuild-windows-arm64: 0.15.9 + '@esbuild/android-arm': 0.15.10 + '@esbuild/linux-loong64': 0.15.10 + esbuild-android-64: 0.15.10 + esbuild-android-arm64: 0.15.10 + esbuild-darwin-64: 0.15.10 + esbuild-darwin-arm64: 0.15.10 + esbuild-freebsd-64: 0.15.10 + esbuild-freebsd-arm64: 0.15.10 + esbuild-linux-32: 0.15.10 + esbuild-linux-64: 0.15.10 + esbuild-linux-arm: 0.15.10 + esbuild-linux-arm64: 0.15.10 + esbuild-linux-mips64le: 0.15.10 + esbuild-linux-ppc64le: 0.15.10 + esbuild-linux-riscv64: 0.15.10 + esbuild-linux-s390x: 0.15.10 + esbuild-netbsd-64: 0.15.10 + esbuild-openbsd-64: 0.15.10 + esbuild-sunos-64: 0.15.10 + esbuild-windows-32: 0.15.10 + esbuild-windows-64: 0.15.10 + esbuild-windows-arm64: 0.15.10 /escalade/3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} @@ -10114,7 +9773,7 @@ packages: hasBin: true dependencies: '@eslint/eslintrc': 1.3.2 - '@humanwhocodes/config-array': 0.10.5 + '@humanwhocodes/config-array': 0.10.7 '@humanwhocodes/gitignore-to-minimatch': 1.0.2 '@humanwhocodes/module-importer': 1.0.1 ajv: 6.12.6 @@ -10140,7 +9799,7 @@ packages: import-fresh: 3.3.0 imurmurhash: 0.1.4 is-glob: 4.0.3 - js-sdsl: 4.1.4 + js-sdsl: 4.1.5 js-yaml: 4.1.0 json-stable-stringify-without-jsonify: 1.0.1 levn: 0.4.1 @@ -10215,6 +9874,7 @@ packages: /estree-walker/2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + dev: true /esutils/1.0.0: resolution: {integrity: sha512-x/iYH53X3quDwfHRz4y8rn4XcEwwCJeWsul9pF1zldMbGtgOtMNBEOuYWwB1EQlK2LRa1fev3YAgym/RElp5Cg==} @@ -10234,7 +9894,7 @@ packages: dev: false /eventemitter2/5.0.1: - resolution: {integrity: sha1-YZegldX7a1folC9v1+qtY6CclFI=} + resolution: {integrity: sha512-5EM1GHXycJBS6mauYAbVKT1cVs7POKWb2NXD4Vyt8dDqeZa7LaDK1/sjtL+Zb0lzTpSNil4596Dyu97hz37QLg==} dev: true /eventemitter3/4.0.7: @@ -10662,6 +10322,12 @@ packages: resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} optional: true + /filelist/1.0.4: + resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} + dependencies: + minimatch: 5.1.0 + dev: true + /filename-reserved-regex/2.0.0: resolution: {integrity: sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==} engines: {node: '>=4'} @@ -10815,8 +10481,8 @@ packages: resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} dev: true - /flow-parser/0.187.1: - resolution: {integrity: sha512-ZvlTeakTTMmYGukt4EIQtLEp4ie45W+jK325uukGgiqFg2Rl7TdpOJQbOLUN2xMeGS+WvXaK0uIJ3coPGDXFGQ==} + /flow-parser/0.188.1: + resolution: {integrity: sha512-6PA9S1Dphgj5j61As1VkCw8xE0sBXd/ql/WYRQRT8kgORqclp5Eh/blAKvye2p/oIrCpWYwENs1khKqTZvd2UA==} engines: {node: '>=0.4.0'} dev: false @@ -10867,7 +10533,7 @@ packages: signal-exit: 3.0.7 dev: true - /fork-ts-checker-webpack-plugin/4.1.6_omrux4vvqa62tf6r3deo7igg6u: + /fork-ts-checker-webpack-plugin/4.1.6_lasgyenclx45ngbljrbo537mpe: resolution: {integrity: sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw==} engines: {node: '>=6.11.5', yarn: '>=1.0.0'} peerDependencies: @@ -10887,14 +10553,14 @@ packages: minimatch: 3.1.2 semver: 5.7.1 tapable: 1.1.3 - typescript: 4.8.3 + typescript: 4.8.4 webpack: 4.46.0 worker-rpc: 0.1.1 transitivePeerDependencies: - supports-color dev: true - /fork-ts-checker-webpack-plugin/6.5.2_kb3egcnme7w23lfa5xodfjfhge: + /fork-ts-checker-webpack-plugin/6.5.2_lasgyenclx45ngbljrbo537mpe: resolution: {integrity: sha512-m5cUmF30xkZ7h4tWUgTAcEaKmUW7tfyUyTqNNOz7OxWJ0v1VWKTcOvH8FWHUwSjlW/356Ijc9vi3XfcPstpQKA==} engines: {node: '>=10', yarn: '>=1.0.0'} peerDependencies: @@ -10919,42 +10585,42 @@ packages: memfs: 3.4.7 minimatch: 3.1.2 schema-utils: 2.7.0 - semver: 7.3.7 + semver: 7.3.8 tapable: 1.1.3 - typescript: 4.8.3 + typescript: 4.8.4 + webpack: 4.46.0 + + /fork-ts-checker-webpack-plugin/6.5.2_qqxisngxjbp7lstdk7boexbu3e: + resolution: {integrity: sha512-m5cUmF30xkZ7h4tWUgTAcEaKmUW7tfyUyTqNNOz7OxWJ0v1VWKTcOvH8FWHUwSjlW/356Ijc9vi3XfcPstpQKA==} + engines: {node: '>=10', yarn: '>=1.0.0'} + peerDependencies: + eslint: '>= 6' + typescript: '>= 2.7' + vue-template-compiler: '*' + webpack: '>= 4' + peerDependenciesMeta: + eslint: + optional: true + vue-template-compiler: + optional: true + dependencies: + '@babel/code-frame': 7.18.6 + '@types/json-schema': 7.0.11 + chalk: 4.1.2 + chokidar: 3.5.3 + cosmiconfig: 6.0.0 + deepmerge: 4.2.2 + fs-extra: 9.1.0 + glob: 7.2.3 + memfs: 3.4.7 + minimatch: 3.1.2 + schema-utils: 2.7.0 + semver: 7.3.8 + tapable: 1.1.3 + typescript: 4.8.4 webpack: 5.74.0 dev: true - /fork-ts-checker-webpack-plugin/6.5.2_omrux4vvqa62tf6r3deo7igg6u: - resolution: {integrity: sha512-m5cUmF30xkZ7h4tWUgTAcEaKmUW7tfyUyTqNNOz7OxWJ0v1VWKTcOvH8FWHUwSjlW/356Ijc9vi3XfcPstpQKA==} - engines: {node: '>=10', yarn: '>=1.0.0'} - peerDependencies: - eslint: '>= 6' - typescript: '>= 2.7' - vue-template-compiler: '*' - webpack: '>= 4' - peerDependenciesMeta: - eslint: - optional: true - vue-template-compiler: - optional: true - dependencies: - '@babel/code-frame': 7.18.6 - '@types/json-schema': 7.0.11 - chalk: 4.1.2 - chokidar: 3.5.3 - cosmiconfig: 6.0.0 - deepmerge: 4.2.2 - fs-extra: 9.1.0 - glob: 7.2.3 - memfs: 3.4.7 - minimatch: 3.1.2 - schema-utils: 2.7.0 - semver: 7.3.7 - tapable: 1.1.3 - typescript: 4.8.3 - webpack: 4.46.0 - /form-data-encoder/1.7.1: resolution: {integrity: sha512-EFRDrsMm/kyqbTQocNvRXMLjc7Es2Vk+IQFx/YW7hkUH1eBl4J1fqiP34l74Yt0pFLCNpc06fkbVk00008mzjg==} dev: true @@ -10995,7 +10661,7 @@ packages: map-cache: 0.2.2 /fresh/0.5.2: - resolution: {integrity: sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=} + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} /from2/2.3.0: @@ -11279,7 +10945,7 @@ packages: es6-error: 4.1.1 matcher: 3.0.0 roarr: 2.15.4 - semver: 7.3.7 + semver: 7.3.8 serialize-error: 7.0.1 dev: true @@ -11460,7 +11126,7 @@ packages: source-map: 0.6.1 wordwrap: 1.0.0 optionalDependencies: - uglify-js: 3.17.2 + uglify-js: 3.17.3 /has-ansi/2.0.0: resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==} @@ -11640,12 +11306,6 @@ packages: hasBin: true dev: true - /history/5.3.0: - resolution: {integrity: sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==} - dependencies: - '@babel/runtime': 7.19.0 - dev: false - /hmac-drbg/1.0.1: resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} dependencies: @@ -11703,7 +11363,7 @@ packages: he: 1.2.0 param-case: 3.0.4 relateurl: 0.2.7 - terser: 5.15.0 + terser: 5.15.1 dev: true /html-tags/3.2.0: @@ -11843,15 +11503,6 @@ packages: postcss: 7.0.39 dev: true - /icss-utils/5.1.0_postcss@8.4.16: - resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - dependencies: - postcss: 8.4.16 - dev: true - /icss-utils/5.1.0_postcss@8.4.17: resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} engines: {node: ^10 || ^12 || >= 14} @@ -11994,7 +11645,7 @@ packages: mute-stream: 0.0.8 ora: 5.4.1 run-async: 2.4.1 - rxjs: 7.5.6 + rxjs: 7.5.7 string-width: 4.2.3 strip-ansi: 6.0.1 through: 2.3.8 @@ -12399,7 +12050,6 @@ packages: /is-what/4.1.7: resolution: {integrity: sha512-DBVOQNiPKnGMxRMLIYSwERAS5MVY1B7xYiGnpgctsOFvVDz9f9PFXXxMcTOHuoqYp4NK9qFYQaIC1NRRxLMpBQ==} engines: {node: '>=12.13'} - dev: true /is-whitespace-character/1.0.4: resolution: {integrity: sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==} @@ -12477,8 +12127,8 @@ packages: engines: {node: '>=8'} dev: true - /istanbul-lib-instrument/5.2.0: - resolution: {integrity: sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==} + /istanbul-lib-instrument/5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} engines: {node: '>=8'} dependencies: '@babel/core': 7.19.3 @@ -12526,8 +12176,19 @@ packages: iterate-iterator: 1.0.2 dev: true + /jake/10.8.5: + resolution: {integrity: sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==} + engines: {node: '>=10'} + hasBin: true + dependencies: + async: 3.2.4 + chalk: 4.1.2 + filelist: 1.0.4 + minimatch: 3.1.2 + dev: true + /javascript-natural-sort/0.7.1: - resolution: {integrity: sha1-+eIwPUUH9tdDVac2ZNFED7Wg71k=} + resolution: {integrity: sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==} dev: true /jest-haste-map/26.6.2: @@ -12536,7 +12197,7 @@ packages: dependencies: '@jest/types': 26.6.2 '@types/graceful-fs': 4.1.5 - '@types/node': 18.8.1 + '@types/node': 18.8.2 anymatch: 3.1.2 fb-watchman: 2.0.2 graceful-fs: 4.2.10 @@ -12558,7 +12219,7 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@jest/types': 27.5.1 - '@types/node': 18.8.1 + '@types/node': 18.8.2 dev: true /jest-regex-util/26.0.0: @@ -12570,7 +12231,7 @@ packages: resolution: {integrity: sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==} engines: {node: '>= 10.14.2'} dependencies: - '@types/node': 18.8.1 + '@types/node': 18.8.2 graceful-fs: 4.2.10 dev: true @@ -12579,7 +12240,7 @@ packages: engines: {node: '>= 10.14.2'} dependencies: '@jest/types': 26.6.2 - '@types/node': 18.8.1 + '@types/node': 18.8.2 chalk: 4.1.2 graceful-fs: 4.2.10 is-ci: 2.0.0 @@ -12590,7 +12251,7 @@ packages: resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.8.1 + '@types/node': 18.8.2 merge-stream: 2.0.0 supports-color: 7.2.0 dev: true @@ -12599,7 +12260,7 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.8.1 + '@types/node': 16.11.64 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true @@ -12650,17 +12311,21 @@ packages: dependencies: immer: 9.0.15 react: 18.2.0 - valtio: 1.7.0_react@18.2.0+vite@3.1.3 + valtio: 1.7.0_react@18.2.0+vite@3.1.4 dev: false /jpeg-js/0.4.4: resolution: {integrity: sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==} dev: true - /js-sdsl/4.1.4: - resolution: {integrity: sha512-Y2/yD55y5jteOAmY50JbUZYwk3CP3wnLPEZnlR1w9oKhITrBEtAxwuWKebFf8hMrPMgbYwFoWK/lH2sBkErELw==} + /js-sdsl/4.1.5: + resolution: {integrity: sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==} dev: true + /js-sha3/0.8.0: + resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} + dev: false + /js-string-escape/1.0.1: resolution: {integrity: sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg==} engines: {node: '>= 0.8'} @@ -12682,25 +12347,25 @@ packages: argparse: 2.0.1 dev: true - /jscodeshift/0.13.1_@babel+preset-env@7.19.1: + /jscodeshift/0.13.1_@babel+preset-env@7.19.3: resolution: {integrity: sha512-lGyiEbGOvmMRKgWk4vf+lUrCWO/8YR8sUR3FKF1Cq5fovjZDlIcw3Hu5ppLHAnEXshVffvaM0eyuY/AbOeYpnQ==} hasBin: true peerDependencies: '@babel/preset-env': ^7.1.6 dependencies: - '@babel/core': 7.19.1 - '@babel/parser': 7.19.1 - '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.19.1 - '@babel/plugin-transform-modules-commonjs': 7.18.6_@babel+core@7.19.1 - '@babel/preset-env': 7.19.1_@babel+core@7.19.1 - '@babel/preset-flow': 7.18.6_@babel+core@7.19.1 - '@babel/preset-typescript': 7.18.6_@babel+core@7.19.1 - '@babel/register': 7.18.9_@babel+core@7.19.1 - babel-core: 7.0.0-bridge.0_@babel+core@7.19.1 + '@babel/core': 7.19.3 + '@babel/parser': 7.19.3 + '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.19.3 + '@babel/plugin-transform-modules-commonjs': 7.18.6_@babel+core@7.19.3 + '@babel/preset-env': 7.19.3_@babel+core@7.19.3 + '@babel/preset-flow': 7.18.6_@babel+core@7.19.3 + '@babel/preset-typescript': 7.18.6_@babel+core@7.19.3 + '@babel/register': 7.18.9_@babel+core@7.19.3 + babel-core: 7.0.0-bridge.0_@babel+core@7.19.3 chalk: 4.1.2 - flow-parser: 0.187.1 + flow-parser: 0.188.1 graceful-fs: 4.2.10 micromatch: 3.1.10 neo-async: 2.6.2 @@ -12871,7 +12536,7 @@ packages: dependencies: '@babel/runtime': 7.19.0 app-root-dir: 1.0.2 - core-js: 3.25.2 + core-js: 3.25.5 dotenv: 8.6.0 dotenv-expand: 5.1.0 @@ -13050,7 +12715,7 @@ packages: dev: true /lodash.uniq/4.5.0: - resolution: {integrity: sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=} + resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} /lodash/4.17.11: resolution: {integrity: sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==} @@ -13163,8 +12828,8 @@ packages: hasBin: true dev: true - /magic-string/0.26.4: - resolution: {integrity: sha512-e5uXtVJ22aEpK9u1+eQf0fSxHeqwyV19K+uGnlROCxUhzwRip9tBsaMViK/0vC3viyPd5Gtucp3UmEp/Q2cPTQ==} + /magic-string/0.26.6: + resolution: {integrity: sha512-6d+3bFybzyQFJYSoRsl9ZC0wheze8M1LrQC7tNMRqXR4izUTDOLMd9BtSuExK9iAukFh+s5K0WAhc/dlQ+HKYA==} engines: {node: '>=12'} dependencies: sourcemap-codec: 1.4.8 @@ -13258,7 +12923,7 @@ packages: resolution: {integrity: sha512-r0NEbP1dsM+IqB62Ru9TXLP/HDaTdBNIeylYXumuBi6Xv4ufjE1/g3TnslYL8VNqNcGAGbMptQFHrrdfoZ/Sug==} dependencies: html-link-extractor: 1.0.5 - marked: 4.1.0 + marked: 4.1.1 dev: true /markdown-yaml-metadata-parser/3.0.0: @@ -13269,11 +12934,18 @@ packages: js-yaml: 3.14.1 dev: false - /marked/4.1.0: - resolution: {integrity: sha512-+Z6KDjSPa6/723PQYyc1axYZpYYpDnECDaU6hkaf5gqBieBkMKYReL5hteF2QizhlMbgbo8umXl/clZ67+GlsA==} + /marked/4.1.1: + resolution: {integrity: sha512-0cNMnTcUJPxbA6uWmCmjWz4NJRe/0Xfk2NhXCUHjew9qJzFN20krFnsUe7QynwqOwa5m1fZ4UDg0ycKFVC0ccw==} engines: {node: '>= 12'} hasBin: true + /match-sorter/6.3.1: + resolution: {integrity: sha512-mxybbo3pPNuA+ZuCUhm5bwNkXrJTbsk5VWbR5wiwz/GC6LIiegBGn2w3O08UG/jdbYLinw51fSQ5xNU1U3MgBw==} + dependencies: + '@babel/runtime': 7.19.0 + remove-accents: 0.4.2 + dev: false + /matcher/3.0.0: resolution: {integrity: sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==} engines: {node: '>=10'} @@ -13318,7 +12990,7 @@ packages: resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} /media-typer/0.3.0: - resolution: {integrity: sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=} + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} /mem/8.1.1: @@ -13378,7 +13050,7 @@ packages: dev: true /merge-descriptors/1.0.1: - resolution: {integrity: sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=} + resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} /merge-stream/2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} @@ -13422,6 +13094,10 @@ packages: braces: 3.0.2 picomatch: 2.3.1 + /microseconds/0.2.0: + resolution: {integrity: sha512-n7DHHMjR1avBbSpsTBj6fmMGh2AGrifVV4e+WYc3Q9lO+xnSZ3NyhcBND3vzzatt05LFhoKFRxrIyklmLlUtyA==} + dev: false + /miller-rabin/4.0.1: resolution: {integrity: sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==} hasBin: true @@ -13639,6 +13315,12 @@ packages: resolution: {integrity: sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA==} optional: true + /nano-time/1.0.0: + resolution: {integrity: sha512-flnngywOoQ0lLQOTRNexn2gGSNuM9bKj9RZAWSzhQ+UJYaAFG9bac4DW9VHjUAzrOaIcajHybCTHe/bkvozQqA==} + dependencies: + big-integer: 1.6.51 + dev: false + /nanoid/3.3.4: resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -13705,14 +13387,14 @@ packages: dev: true /nocache/2.0.0: - resolution: {integrity: sha1-ICtIAhoMTL3i34DeFaF0Q8i0OYA=} + resolution: {integrity: sha512-YdKcy2x0dDwOh+8BEuHvA+mnOKAhmMQDgKBOCUGaLpewdmsRYguYZSom3yA+/OrE61O/q+NMQANnun65xpI1Hw==} dev: true - /node-abi/3.24.0: - resolution: {integrity: sha512-YPG3Co0luSu6GwOBsmIdGW6Wx0NyNDLg/hriIyDllVsNwnI6UeqaWShxC3lbH4LtEQUgoLP3XR1ndXiDAWvmRw==} + /node-abi/3.26.0: + resolution: {integrity: sha512-jRVtMFTChbi2i/jqo/i2iP9634KMe+7K1v35mIdj3Mn59i5q27ZYhn+sW6npISM/PQg7HrP2kwtRBMmh5Uvzdg==} engines: {node: '>=10'} dependencies: - semver: 7.3.7 + semver: 7.3.8 dev: true /node-addon-api/5.0.0: @@ -13736,6 +13418,13 @@ packages: dependencies: whatwg-url: 5.0.0 + /node-html-parser/5.4.2: + resolution: {integrity: sha512-RaBPP3+51hPne/OolXxcz89iYvQvKOydaqoePpOgXcrOKZhjVIzmpKZz+Hd/RBO2/zN2q6CNJhQzucVz+u3Jyw==} + dependencies: + css-select: 4.3.0 + he: 1.2.0 + dev: true + /node-int64/0.4.0: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} dev: true @@ -13771,13 +13460,13 @@ packages: resolution: {integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==} /node-rsa/0.4.2: - resolution: {integrity: sha1-1jkXKewWqDDtWjgEKzFX0tXXJTA=} + resolution: {integrity: sha512-Bvso6Zi9LY4otIZefYrscsUpo2mUpiAVIEmSZV2q41sP8tHZoert3Yu6zv4f/RXJqMNZQKCtnhDugIuCma23YA==} dependencies: asn1: 0.2.3 dev: true /node-statsd/0.1.1: - resolution: {integrity: sha1-J6WTSHY9CvegN6wqAx/vPwUQE9M=} + resolution: {integrity: sha512-QDf6R8VXF56QVe1boek8an/Rb3rSNaxoFWb7Elpsv2m1+Noua1yy0F1FpKpK5VluF8oymWM4w764A4KsYL4pDg==} engines: {node: '>=0.1.97'} dev: true @@ -13952,6 +13641,10 @@ packages: resolution: {integrity: sha512-eJJDYkhJFFbBBAxeh8xW+weHlkI28n2ZdQV/J/DNfWfSKlGEf2xcfAbZTv3riEXHAhL9SVOTs2pRmXiSTf78xg==} dev: true + /oblivious-set/1.0.0: + resolution: {integrity: sha512-z+pI07qxo4c2CulUHCDf9lcqDlMSo72N/4rLUpRXf6fu+q8vjt8y0xS+Tlf8NTJDdTXHbdeO1n3MlbctwEoXZw==} + dev: false + /omggif/1.0.10: resolution: {integrity: sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==} dev: true @@ -14420,7 +14113,7 @@ packages: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} /path-to-regexp/0.1.7: - resolution: {integrity: sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=} + resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} /path-type/1.1.0: resolution: {integrity: sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==} @@ -14442,6 +14135,10 @@ packages: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} + /pathe/0.2.0: + resolution: {integrity: sha512-sTitTPYnn23esFR3RlqYBWn4c45WGeLcsKzQiUpXJAyfcWkolvlYpV8FLo7JishK946oQwMFUCHXQ9AjGPKExw==} + dev: true + /pbkdf2/3.1.2: resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} engines: {node: '>=0.12'} @@ -14567,11 +14264,11 @@ packages: engines: {node: '>=12.13.0'} dev: true - /pnp-webpack-plugin/1.6.4_typescript@4.8.3: + /pnp-webpack-plugin/1.6.4_typescript@4.8.4: resolution: {integrity: sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg==} engines: {node: '>=6'} dependencies: - ts-pnp: 1.2.0_typescript@4.8.3 + ts-pnp: 1.2.0_typescript@4.8.4 transitivePeerDependencies: - typescript dev: true @@ -14593,45 +14290,27 @@ packages: postcss: 7.0.39 dev: true - /postcss-import/14.1.0: + /postcss-import/14.1.0_postcss@8.4.17: resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==} engines: {node: '>=10.0.0'} peerDependencies: postcss: ^8.0.0 dependencies: + postcss: 8.4.17 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.1 - /postcss-import/14.1.0_postcss@8.4.16: - resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==} - engines: {node: '>=10.0.0'} - peerDependencies: - postcss: ^8.0.0 - dependencies: - postcss: 8.4.16 - postcss-value-parser: 4.2.0 - read-cache: 1.0.0 - resolve: 1.22.1 - - /postcss-js/4.0.0: + /postcss-js/4.0.0_postcss@8.4.17: resolution: {integrity: sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==} engines: {node: ^12 || ^14 || >= 16} peerDependencies: postcss: ^8.3.3 dependencies: camelcase-css: 2.0.1 + postcss: 8.4.17 - /postcss-js/4.0.0_postcss@8.4.16: - resolution: {integrity: sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==} - engines: {node: ^12 || ^14 || >= 16} - peerDependencies: - postcss: ^8.3.3 - dependencies: - camelcase-css: 2.0.1 - postcss: 8.4.16 - - /postcss-load-config/3.1.4: + /postcss-load-config/3.1.4_postcss@8.4.17: resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} engines: {node: '>= 10'} peerDependencies: @@ -14644,22 +14323,7 @@ packages: optional: true dependencies: lilconfig: 2.0.6 - yaml: 1.10.2 - - /postcss-load-config/3.1.4_postcss@8.4.16: - resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} - engines: {node: '>= 10'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - dependencies: - lilconfig: 2.0.6 - postcss: 8.4.16 + postcss: 8.4.17 yaml: 1.10.2 /postcss-loader/4.3.0_gzaxsinx64nntyd3vmdqwl7coe: @@ -14674,7 +14338,7 @@ packages: loader-utils: 2.0.2 postcss: 7.0.39 schema-utils: 3.1.1 - semver: 7.3.7 + semver: 7.3.8 webpack: 4.46.0 dev: true @@ -14690,10 +14354,10 @@ packages: loader-utils: 2.0.2 postcss: 7.0.39 schema-utils: 3.1.1 - semver: 7.3.7 + semver: 7.3.8 dev: true - /postcss-loader/7.0.1_postcss@8.4.16: + /postcss-loader/7.0.1_postcss@8.4.17: resolution: {integrity: sha512-VRviFEyYlLjctSM93gAZtcJJ/iSkPZ79zWbN/1fSH+NisBByEiVLqpdVDrPLVSi8DX0oJo12kL/GppTBdKVXiQ==} engines: {node: '>= 14.15.0'} peerDependencies: @@ -14702,8 +14366,8 @@ packages: dependencies: cosmiconfig: 7.0.1 klona: 2.0.5 - postcss: 8.4.16 - semver: 7.3.7 + postcss: 8.4.17 + semver: 7.3.8 dev: true /postcss-modules-extract-imports/2.0.0: @@ -14713,15 +14377,6 @@ packages: postcss: 7.0.39 dev: true - /postcss-modules-extract-imports/3.0.0_postcss@8.4.16: - resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - dependencies: - postcss: 8.4.16 - dev: true - /postcss-modules-extract-imports/3.0.0_postcss@8.4.17: resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==} engines: {node: ^10 || ^12 || >= 14} @@ -14741,18 +14396,6 @@ packages: postcss-value-parser: 4.2.0 dev: true - /postcss-modules-local-by-default/4.0.0_postcss@8.4.16: - resolution: {integrity: sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - dependencies: - icss-utils: 5.1.0_postcss@8.4.16 - postcss: 8.4.16 - postcss-selector-parser: 6.0.10 - postcss-value-parser: 4.2.0 - dev: true - /postcss-modules-local-by-default/4.0.0_postcss@8.4.17: resolution: {integrity: sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==} engines: {node: ^10 || ^12 || >= 14} @@ -14773,16 +14416,6 @@ packages: postcss-selector-parser: 6.0.10 dev: true - /postcss-modules-scope/3.0.0_postcss@8.4.16: - resolution: {integrity: sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - dependencies: - postcss: 8.4.16 - postcss-selector-parser: 6.0.10 - dev: true - /postcss-modules-scope/3.0.0_postcss@8.4.17: resolution: {integrity: sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==} engines: {node: ^10 || ^12 || >= 14} @@ -14800,16 +14433,6 @@ packages: postcss: 7.0.39 dev: true - /postcss-modules-values/4.0.0_postcss@8.4.16: - resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - dependencies: - icss-utils: 5.1.0_postcss@8.4.16 - postcss: 8.4.16 - dev: true - /postcss-modules-values/4.0.0_postcss@8.4.17: resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} engines: {node: ^10 || ^12 || >= 14} @@ -14820,21 +14443,13 @@ packages: postcss: 8.4.17 dev: true - /postcss-nested/5.0.6: + /postcss-nested/5.0.6_postcss@8.4.17: resolution: {integrity: sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==} engines: {node: '>=12.0'} peerDependencies: postcss: ^8.2.14 dependencies: - postcss-selector-parser: 6.0.10 - - /postcss-nested/5.0.6_postcss@8.4.16: - resolution: {integrity: sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.2.14 - dependencies: - postcss: 8.4.16 + postcss: 8.4.17 postcss-selector-parser: 6.0.10 /postcss-selector-parser/6.0.10: @@ -14855,14 +14470,6 @@ packages: source-map: 0.6.1 dev: true - /postcss/8.4.16: - resolution: {integrity: sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==} - engines: {node: ^10 || ^12 || >=14} - dependencies: - nanoid: 3.3.4 - picocolors: 1.0.0 - source-map-js: 1.0.2 - /postcss/8.4.17: resolution: {integrity: sha512-UNxNOLQydcOFi41yHNMcKRZ39NeXlr8AxGuZJsdub8vIb12fHzcq37DTU/QtbI6WLxNg2gF9Z+8qtRwTj1UI1Q==} engines: {node: ^10 || ^12 || >=14} @@ -14870,7 +14477,6 @@ packages: nanoid: 3.3.4 picocolors: 1.0.0 source-map-js: 1.0.2 - dev: true /prebuild-install/7.1.1: resolution: {integrity: sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==} @@ -14883,7 +14489,7 @@ packages: minimist: 1.2.6 mkdirp-classic: 0.5.3 napi-build-utils: 1.0.2 - node-abi: 3.24.0 + node-abi: 3.26.0 pump: 3.0.0 rc: 1.2.8 simple-get: 4.0.1 @@ -15171,7 +14777,7 @@ packages: engines: {node: '>=0.4.x'} /querystring/0.2.0: - resolution: {integrity: sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=} + resolution: {integrity: sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==} engines: {node: '>=0.4.x'} deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. @@ -15289,12 +14895,12 @@ packages: react: 18.2.0 dev: false - /react-docgen-typescript/2.2.2_typescript@4.8.3: + /react-docgen-typescript/2.2.2_typescript@4.8.4: resolution: {integrity: sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg==} peerDependencies: typescript: '>= 4.3.x' dependencies: - typescript: 4.8.3 + typescript: 4.8.4 dev: true /react-docgen/5.4.3: @@ -15475,12 +15081,11 @@ packages: react-dom: 18.2.0_react@18.2.0 dev: false - /react-query/4.0.0_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-qiW+Yvbl+EK8iwPDJAj4qWAKceh+g8Up8jxoNxJbzhV3bNheeyHF3EyynnkDO3S+CYgSwtCUFaP8vOjB62j7xQ==} - deprecated: Please use @tanstack/react-query for v4+ + /react-query/3.39.2_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-F6hYDKyNgDQfQOuR1Rsp3VRzJnWHx6aRnnIZHMNGGgbL3SBgpZTDg8MQwmxOgpCAoqZJA+JSNCydF1xGJqKOCA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: '*' react-native: '*' peerDependenciesMeta: react-dom: @@ -15488,11 +15093,11 @@ packages: react-native: optional: true dependencies: - '@tanstack/query-core': 4.6.0 - '@types/use-sync-external-store': 0.0.3 + '@babel/runtime': 7.19.0 + broadcast-channel: 3.7.0 + match-sorter: 6.3.1 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 - use-sync-external-store: 1.2.0_react@18.2.0 dev: false /react-refresh/0.11.0: @@ -15500,11 +15105,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /react-refresh/0.13.0: - resolution: {integrity: sha512-XP8A9BT0CpRBD+NYLLeIhld/RqG9+gktUjW1FkE+Vm7OCinbG1SshcK5tb9ls4kzvjZr9mOQc7HYgBngEyPAXg==} - engines: {node: '>=0.10.0'} - dev: false - /react-refresh/0.14.0: resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} engines: {node: '>=0.10.0'} @@ -15544,24 +15144,26 @@ packages: use-sidecar: 1.1.2_iapumuv4e6jcjznwuxpf4tt22e dev: false - /react-router-dom/6.3.0_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-uaJj7LKytRxZNQV8+RbzJWnJ8K2nPsOOEuX7aQstlMZKQT0164C+X2w6bnkqU3sjtLvpd5ojrezAyfZ1+0sStw==} + /react-router-dom/6.4.2_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-yM1kjoTkpfjgczPrcyWrp+OuQMyB1WleICiiGfstnQYo/S8hPEEnVjr/RdmlH6yKK4Tnj1UGXFSa7uwAtmDoLQ==} + engines: {node: '>=14'} peerDependencies: react: '>=16.8' react-dom: '>=16.8' dependencies: - history: 5.3.0 + '@remix-run/router': 1.0.2 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 - react-router: 6.3.0_react@18.2.0 + react-router: 6.4.2_react@18.2.0 dev: false - /react-router/6.3.0_react@18.2.0: - resolution: {integrity: sha512-7Wh1DzVQ+tlFjkeo+ujvjSqSJmkt1+8JO+T5xklPlgrh70y7ogx75ODRW0ThWhY7S+6yEDks8TYrtQe/aoboBQ==} + /react-router/6.4.2_react@18.2.0: + resolution: {integrity: sha512-Rb0BAX9KHhVzT1OKhMvCDMw776aTYM0DtkxqUBP8dNBom3mPXlfNs76JNGK8wKJ1IZEY1+WGj+cvZxHVk/GiKw==} + engines: {node: '>=14'} peerDependencies: react: '>=16.8' dependencies: - history: 5.3.0 + '@remix-run/router': 1.0.2 react: 18.2.0 dev: false @@ -15641,19 +15243,19 @@ packages: react-dom: 18.2.0_react@18.2.0 dev: false - /react-tsparticles/2.3.2_react@18.2.0: - resolution: {integrity: sha512-YBVB+TMHCDR2OWV/ik6BwuhRmnL1Qi5q+4IdRZSZTDyd7bzHQrSG7NubIWv8TIe++oH92dqk84+qlVSQyn0jxA==} + /react-tsparticles/2.3.3_react@18.2.0: + resolution: {integrity: sha512-bUq+uuOAFIAtXDQc3IxDaRBk6CzGwWNtlDxWLNFhLKCDEl6G1zAbd/T0HuE7iv1wCymGChaNecssVe4b9doNlg==} requiresBuild: true peerDependencies: react: '>=16' dependencies: fast-deep-equal: 3.1.3 react: 18.2.0 - tsparticles-engine: 2.3.2 + tsparticles-engine: 2.3.3 dev: false - /react-virtuoso/2.19.0_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-GeCleV9cmpYGh1Ldfgdu+4gADLzdWJ48qc4tWguFzYz7FvUSAoELe8268rR8zfIb5FcV3tqpsdvFS5i51c8jyA==} + /react-virtuoso/2.19.1_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-zF6MAwujNGy2nJWCx/Df92ay/RnV2Kj4glUZfdyadI4suAn0kAZHB1BeI7yPFVp2iSccLzFlszhakWyr+fJ4Dw==} engines: {node: '>=10'} peerDependencies: react: '>=16 || >=17 || >= 18' @@ -15948,7 +15550,7 @@ packages: mdast-squeeze-paragraphs: 4.0.0 /remove-accents/0.4.2: - resolution: {integrity: sha1-CkPTqq4egNuRngeuJUsoXZ4ce7U=} + resolution: {integrity: sha512-7pXIJqJOq5tFgG1A2Zxti3Ht8jJF337m4sowbuHsW30ZnkQFnDzy9qBNhgzX8ZLW4+UBcXiiR7SwR6pokHsxiA==} dev: false /remove-trailing-separator/1.1.0: @@ -16074,7 +15676,7 @@ packages: engines: {node: '>=0.12'} /retry/0.12.0: - resolution: {integrity: sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=} + resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} engines: {node: '>= 4'} dev: true @@ -16119,8 +15721,8 @@ packages: sprintf-js: 1.1.2 dev: true - /rollup-plugin-visualizer/5.8.1: - resolution: {integrity: sha512-NBT/xN/LWCwDM2/j5vYmjzpEAKHyclo/8Cv8AfTCwgADAG+tLJDy1vzxMw6NO0dSDjmTeRELD9UU3FwknLv0GQ==} + /rollup-plugin-visualizer/5.8.2: + resolution: {integrity: sha512-Fh7KoAa7FVVOojmyyX9ro7fBSR7mPG2cgfDbA877HM4IeJJtSZO+I/R3h/u6TB8wVP5J4pXPpTaRMSREyqCS3g==} engines: {node: '>=14'} hasBin: true peerDependencies: @@ -16129,10 +15731,9 @@ packages: rollup: optional: true dependencies: - nanoid: 3.3.4 open: 8.4.0 source-map: 0.7.4 - yargs: 17.5.1 + yargs: 17.6.0 dev: true /rollup/2.78.1: @@ -16175,8 +15776,8 @@ packages: dependencies: aproba: 1.2.0 - /rxjs/7.5.6: - resolution: {integrity: sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==} + /rxjs/7.5.7: + resolution: {integrity: sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==} dependencies: tslib: 2.4.0 dev: true @@ -16349,6 +15950,14 @@ packages: hasBin: true dependencies: lru-cache: 6.0.0 + dev: true + + /semver/7.3.8: + resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 /send/0.16.2: resolution: {integrity: sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==} @@ -16472,7 +16081,7 @@ packages: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} /sha-1/0.1.1: - resolution: {integrity: sha1-KjkwS/QburEd2e+3R07CWxqSwlc=} + resolution: {integrity: sha512-dexizf3hB7d4Jq6Cd0d/NYQiqgEqIfZIpuMfwPfvSb6h06DZKmHyUe55jYwpHC12R42wpqXO6ouhiBpRzIcD/g==} dev: true /sha.js/2.4.11: @@ -16497,7 +16106,7 @@ packages: detect-libc: 2.0.1 node-addon-api: 5.0.0 prebuild-install: 7.1.1 - semver: 7.3.7 + semver: 7.3.8 simple-get: 4.0.1 tar-fs: 2.1.1 tunnel-agent: 0.6.0 @@ -16647,9 +16256,9 @@ packages: peerDependencies: solid-js: ^1.3 dependencies: - '@babel/generator': 7.19.0 + '@babel/generator': 7.19.3 '@babel/helper-module-imports': 7.18.6 - '@babel/types': 7.19.0 + '@babel/types': 7.19.3 solid-js: 1.5.7 dev: true @@ -16797,7 +16406,7 @@ packages: dev: true /stack-trace/0.0.10: - resolution: {integrity: sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=} + resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==} dev: true /stackframe/1.3.4: @@ -16858,11 +16467,11 @@ packages: react-dom: 18.2.0_react@18.2.0 dev: true - /storybook/6.5.12_bb2lpehc4sm6fnn2zwweqmbmoy: + /storybook/6.5.12_yalvw3r2waubxycyb7k7qsruca: resolution: {integrity: sha512-VDW4u2L0NyPRTmNytgLVRyeJzCpEy0oEp9p8fSpZQHEgT/nEkzsMkLCvdovZDfF+UB2dRKj86KtHyNk41wf+Hw==} hasBin: true dependencies: - '@storybook/cli': 6.5.12_bb2lpehc4sm6fnn2zwweqmbmoy + '@storybook/cli': 6.5.12_yalvw3r2waubxycyb7k7qsruca transitivePeerDependencies: - '@storybook/mdx2-csf' - bufferutil @@ -17107,6 +16716,13 @@ packages: dependencies: inline-style-parser: 0.1.1 + /superjson/1.10.0: + resolution: {integrity: sha512-ks6I5fm5KXUbDqt4Epe1VwkKDaC9+kIj5HF7yhiHjChFne0EkFqsnTv1mdHE2IT6fq2CzLC3zeA/fw0BRIoNwA==} + engines: {node: '>=10'} + dependencies: + copy-anything: 3.0.2 + dev: false + /supports-color/2.0.0: resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==} engines: {node: '>=0.8.0'} @@ -17202,8 +16818,6 @@ packages: resolution: {integrity: sha512-YSneUCZSFDYMwk+TGq8qYFdCA3yfBRdBlS7txSq0LUmzyeqRe3a8fBQzbz9M3WS/iFT4BNf/nmw9mEzrnSaC0g==} engines: {node: '>=12.13.0'} hasBin: true - peerDependencies: - postcss: ^8.0.9 dependencies: arg: 5.0.2 chokidar: 3.5.3 @@ -17218,43 +16832,11 @@ packages: normalize-path: 3.0.0 object-hash: 3.0.0 picocolors: 1.0.0 - postcss: 8.4.16 - postcss-import: 14.1.0 - postcss-js: 4.0.0 - postcss-load-config: 3.1.4 - postcss-nested: 5.0.6 - postcss-selector-parser: 6.0.10 - postcss-value-parser: 4.2.0 - quick-lru: 5.1.1 - resolve: 1.22.1 - transitivePeerDependencies: - - ts-node - - /tailwindcss/3.1.8_postcss@8.4.16: - resolution: {integrity: sha512-YSneUCZSFDYMwk+TGq8qYFdCA3yfBRdBlS7txSq0LUmzyeqRe3a8fBQzbz9M3WS/iFT4BNf/nmw9mEzrnSaC0g==} - engines: {node: '>=12.13.0'} - hasBin: true - peerDependencies: - postcss: ^8.0.9 - dependencies: - arg: 5.0.2 - chokidar: 3.5.3 - color-name: 1.1.4 - detective: 5.2.1 - didyoumean: 1.2.2 - dlv: 1.1.3 - fast-glob: 3.2.12 - glob-parent: 6.0.2 - is-glob: 4.0.3 - lilconfig: 2.0.6 - normalize-path: 3.0.0 - object-hash: 3.0.0 - picocolors: 1.0.0 - postcss: 8.4.16 - postcss-import: 14.1.0_postcss@8.4.16 - postcss-js: 4.0.0_postcss@8.4.16 - postcss-load-config: 3.1.4_postcss@8.4.16 - postcss-nested: 5.0.6_postcss@8.4.16 + postcss: 8.4.17 + postcss-import: 14.1.0_postcss@8.4.17 + postcss-js: 4.0.0_postcss@8.4.17 + postcss-load-config: 3.1.4_postcss@8.4.17 + postcss-nested: 5.0.6_postcss@8.4.17 postcss-selector-parser: 6.0.10 postcss-value-parser: 4.2.0 quick-lru: 5.1.1 @@ -17378,7 +16960,7 @@ packages: schema-utils: 3.1.1 serialize-javascript: 5.0.1 source-map: 0.6.1 - terser: 5.15.0 + terser: 5.15.1 webpack: 4.46.0 webpack-sources: 1.4.3 transitivePeerDependencies: @@ -17405,7 +16987,7 @@ packages: jest-worker: 27.5.1 schema-utils: 3.1.1 serialize-javascript: 6.0.0 - terser: 5.15.0 + terser: 5.15.1 webpack: 5.74.0 dev: true @@ -17419,8 +17001,8 @@ packages: source-map: 0.6.1 source-map-support: 0.5.21 - /terser/5.15.0: - resolution: {integrity: sha512-L1BJiXVmheAQQy+as0oF3Pwtlo4s3Wi1X2zNZ2NxOB4wx9bdS9Vk67XQENLFdLYGCK/Z2di53mTj/hBafR+dTA==} + /terser/5.15.1: + resolution: {integrity: sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==} engines: {node: '>=10'} hasBin: true dependencies: @@ -17574,7 +17156,7 @@ packages: resolution: {integrity: sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ==} /trim/0.0.1: - resolution: {integrity: sha1-WFhUf2spB1fulczMZm+1AITEYN0=} + resolution: {integrity: sha512-YzQV+TZg4AxpKxaTHK3c3D+kRDCGVEE7LemdlQZoQXn0iennk10RsIoY6ikzAqJTc9Xjl9C1/waHom/J86ziAQ==} /trough/1.0.5: resolution: {integrity: sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==} @@ -17583,7 +17165,7 @@ packages: resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} engines: {node: '>=6.10'} - /ts-node/10.9.1_rb7lfb2dlgdf5f7m6mcvvespxa: + /ts-node/10.9.1_p2zphemn5bk5inasc666rmprwi: resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -17602,19 +17184,19 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.3 - '@types/node': 17.0.45 + '@types/node': 18.8.2 acorn: 8.8.0 acorn-walk: 8.2.0 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 4.8.3 + typescript: 4.8.4 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 dev: false - /ts-pnp/1.2.0_typescript@4.8.3: + /ts-pnp/1.2.0_typescript@4.8.4: resolution: {integrity: sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==} engines: {node: '>=6'} peerDependencies: @@ -17623,7 +17205,7 @@ packages: typescript: optional: true dependencies: - typescript: 4.8.3 + typescript: 4.8.4 dev: true /ts-toolbelt/9.6.0: @@ -17646,295 +17228,295 @@ packages: /tslib/2.4.0: resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} - /tsparticles-engine/2.3.2: - resolution: {integrity: sha512-NI0erka/fn65dt/PcLTqvjUJwRwvWiedoKFYfzvZXmWL8sgMnmdHT9cypW7p+U8hwFHa/lUkxO4U4jcYgnxH6Q==} + /tsparticles-engine/2.3.3: + resolution: {integrity: sha512-OryoHLPwMRRj+P8eC17fCi1a+KAMZM8iayystk+Xbe/QGzJ45rptvcbzKwRGkxyuLorVqfbhqLhS5Aeglx/vzQ==} requiresBuild: true dev: false - /tsparticles-interaction-external-attract/2.3.2: - resolution: {integrity: sha512-B3EuRRW27oLOOCwNN/zaVl89Wkxri765DxRQGPQwWi/e2Ty1YyOMKZAm8VQlgR2aTdP4zytGSijHcEVrevWDQA==} + /tsparticles-interaction-external-attract/2.3.3: + resolution: {integrity: sha512-EZnw1Dz2cl1fOrNlcEzpWmaMB51Qpvciue6WRHJvD0adPpm8jOUE7pZo2OlG29ONJo25ViOurTGO1MGdWd4OuQ==} dependencies: - tsparticles-engine: 2.3.2 + tsparticles-engine: 2.3.3 dev: false - /tsparticles-interaction-external-bounce/2.3.2: - resolution: {integrity: sha512-GNBO/vM/G7iWwE9aqmp69E3XZVUlcsyAwHVDcgsHdzRjrNlkJlwyucylXlt4UQQvDrWCu38scVaaEoqRz1ZyWg==} + /tsparticles-interaction-external-bounce/2.3.3: + resolution: {integrity: sha512-HoKjYvzCtvGeS0VKpba3fMfO+tTWx4Gb4fz59EKm7niZy+R+mzBr2UTh3iN6eMPiLpGKJrscdG8Qc15haGL+LA==} dependencies: - tsparticles-engine: 2.3.2 + tsparticles-engine: 2.3.3 dev: false - /tsparticles-interaction-external-bubble/2.3.2: - resolution: {integrity: sha512-yRa22pCfBtezZUPEDCP12D71oYnHTfblUXGE9ZH6NerO/zHhtkDXrgRngAgu4veN6DMgeJpaRt+yzOg6mu29BA==} + /tsparticles-interaction-external-bubble/2.3.3: + resolution: {integrity: sha512-t+lqNCQQsauGElUGJpsyv8UZSGvxgEvqlB2QpxUEjN8kadkytKBKEbx1Xm/kSkEG+hC3YiCtz2c+xvErWI/qFA==} dependencies: - tsparticles-engine: 2.3.2 + tsparticles-engine: 2.3.3 dev: false - /tsparticles-interaction-external-connect/2.3.2: - resolution: {integrity: sha512-JKd7upMI0lltZuZPTFYqvJT14fmnlj171i8yv0wPxfpENiF4HGGpNuq7COvrdE423ASlGblGKJCua9r6nNFjJA==} + /tsparticles-interaction-external-connect/2.3.3: + resolution: {integrity: sha512-DTAMqopJTgff8WSrmuzDf18Q0UFux/fLpSRpcNnt4Cba0P6MgiCjo2kyBIU6oUgwJPA2nvmWHlvdmF/Sw4e98A==} dependencies: - tsparticles-engine: 2.3.2 + tsparticles-engine: 2.3.3 dev: false - /tsparticles-interaction-external-grab/2.3.2: - resolution: {integrity: sha512-f3SNKSjdy9n2gCw0CwGSu4iHZLUHZxnlftGgcS1xOe/i100yzZ+Umn+lAPEhmNoA7Gw/rFZR4t+GFQKmAW8tRA==} + /tsparticles-interaction-external-grab/2.3.3: + resolution: {integrity: sha512-IJkxEBAyOXVdsGprfW8oCRH9movBiAGprgLxNu0hh/kCr6pOOo43Vgsb5CkR+h8uBBP8+z+rHmxSm6fKBjO5wQ==} dependencies: - tsparticles-engine: 2.3.2 + tsparticles-engine: 2.3.3 dev: false - /tsparticles-interaction-external-pause/2.3.2: - resolution: {integrity: sha512-DtbnF7lnmKIyA3lwRGp4KCv3EQY9iVnjB0WBHms3RietRtOs3Iy/Cd2m6OHbnTZ+n2yZGlXGTI3aED+/timtUQ==} + /tsparticles-interaction-external-pause/2.3.3: + resolution: {integrity: sha512-ZtlNehe+kDqIUIHfv6M11Gs/lpVy3zVeTwQ7oskxv3XR6Tc7x//383Gj6cWZE7DR3XfKv31LciY5nBX1lZu3rQ==} dependencies: - tsparticles-engine: 2.3.2 + tsparticles-engine: 2.3.3 dev: false - /tsparticles-interaction-external-push/2.3.2: - resolution: {integrity: sha512-5CpMJCr0aY3acCZPZUKfLsZQfDipCKUzmioErl3JFOfS/IdmrCdnxDnRdC+YXOQi8ElL/Z1U9uDvhAoi9oYkew==} + /tsparticles-interaction-external-push/2.3.3: + resolution: {integrity: sha512-dQVxOlxXd0P6CFowOC8Yer9LQy8Twi5tSErgLWxnLoKeAQJjFxf+ccKP6KluBaGAV3I6uUqdh+UDQL20bAesbg==} dependencies: - tsparticles-engine: 2.3.2 + tsparticles-engine: 2.3.3 dev: false - /tsparticles-interaction-external-remove/2.3.2: - resolution: {integrity: sha512-rGM3Ypfnuynj447+DhTmmc4feNeCgidG+BD85Rc2w82M4tOqL2axp2owsNfVGhfk7CFpn6ZGtH0q3DwtQ1Gdjg==} + /tsparticles-interaction-external-remove/2.3.3: + resolution: {integrity: sha512-VFBq9DSBg5JYPwNRLDONhY3UfZbbqQGmvCzOFpfbYO78OZMrcZjgZrUZIf50zdMk/lJ1zNxwVxTjxOuHqtbS0w==} dependencies: - tsparticles-engine: 2.3.2 + tsparticles-engine: 2.3.3 dev: false - /tsparticles-interaction-external-repulse/2.3.2: - resolution: {integrity: sha512-NUZFMKwtPiHIESNl7Luw312c0JOPCWvOmBjymXvW0VC80OtACEd2tXPKJfZuKgDC2MTl9+ZCGTbtTy8KPck0Gw==} + /tsparticles-interaction-external-repulse/2.3.4: + resolution: {integrity: sha512-2JeUN6XEIwepMQYhufOD/gg4Luzk7aZE1fsZbs1fdbtAkHNckmSikzAPpOgMIVGdMCkENJSGn6V+D7UpilfSMw==} dependencies: - tsparticles-engine: 2.3.2 + tsparticles-engine: 2.3.3 dev: false - /tsparticles-interaction-external-slow/2.3.2: - resolution: {integrity: sha512-9y7Xcry6IMIXoeA19eRDiJhWbykF3SrCCEbyid4oCCdiePcuo3w+r8FvJHn0LE77baKa8+v1V25qUABMf7hEYA==} + /tsparticles-interaction-external-slow/2.3.3: + resolution: {integrity: sha512-C3hCA9js3nUsmfws2A5In+F+gQGx+a+yJidIqCNeknzltQytOFsUCH6JN5KezWJqgLWTCN53hR/rdsttVKQWKQ==} dependencies: - tsparticles-engine: 2.3.2 + tsparticles-engine: 2.3.3 dev: false - /tsparticles-interaction-external-trail/2.3.2: - resolution: {integrity: sha512-dKw8WifhaDkxMSORJIzGJUj82lHVPwGU6v935tJd8VZ3po+QJi37e5imyGf7UtlmydGlt5mSBXvXQr1z+qJjlA==} + /tsparticles-interaction-external-trail/2.3.3: + resolution: {integrity: sha512-DGMSsTprE+yg9I/MSBxhFdLFE3+5VlcJOLQDCW1aupnLvZdCJ4l+Thg8rd4BaZAAeH3Ljaosp94yQx8qy8cLOQ==} dependencies: - tsparticles-engine: 2.3.2 + tsparticles-engine: 2.3.3 dev: false - /tsparticles-interaction-particles-attract/2.3.2: - resolution: {integrity: sha512-4RP9wCNYnff4wRXZDf/n1bh+BF88QIsgkTLbvL9durUyZS9x5Q/pPTaOz/L/YjjfRuocuiDxh5iqzOYjNR2BrQ==} + /tsparticles-interaction-particles-attract/2.3.3: + resolution: {integrity: sha512-K0QoPQE8F/RBg+fYd/Nz+uky4420vfDni833qurzMIMqc8dFRQ53oDHnvwVoE0HU5iUCzPCUvmps/hF5LlFvgw==} dependencies: - tsparticles-engine: 2.3.2 + tsparticles-engine: 2.3.3 dev: false - /tsparticles-interaction-particles-collisions/2.3.2: - resolution: {integrity: sha512-nzCs4r23ACo1Ke0ZV5q51lscAByQXqF8kk+0uY0mg7/E0BvypoJ/mRvyYkysmTUhPf6z1LKd8aJ2OVdX/H5sAA==} + /tsparticles-interaction-particles-collisions/2.3.3: + resolution: {integrity: sha512-Qx1IeP+WWLpfK56RJXXRrtgUQ5e7s2SmBXfj/C6DSC+aMdgFNwFw2onukZ41d81+QEsPCwgtCB6iyWc6ERnaKg==} dependencies: - tsparticles-engine: 2.3.2 + tsparticles-engine: 2.3.3 dev: false - /tsparticles-interaction-particles-links/2.3.2: - resolution: {integrity: sha512-dGlI6LTHB6JnA5BRD9dHCDtvlNNhrjZcSLhW5ux9U3eCVuoKScPBgtx43mRFNyEPSDQFyzHz9TDrN6Srii9CsQ==} + /tsparticles-interaction-particles-links/2.3.3: + resolution: {integrity: sha512-sOk0FdnP2xL2lDPzMZA1N/ZjtaKgBMnc3hHgYMWPtVQ50GpcCxhiauGTEQW/Wj6+Ja0Qpf/TJ3MwbzPqv3h59Q==} dependencies: - tsparticles-engine: 2.3.2 + tsparticles-engine: 2.3.3 dev: false - /tsparticles-move-base/2.3.2: - resolution: {integrity: sha512-URHARMw1lNslKZ6xSnqwCitXxFrZFLrsrmOsG4EJM4uAOx5vzBPLyWmmPxXFYjWRf/ZyD0M7HNn8DFEuEpuctg==} + /tsparticles-move-base/2.3.3: + resolution: {integrity: sha512-D8tBkezutSZJUepkPefeV0AlUh7hwWifbufCqDVTRyZLyCvhamPNG3G/IISK0AePh5ZhCt1VlZ4m+4fzr1DLBg==} dependencies: - tsparticles-engine: 2.3.2 + tsparticles-engine: 2.3.3 dev: false - /tsparticles-move-parallax/2.3.2: - resolution: {integrity: sha512-hG/t1UZEsUyD4oWV56hHCg6abLR6++rHqitdkX5O9Yq0dCeVwhJjB7Ac1T7/WcDohA6th3M/B69hVQ+4144cug==} + /tsparticles-move-parallax/2.3.3: + resolution: {integrity: sha512-Pb8/Ous3qXhGfvWYQYND/t/tUxFA/nx544LACBlerOv7hMnb+gWVpfRRqlGDXJNKjjgmgebipI8s6+nxNN0yvw==} dependencies: - tsparticles-engine: 2.3.2 + tsparticles-engine: 2.3.3 dev: false - /tsparticles-particles.js/2.3.2: - resolution: {integrity: sha512-IIhC7Qudold8RfC4fQ1jyVnNs5lZPt21cyBdurtoWYVPiblWCbXtUJfuMnbi1qhYyeIznkZ3gMhEVOOJ4dB+1w==} + /tsparticles-particles.js/2.3.3: + resolution: {integrity: sha512-PXlK8YVGIHkX8dPwMs4BLFHq/994oBrixUWuFQbLX+/M5LCrvvbqZIgR9/yUm1qe6RG2WCnAzoSYpogj7dPm+w==} dependencies: - tsparticles-engine: 2.3.2 + tsparticles-engine: 2.3.3 dev: false - /tsparticles-plugin-absorbers/2.3.2: - resolution: {integrity: sha512-WZ/eWiH9GHBx672hzjM8wg2u9wTFBJM8zpKmYhCKEUyjsyQ4S463dIFnB2DlKWSTGCAOcLcTuSlX/p/8wCRSZA==} + /tsparticles-plugin-absorbers/2.3.4: + resolution: {integrity: sha512-H2woja+NF405cGPrqzttjKtKP7BklgfdtKXeORFgtdQqetAPF31TqVptRvReTlF7TvLVfIq9Ct962zIQiLJ8jw==} dependencies: - tsparticles-engine: 2.3.2 + tsparticles-engine: 2.3.3 dev: false - /tsparticles-plugin-emitters/2.3.2: - resolution: {integrity: sha512-Dz40b3lqsvpYZbIDBCMMZbBEHG2rr080my1QNivEkVekRlJm/JiUVCFkKAmYjULAJ7pWAXefiSKPnA9+Dx8ilw==} + /tsparticles-plugin-emitters/2.3.4: + resolution: {integrity: sha512-idukwsKpaDhiSNk2tHsNxO9vk2u+HZnLqJpWriNtR3l2NFQBl+vwBbWrHHC3aw2hLVOcB9YWKClMSn2nZE1Jcw==} dependencies: - tsparticles-engine: 2.3.2 + tsparticles-engine: 2.3.3 dev: false - /tsparticles-plugin-polygon-mask/2.3.2: - resolution: {integrity: sha512-f760zqVm3RD3Xh3RxNJ7Wg1wYt1GC9Hso009Qhf09XEF9+vvjvqg4L1Ieck9rRMLXLn5I+gwBB+3ZhYYJuFnow==} + /tsparticles-plugin-polygon-mask/2.3.3: + resolution: {integrity: sha512-EJcIBO6xhDKPa4+o2K9RaUWDWsYlwkWQin8LLMZfFAchK/77bBz7n6L/jMkMey8NIBg1TkrNhwHSLaTa24PIjQ==} dependencies: - tsparticles-engine: 2.3.2 + tsparticles-engine: 2.3.3 dev: false - /tsparticles-shape-circle/2.3.2: - resolution: {integrity: sha512-qHerdt2fSay/fWXaWs38J5h2zYUtf09/7Le4ucHHjhghRqeOT2Wau/iJF27F2lUVstC65qrKHJzIg97KzyV09g==} + /tsparticles-shape-circle/2.3.3: + resolution: {integrity: sha512-oWiF8WUSBailuqIYu9EXtzMRzix+KnsWRLgF5FRWsXgNcnzNEe8yfCMFRHTUg/VpLzhs8ZKEf88Wm1MFywEa+A==} dependencies: - tsparticles-engine: 2.3.2 + tsparticles-engine: 2.3.3 dev: false - /tsparticles-shape-image/2.3.2: - resolution: {integrity: sha512-9cduxMSZzECbRrGJTJc8zHq/FDL3SMOpwipXlZ9bYtH441xQV742JES2sHqCVZcKgzNZwuriFz9bWBfARS9T/Q==} + /tsparticles-shape-image/2.3.3: + resolution: {integrity: sha512-8txrkUEQKmcuQ2q7AdjSoz4pN8HDEMAbqwn1LEu9VqDH1qbs1sFV33viU0ydLmQcx1IM1d9ZHRwjU0IJf/DI5A==} dependencies: - tsparticles-engine: 2.3.2 + tsparticles-engine: 2.3.3 dev: false - /tsparticles-shape-line/2.3.2: - resolution: {integrity: sha512-R8C4g1YWfhhGvdr/t3xRtZ6E979t2oH2jDp5RqsnuF/l0zBYIn0wFWYlePfWTSrqyFBD1jacWwN2zsSRMjSFAA==} + /tsparticles-shape-line/2.3.3: + resolution: {integrity: sha512-feiJXdvVQQQpm4xEH1QuDOcy3CdFHTqcmr88UjctIt/IHv4qpgaIMx9WI0b1muz2MlCVonSxpD2KSLuwS20Vhg==} dependencies: - tsparticles-engine: 2.3.2 + tsparticles-engine: 2.3.3 dev: false - /tsparticles-shape-polygon/2.3.2: - resolution: {integrity: sha512-KSTGgWO8QTKwMQSPyMIf+6Hs25/7GANfCumix6KlWr/jponDSExCNLI6P/7tN7ZnE8cWT/0GV5x6o4kwDUtn2A==} + /tsparticles-shape-polygon/2.3.3: + resolution: {integrity: sha512-dMLo6EVDwUwXTFa/6kj4h1BYqcbKQQWn/GX4RsCwKtrYaqMAK6IrzLGUWZuhMFvz5LZ9LjFE611etHndZZLFTg==} dependencies: - tsparticles-engine: 2.3.2 + tsparticles-engine: 2.3.3 dev: false - /tsparticles-shape-square/2.3.2: - resolution: {integrity: sha512-1OPs7d8wzoA8MFXdlcHXAfxnQj9Xrj3mgF6yvOrmNahXB2X58wXka/VJLTAvcMwy/BQ0/IiAFVAyCc/64XhU6w==} + /tsparticles-shape-square/2.3.3: + resolution: {integrity: sha512-QTWe3SKtZuUcC6lFboGA/JRTki84259tJ13TKFMAruBZNo2903IQML5mCq50ueZ40IlkMzo5QpFeRDde82YZ1Q==} dependencies: - tsparticles-engine: 2.3.2 + tsparticles-engine: 2.3.3 dev: false - /tsparticles-shape-star/2.3.2: - resolution: {integrity: sha512-X0i85OxwGzuKRLvzoTIr2o3adggHEPhi/e99Jlty8eElLvMbW1l2aaWGbAUiTI98KwVNjD3UhWywRTk3vwGLag==} + /tsparticles-shape-star/2.3.3: + resolution: {integrity: sha512-7Y0vLdR1PGndpbP1TpDYOsaOn7Iy/4Jc53nh1rWT/Ww2O0JRH/M/6UZfq2uAy9O2jydyRF1kd5euentPKyYyXw==} dependencies: - tsparticles-engine: 2.3.2 + tsparticles-engine: 2.3.3 dev: false - /tsparticles-shape-text/2.3.2: - resolution: {integrity: sha512-tXCYmSkamtvFv7Ahe5Wv1Qi2gvSYdUaEM2lO2vDOJcBYnYJxqE22dCNyQi5HHqQVEH7la2TAALMY5i0JdbBA+w==} + /tsparticles-shape-text/2.3.3: + resolution: {integrity: sha512-eAcfsuUNlPnL1BB/+3HAxuMBcd9z3xvCa/M9sXBJsx7XC6Si+5ThgCyPxN/2dVY/CDL0Sk1x2RV5bS/+ATErZA==} dependencies: - tsparticles-engine: 2.3.2 + tsparticles-engine: 2.3.3 dev: false - /tsparticles-slim/2.3.2: - resolution: {integrity: sha512-79mzGMlR/FosqHcNJq2yWFqYiNcJeYBUVtPGkF5ddBXnOakzki00EdfPnLv33noS6+5WW+BXVvB91UtjCwZRsQ==} + /tsparticles-slim/2.3.4: + resolution: {integrity: sha512-UGzzdTSewR2cOzFzpSTVieAotdyFoOwujntltEbSziGlgU0B3mVCYOj4F+NeZpRQcIbLiOpqVM0aYPE8rGwfDQ==} dependencies: - tsparticles-engine: 2.3.2 - tsparticles-interaction-external-attract: 2.3.2 - tsparticles-interaction-external-bounce: 2.3.2 - tsparticles-interaction-external-bubble: 2.3.2 - tsparticles-interaction-external-connect: 2.3.2 - tsparticles-interaction-external-grab: 2.3.2 - tsparticles-interaction-external-pause: 2.3.2 - tsparticles-interaction-external-push: 2.3.2 - tsparticles-interaction-external-remove: 2.3.2 - tsparticles-interaction-external-repulse: 2.3.2 - tsparticles-interaction-external-slow: 2.3.2 - tsparticles-interaction-particles-attract: 2.3.2 - tsparticles-interaction-particles-collisions: 2.3.2 - tsparticles-interaction-particles-links: 2.3.2 - tsparticles-move-base: 2.3.2 - tsparticles-move-parallax: 2.3.2 - tsparticles-particles.js: 2.3.2 - tsparticles-shape-circle: 2.3.2 - tsparticles-shape-image: 2.3.2 - tsparticles-shape-line: 2.3.2 - tsparticles-shape-polygon: 2.3.2 - tsparticles-shape-square: 2.3.2 - tsparticles-shape-star: 2.3.2 - tsparticles-shape-text: 2.3.2 - tsparticles-updater-angle: 2.3.2 - tsparticles-updater-color: 2.3.2 - tsparticles-updater-life: 2.3.2 - tsparticles-updater-opacity: 2.3.2 - tsparticles-updater-out-modes: 2.3.2 - tsparticles-updater-size: 2.3.2 - tsparticles-updater-stroke-color: 2.3.2 + tsparticles-engine: 2.3.3 + tsparticles-interaction-external-attract: 2.3.3 + tsparticles-interaction-external-bounce: 2.3.3 + tsparticles-interaction-external-bubble: 2.3.3 + tsparticles-interaction-external-connect: 2.3.3 + tsparticles-interaction-external-grab: 2.3.3 + tsparticles-interaction-external-pause: 2.3.3 + tsparticles-interaction-external-push: 2.3.3 + tsparticles-interaction-external-remove: 2.3.3 + tsparticles-interaction-external-repulse: 2.3.4 + tsparticles-interaction-external-slow: 2.3.3 + tsparticles-interaction-particles-attract: 2.3.3 + tsparticles-interaction-particles-collisions: 2.3.3 + tsparticles-interaction-particles-links: 2.3.3 + tsparticles-move-base: 2.3.3 + tsparticles-move-parallax: 2.3.3 + tsparticles-particles.js: 2.3.3 + tsparticles-shape-circle: 2.3.3 + tsparticles-shape-image: 2.3.3 + tsparticles-shape-line: 2.3.3 + tsparticles-shape-polygon: 2.3.3 + tsparticles-shape-square: 2.3.3 + tsparticles-shape-star: 2.3.3 + tsparticles-shape-text: 2.3.3 + tsparticles-updater-angle: 2.3.3 + tsparticles-updater-color: 2.3.3 + tsparticles-updater-life: 2.3.3 + tsparticles-updater-opacity: 2.3.3 + tsparticles-updater-out-modes: 2.3.3 + tsparticles-updater-size: 2.3.3 + tsparticles-updater-stroke-color: 2.3.3 dev: false - /tsparticles-updater-angle/2.3.2: - resolution: {integrity: sha512-16T0KABa5TsqJUTFCstxTPY/61C+Ezbh9BWsLnc+Q7nnMGUynr06hT4x7pY5+uur8myasyyuG7SuV0x0oBrOVw==} + /tsparticles-updater-angle/2.3.3: + resolution: {integrity: sha512-rIvfZK3KYB4sicJENfdnenjlTirVVHfvr/tcXqGxvIeWSMEnReO+IVcMTYds9ARNJDOfSZtkFwNzwD7nYCLwCg==} dependencies: - tsparticles-engine: 2.3.2 + tsparticles-engine: 2.3.3 dev: false - /tsparticles-updater-color/2.3.2: - resolution: {integrity: sha512-upN0ltRxyaPy8RDQjmNcGfzBjSKnpPym4fR0iVtrTBjOpMlFS/R8/HB5EMCS6Atc6xOM5YmS0dM4pmrgm9gQUw==} + /tsparticles-updater-color/2.3.3: + resolution: {integrity: sha512-DLWThK+eO2lCqi0tkAzNsvWr/H/0u1pd44MLcwvj9P2MFL+Jz3R58myU+cTuN+QOv4lkf3nuU0t07Mv9Tvzhjw==} dependencies: - tsparticles-engine: 2.3.2 + tsparticles-engine: 2.3.3 dev: false - /tsparticles-updater-destroy/2.3.2: - resolution: {integrity: sha512-bgFOuDL3YGwVKumNVMmFkLYrYSMgiGKC+ZPwaS5rXpjrohoO9LqPAxt+9rz+AZ+NMmd/T/efFLGXkEK5Xij2ww==} + /tsparticles-updater-destroy/2.3.3: + resolution: {integrity: sha512-AHPR1zdn8zrohfggNBQA6sUyDwmLTx7LCktDiZi03lRAbtzSv6h3U1XyQDaKtLlwu/Vt5ffvPZuX5MGSY/iCnw==} dependencies: - tsparticles-engine: 2.3.2 + tsparticles-engine: 2.3.3 dev: false - /tsparticles-updater-life/2.3.2: - resolution: {integrity: sha512-gLOEGfsk/iZ6w0O8z+vOVvl1cHcmZsKYhVLn0QxboCVdi4z7ycR2UNxQ4ZYIQdH6XVf5WqDnpnmsSSMYgf0bWg==} + /tsparticles-updater-life/2.3.3: + resolution: {integrity: sha512-NNW7WUhKaun3/nr7iBCBg25gOxBOMrfON7Xg3UWJrGPf59Q4c2k9BAO/lqPRW5JmyZ8PXVCYIPwulKP0HDkr0A==} dependencies: - tsparticles-engine: 2.3.2 + tsparticles-engine: 2.3.3 dev: false - /tsparticles-updater-opacity/2.3.2: - resolution: {integrity: sha512-5SaENyEoqAiTVmqM9hoTKhly3qWNVKjSA7pu1BJpknaPPptxRAKAL/M5XgrbaliJASh79t9TyoecypQg9TOi8Q==} + /tsparticles-updater-opacity/2.3.3: + resolution: {integrity: sha512-pA9T7h3FREMb9Xv4Qcnv/5neUdLQVHmexuhuIr6/FqrnsWOQB4+PmdetKKWxfojkFAAWzignDEF78lzzXJzIuQ==} dependencies: - tsparticles-engine: 2.3.2 + tsparticles-engine: 2.3.3 dev: false - /tsparticles-updater-out-modes/2.3.2: - resolution: {integrity: sha512-D8ulqYbYtyUhCNxqrN47TE6C9QCVQueXlxwRa5qPHN2CY10C2iVaWGhz3mBFdRDBl4YVKHqKodutJ2ENK+Y/Og==} + /tsparticles-updater-out-modes/2.3.3: + resolution: {integrity: sha512-aoVg6ecXcnZvxnPzVY8ytyNz+Y47zD2+V1OPmfhi5CnOvOHgG97msinEvY4GL3OigBKB7d21X8r3l7WkV+/5Tw==} dependencies: - tsparticles-engine: 2.3.2 + tsparticles-engine: 2.3.3 dev: false - /tsparticles-updater-roll/2.3.2: - resolution: {integrity: sha512-q01erf9MCApr6A8zvqomM03W0Y2NyprNfBccn0/LBOGSC1LjMin5PLFt96xYRE/0yeW0YLOpp+FVe9Ln+BO9gg==} + /tsparticles-updater-roll/2.3.3: + resolution: {integrity: sha512-y2ATGesKf+vTw++VNt21IYp1lEZoWOGUcPEtckcadr5cslwTTnYjvsMqbd6e4e3Iy5tZJXnUyzaPznSUcX7OFw==} dependencies: - tsparticles-engine: 2.3.2 + tsparticles-engine: 2.3.3 dev: false - /tsparticles-updater-size/2.3.2: - resolution: {integrity: sha512-Wm+N2pKShbTHJ07G6ei1H15TVo99x3M8jlOHaXGEHWJuBnTj6EGIAoShEviKDchgT8h/7CIO4/eycTmLVQRr+g==} + /tsparticles-updater-size/2.3.3: + resolution: {integrity: sha512-Ksl5e8lG0S3OkjDjwYTKEKMA5ANX0cfK01PiJsTwuKqoDCWnpuBWixHCRCyrLoG7yGBBRLb4131pVuIL6ApY1A==} dependencies: - tsparticles-engine: 2.3.2 + tsparticles-engine: 2.3.3 dev: false - /tsparticles-updater-stroke-color/2.3.2: - resolution: {integrity: sha512-pXK2LTgQtcTJN7Zhk0RxBRoxPQLCU0CQ5JwqfUN11ZVwG3aSh30hBzP8CD0A2iPAyPYojxJiiO1ASv+cFn5whA==} + /tsparticles-updater-stroke-color/2.3.3: + resolution: {integrity: sha512-HGGEe7lPjldOdzcHwmenttfOh+kIsDqxKmZzS3GiA027dpetF9OFh1dISz5d40lurffd8a/vg+kxATD0jAuZYQ==} dependencies: - tsparticles-engine: 2.3.2 + tsparticles-engine: 2.3.3 dev: false - /tsparticles-updater-tilt/2.3.2: - resolution: {integrity: sha512-wALveZcwHPrwJ9ob4RryHR9vOifZ31bQmU0i1Jb1m8EO8JOPXizDRj8yXCyRs5UN9f41gU3P+VtChiHjV5QqLA==} + /tsparticles-updater-tilt/2.3.3: + resolution: {integrity: sha512-Z9Sr/NrfDhxPulKFPujJ6rWg22fRdDVDq5ieVVTMYBcIA38DvwSDd8q7J6mi13Q7sY8N3NQ2YabflqVemGhzQA==} dependencies: - tsparticles-engine: 2.3.2 + tsparticles-engine: 2.3.3 dev: false - /tsparticles-updater-twinkle/2.3.2: - resolution: {integrity: sha512-/GdZSWt9BcTXoGlTkhvICGXHjvyr3REZhqnWRfebj8rvJdWTWyf4CoMEc7XV7gJHGJU7CNBz2wvEz3gtv3NlYw==} + /tsparticles-updater-twinkle/2.3.3: + resolution: {integrity: sha512-0zM8OBM4geQkuFVjgkzbMAEaXeOqfCotWKVSN/jyHjYghzKl/8yCQAqfs/4W8E4QmcPA5wsHqq8E09mEtRuojg==} dependencies: - tsparticles-engine: 2.3.2 + tsparticles-engine: 2.3.3 dev: false - /tsparticles-updater-wobble/2.3.2: - resolution: {integrity: sha512-yWEJlWdWct/+Y5gENd/xP4bCnRYRRU6YjEseRxEAlwbCGx0kA72NAMKjWjhk2IOSORS1vpvi+sEdgaCoXPyeOQ==} + /tsparticles-updater-wobble/2.3.3: + resolution: {integrity: sha512-AH0izo5ir6gYm0h7a7MBlo3g3hDpJApWwh/Y+Dls1LBslXsxQHILrRX3JsN/q9yA8kfgIu4aE87z7rdIE4gASA==} dependencies: - tsparticles-engine: 2.3.2 + tsparticles-engine: 2.3.3 dev: false - /tsparticles/2.3.2: - resolution: {integrity: sha512-bbCZNFy4RSAtjmQxtdwJ+JuUYIH6MRiGH+xrnSG7sngmUSFWIahw6TXSCHeSvtk4yGVPGS1z1vnNR0k3WxkVZw==} + /tsparticles/2.3.4: + resolution: {integrity: sha512-0ZZN+Pv0NhS3vKkG1zO7lGXX+TOCq/UKcaGJqjI5aOA8M7ywdsw1+rwXbKygYBrJjs4fltKTgmkA2kVCwYCeMA==} dependencies: - tsparticles-engine: 2.3.2 - tsparticles-interaction-external-trail: 2.3.2 - tsparticles-plugin-absorbers: 2.3.2 - tsparticles-plugin-emitters: 2.3.2 - tsparticles-plugin-polygon-mask: 2.3.2 - tsparticles-slim: 2.3.2 - tsparticles-updater-destroy: 2.3.2 - tsparticles-updater-roll: 2.3.2 - tsparticles-updater-tilt: 2.3.2 - tsparticles-updater-twinkle: 2.3.2 - tsparticles-updater-wobble: 2.3.2 + tsparticles-engine: 2.3.3 + tsparticles-interaction-external-trail: 2.3.3 + tsparticles-plugin-absorbers: 2.3.4 + tsparticles-plugin-emitters: 2.3.4 + tsparticles-plugin-polygon-mask: 2.3.3 + tsparticles-slim: 2.3.4 + tsparticles-updater-destroy: 2.3.3 + tsparticles-updater-roll: 2.3.3 + tsparticles-updater-tilt: 2.3.3 + tsparticles-updater-twinkle: 2.3.3 + tsparticles-updater-wobble: 2.3.3 dev: false /tsscmp/1.0.6: @@ -18077,16 +17659,16 @@ packages: /typedarray/0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - /typescript-paths/1.4.0_typescript@4.8.3: + /typescript-paths/1.4.0_typescript@4.8.4: resolution: {integrity: sha512-olt3yKj5d4ON5MpQgxvqpiN24ApsrdlRnIQFwqlbzuTjRZFQNoTOzzTJ13vyDRt7VW0cuO+g8HA+eoYfBLWWMA==} peerDependencies: typescript: ^4.7.2 dependencies: - typescript: 4.8.3 + typescript: 4.8.4 dev: true - /typescript/4.8.3: - resolution: {integrity: sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==} + /typescript/4.8.4: + resolution: {integrity: sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==} engines: {node: '>=4.2.0'} hasBin: true @@ -18098,8 +17680,8 @@ packages: resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} dev: true - /uglify-js/3.17.2: - resolution: {integrity: sha512-bbxglRjsGQMchfvXZNusUcYgiB9Hx2K4AHYXQy2DITZ9Rd+JzhX7+hoocE5Winr7z2oHvPsekkBwXtigvxevXg==} + /uglify-js/3.17.3: + resolution: {integrity: sha512-JmMFDME3iufZnBpyKL+uS78LRiC+mK55zWfM5f/pWBJfpOttXAqYfdDGRukYhJuyRinvPVAtUhvy7rlDybNtFg==} engines: {node: '>=0.8.0'} hasBin: true requiresBuild: true @@ -18229,6 +17811,13 @@ packages: resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} engines: {node: '>= 10.0.0'} + /unload/2.2.0: + resolution: {integrity: sha512-B60uB5TNBLtN6/LsgAf3udH9saB5p7gqJwcFfbOEZ8BcBHnGwCf6G/TGiEqkRAxX7zAFIUtzdrXQSdL3Q/wqNA==} + dependencies: + '@babel/runtime': 7.19.0 + detect-node: 2.1.0 + dev: false + /unpipe/1.0.0: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} @@ -18258,8 +17847,8 @@ packages: engines: {node: '>=4'} optional: true - /update-browserslist-db/1.0.9_browserslist@4.21.4: - resolution: {integrity: sha512-/xsqn21EGVdXI3EXSum1Yckj3ZVZugqyOZQ/CxYPBD/R+ko9NSUScf8tFF4dOKY+2pvSSJA/S+5B8s4Zr4kyvg==} + /update-browserslist-db/1.0.10_browserslist@4.21.4: + resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -18283,7 +17872,7 @@ packages: is-yarn-global: 0.3.0 latest-version: 5.1.0 pupa: 2.1.1 - semver: 7.3.7 + semver: 7.3.8 semver-diff: 3.1.1 xdg-basedir: 4.0.0 @@ -18478,7 +18067,7 @@ packages: dev: true /utils-merge/1.0.1: - resolution: {integrity: sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=} + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} engines: {node: '>= 0.4.0'} /uuid-browser/3.1.0: @@ -18535,7 +18124,7 @@ packages: valtio: ^1.2.5 dependencies: lodash: 4.17.21 - valtio: 1.7.0 + valtio: 1.7.0_react@18.2.0+vite@3.1.4 dev: false /valtio/1.7.0: @@ -18566,7 +18155,7 @@ packages: use-sync-external-store: 1.2.0 dev: false - /valtio/1.7.0_react@18.2.0+vite@3.1.3: + /valtio/1.7.0_react@18.2.0+vite@3.1.4: resolution: {integrity: sha512-3Tnix66EERwMcrl1rfB3ylcewOcL5L/GiPmC3FlVNreQzqf2jufEeqlNmgnLgSGchkEmH3WYVtS+x6Qw4r+yzQ==} engines: {node: '>=12.7.0'} peerDependencies: @@ -18593,11 +18182,11 @@ packages: proxy-compare: 2.3.0 react: 18.2.0 use-sync-external-store: 1.2.0_react@18.2.0 - vite: 3.1.3 + vite: 3.1.4 dev: false /varname/2.0.3: - resolution: {integrity: sha1-BejcZPu25ZFw3kSq1N3quKuHto4=} + resolution: {integrity: sha512-+DofT9mJAUALhnr9ipZ5Z2icwaEZ7DAajOZT4ffXy3MQqnXtG3b7atItLQEJCkfcJTOf9WcsywneOEibD4eqJg==} engines: {node: '>=0.10'} dev: true @@ -18626,7 +18215,27 @@ packages: resolution: {integrity: sha512-uMSDbItT78QsXM2fPdQjy43eiXoS5JBq81yziekBg3FPtgJvBDhnyo/i1ZaI7M8FLsXOmaeVzH5bjNsvcZ08Sg==} dev: true - /vite-plugin-markdown/2.1.0_vite@3.1.3: + /vite-plugin-html/3.2.0_vite@3.1.4: + resolution: {integrity: sha512-2VLCeDiHmV/BqqNn5h2V+4280KRgQzCFN47cst3WiNK848klESPQnzuC3okH5XHtgwHH/6s1Ho/YV6yIO0pgoQ==} + peerDependencies: + vite: '>=2.0.0' + dependencies: + '@rollup/pluginutils': 4.2.1 + colorette: 2.0.19 + connect-history-api-fallback: 1.6.0 + consola: 2.15.3 + dotenv: 16.0.3 + dotenv-expand: 8.0.3 + ejs: 3.1.8 + fast-glob: 3.2.12 + fs-extra: 10.1.0 + html-minifier-terser: 6.1.0 + node-html-parser: 5.4.2 + pathe: 0.2.0 + vite: 3.1.4 + dev: true + + /vite-plugin-markdown/2.1.0_vite@3.1.4: resolution: {integrity: sha512-eWLlrWzYZXEX3/HaXZo/KLjRpO72IUhbgaoFrbwB07ueXi6QfwqrgdZQfUcXTSofJCkN7GhErMC1K1RTAE0gGQ==} peerDependencies: vite: ^2.0.0 || ^3.0.0 @@ -18634,28 +18243,28 @@ packages: front-matter: 4.0.2 htmlparser2: 6.1.0 markdown-it: 12.3.2 - vite: 3.1.3_sass@1.55.0 + vite: 3.1.4_sass@1.55.0 dev: true - /vite-plugin-solid/2.3.9_solid-js@1.5.7+vite@3.1.3: + /vite-plugin-solid/2.3.9_solid-js@1.5.7+vite@3.1.4: resolution: {integrity: sha512-+lprsYgt9DVNp0kbDj2d2HWAPI13L8ff5xslk9SjiPBcsY/YUZ/1Wj0J/Oj5aiVAhwfPm8IcM3bzyHJUPlmc8w==} peerDependencies: solid-js: ^1.3.17 vite: ^3.0.0 dependencies: - '@babel/core': 7.19.1 - '@babel/preset-typescript': 7.18.6_@babel+core@7.19.1 - babel-preset-solid: 1.5.7_@babel+core@7.19.1 + '@babel/core': 7.19.3 + '@babel/preset-typescript': 7.18.6_@babel+core@7.19.3 + babel-preset-solid: 1.5.7_@babel+core@7.19.3 merge-anything: 5.0.4 solid-js: 1.5.7 solid-refresh: 0.4.1_solid-js@1.5.7 - vite: 3.1.3 + vite: 3.1.4 transitivePeerDependencies: - supports-color dev: true - /vite-plugin-ssr/0.4.38_vite@3.1.3: - resolution: {integrity: sha512-gwbbN3AkcvkevsTCbBHzjbW2EkluCxK/0ZTirh65K9VDeoKb/bW2eB0sG65qUm3CPcSDK4mJlXa6Q0wPhmHiWA==} + /vite-plugin-ssr/0.4.39_vite@3.1.4: + resolution: {integrity: sha512-3LqdsSirL5ATZIP7NDJtNyFUEix84tV6KH4PEqpZ6A55BljREZH3bHx26drD4y7n9O0cZddURHTa/5NwcAJhPQ==} engines: {node: '>=12.19.0'} hasBin: true peerDependencies: @@ -18669,34 +18278,35 @@ packages: picocolors: 1.0.0 resolve: 1.22.1 symlink-dir: 5.0.1 - vite: 3.1.3_sass@1.55.0 + vite: 3.1.4_sass@1.55.0 dev: false - /vite-plugin-svgr/2.2.1_vite@3.1.3: + /vite-plugin-svgr/2.2.1_vite@3.1.4: resolution: {integrity: sha512-+EqwahbwjETJH/ssA/66dNYyKN1cO0AStq96MuXmq5maU7AePBMf2lDKfQna49tJZAjtRz+R899BWCsUUP45Fg==} peerDependencies: vite: ^2.6.0 || 3 dependencies: '@rollup/pluginutils': 4.2.1 - '@svgr/core': 6.3.1 - vite: 3.1.3 + '@svgr/core': 6.4.0 + vite: 3.1.4 transitivePeerDependencies: + - '@babel/core' - supports-color dev: true - /vite-plugin-tsconfig-paths/1.2.0_qzzqzik23fiaove4fwm46zpole: + /vite-plugin-tsconfig-paths/1.2.0_almlqgfwpyp2i4b7lhcrozmu7m: resolution: {integrity: sha512-DpYiubYbrT3MzuJJ/DEavnbACiApoNM5RsH9HQHG5vDlTG4aRmKkwlw9gUFEeymCjvLTwmlScwtj0m02t3sgRQ==} peerDependencies: vite: '*' dependencies: - typescript-paths: 1.4.0_typescript@4.8.3 - vite: 3.1.3 + typescript-paths: 1.4.0_typescript@4.8.4 + vite: 3.1.4 transitivePeerDependencies: - typescript dev: true - /vite/3.1.3: - resolution: {integrity: sha512-/3XWiktaopByM5bd8dqvHxRt5EEgRikevnnrpND0gRfNkrMrPaGGexhtLCzv15RcCMtV2CLw+BPas8YFeSG0KA==} + /vite/3.1.4: + resolution: {integrity: sha512-JoQI08aBjY9lycL7jcEq4p9o1xUjq5aRvdH4KWaXtkSx7e7RpAh9D3IjzDWRD4Fg44LS3oDAIOG/Kq1L+82psA==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: @@ -18714,15 +18324,15 @@ packages: terser: optional: true dependencies: - esbuild: 0.15.9 - postcss: 8.4.16 + esbuild: 0.15.10 + postcss: 8.4.17 resolve: 1.22.1 rollup: 2.78.1 optionalDependencies: fsevents: 2.3.2 - /vite/3.1.3_sass@1.55.0: - resolution: {integrity: sha512-/3XWiktaopByM5bd8dqvHxRt5EEgRikevnnrpND0gRfNkrMrPaGGexhtLCzv15RcCMtV2CLw+BPas8YFeSG0KA==} + /vite/3.1.4_sass@1.55.0: + resolution: {integrity: sha512-JoQI08aBjY9lycL7jcEq4p9o1xUjq5aRvdH4KWaXtkSx7e7RpAh9D3IjzDWRD4Fg44LS3oDAIOG/Kq1L+82psA==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: @@ -18740,8 +18350,8 @@ packages: terser: optional: true dependencies: - esbuild: 0.15.9 - postcss: 8.4.16 + esbuild: 0.15.10 + postcss: 8.4.17 resolve: 1.22.1 rollup: 2.78.1 sass: 1.55.0 @@ -19175,11 +18785,11 @@ packages: yargs-parser: 20.2.9 dev: true - /yargs/17.5.1: - resolution: {integrity: sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==} + /yargs/17.6.0: + resolution: {integrity: sha512-8H/wTDqlSwoSnScvV2N/JHfLWOKuh5MVla9hqLjK3nsfyy6Y4kDSYSvkU5YCUEPOSnRXfIyx3Sq+B/IWudTo4g==} engines: {node: '>=12'} dependencies: - cliui: 7.0.4 + cliui: 8.0.1 escalade: 3.1.1 get-caller-file: 2.0.5 require-directory: 2.1.1 @@ -19227,8 +18837,8 @@ packages: logalot: 2.1.0 dev: true - /zustand/4.0.0_immer@9.0.15: - resolution: {integrity: sha512-OrsfQTnRXF1LZ9/vR/IqN9ws5EXUhb149xmPjErZnUrkgxS/gAHGy2dPNIVkVvoxrVe1sIydn4JjF0dYHmGeeQ==} + /zustand/4.1.1_immer@9.0.15: + resolution: {integrity: sha512-h4F3WMqsZgvvaE0n3lThx4MM81Ls9xebjvrABNzf5+jb3/03YjNTSgZXeyrvXDArMeV9untvWXRw1tY+ntPYbA==} engines: {node: '>=12.7.0'} peerDependencies: immer: '>=9.0' @@ -19243,8 +18853,8 @@ packages: use-sync-external-store: 1.2.0 dev: false - /zustand/4.0.0_immer@9.0.15+react@18.2.0: - resolution: {integrity: sha512-OrsfQTnRXF1LZ9/vR/IqN9ws5EXUhb149xmPjErZnUrkgxS/gAHGy2dPNIVkVvoxrVe1sIydn4JjF0dYHmGeeQ==} + /zustand/4.1.1_immer@9.0.15+react@18.2.0: + resolution: {integrity: sha512-h4F3WMqsZgvvaE0n3lThx4MM81Ls9xebjvrABNzf5+jb3/03YjNTSgZXeyrvXDArMeV9untvWXRw1tY+ntPYbA==} engines: {node: '>=12.7.0'} peerDependencies: immer: '>=9.0' diff --git a/turbo.json b/turbo.json index 6e3e8734e..5ce99f090 100644 --- a/turbo.json +++ b/turbo.json @@ -1,16 +1,14 @@ { - "$schema": "https://turborepo.org/schema.json", - "pipeline": { - "build": { - "outputs": [ - "dist/**" - ] - }, - "lint": { - "outputs": [] - }, - "dev": { - "cache": false - } - } + "$schema": "https://turborepo.org/schema.json", + "pipeline": { + "build": { + "outputs": ["dist/**"] + }, + "lint": { + "outputs": [] + }, + "dev": { + "cache": false + } + } }