From fc1c6d09064471c416c363461b96fd3aed4ddb65 Mon Sep 17 00:00:00 2001 From: Oscar Beaumont Date: Sun, 2 Oct 2022 01:16:11 +0800 Subject: [PATCH 01/16] upgrade rspc --- .vscode/extensions.json | 7 + Cargo.lock | 230 +- Cargo.toml | 4 +- apps/desktop/package.json | 22 +- apps/desktop/src-tauri/Cargo.toml | 14 +- apps/desktop/src/index.tsx | 4 +- apps/mobile/package.json | 4 +- apps/mobile/pnpm-lock.yaml | 101 +- apps/mobile/rust/Cargo.toml | 12 +- apps/mobile/rust/src/android.rs | 49 +- apps/mobile/rust/src/lib.rs | 15 +- apps/mobile/src/App.tsx | 4 +- apps/mobile/src/hooks/rspc.ts | 143 +- apps/mobile/src/stores/libraryStore.ts | 4 + apps/mobile/src/types/bindings.ts | 78 +- apps/server/Cargo.toml | 10 +- apps/server/src/main.rs | 15 +- apps/web/package.json | 20 +- apps/web/src/App.tsx | 6 +- core/Cargo.toml | 30 +- core/src/api/files.rs | 57 +- core/src/api/jobs.rs | 88 +- core/src/api/libraries.rs | 130 +- core/src/api/locations.rs | 255 +- core/src/api/mod.rs | 71 +- core/src/api/tags.rs | 253 +- core/src/api/utils/library.rs | 143 +- core/src/api/volumes.rs | 4 +- core/src/lib.rs | 6 +- crates/ffmpeg/Cargo.toml | 6 +- package.json | 10 +- packages/client/package.json | 14 +- packages/client/src/core.ts | 78 +- .../client/src/hooks/useCurrentLibrary.tsx | 4 + packages/client/src/rspc.ts | 153 +- packages/config/base.tsconfig.json | 2 +- packages/config/package.json | 8 +- packages/interface/package.json | 68 +- .../src/components/explorer/Explorer.tsx | 2 +- .../components/explorer/VirtualizedList.tsx | 5 +- packages/ui/package.json | 44 +- pnpm-lock.yaml | 2852 ++++++++--------- 42 files changed, 2474 insertions(+), 2551 deletions(-) create mode 100644 .vscode/extensions.json 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 76ad097a8..b81a8c251 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -126,6 +126,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" @@ -200,7 +214,6 @@ checksum = "c9e3356844c4d6a6d6467b8da2cffb4a2820be256f50a3a386c9d152bab31043" dependencies = [ "async-trait", "axum-core", - "base64 0.13.0", "bitflags", "bytes", "futures-util", @@ -216,10 +229,8 @@ dependencies = [ "serde", "serde_json", "serde_urlencoded", - "sha-1", "sync_wrapper", "tokio", - "tokio-tungstenite", "tower", "tower-http", "tower-layer", @@ -509,7 +520,7 @@ dependencies = [ "num-integer", "num-traits", "serde", - "time 0.1.43", + "time 0.1.44", "wasm-bindgen", "winapi", ] @@ -627,6 +638,26 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fb4a24b1aaf0fd0ce8b45161144d6f42cd91677fd5940fd431183eb023b3a2b8" +[[package]] +name = "convert_case" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca" +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.14", + "version_check", +] + [[package]] name = "core-foundation" version = "0.9.3" @@ -709,15 +740,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", "cfg-if 1.0.0", "crossbeam-utils", "memoffset", - "once_cell", "scopeguard", ] @@ -733,12 +763,11 @@ 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]] @@ -1831,6 +1860,24 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" +[[package]] +name = "httpz" +version = "0.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "566824942ad0ee59fd23ded19025b37b51137eab4e467e48f7cab325a43efa50" +dependencies = [ + "async-tungstenite", + "axum", + "base64 0.13.0", + "cookie", + "form_urlencoded", + "futures", + "http", + "hyper", + "sha1", + "tokio", +] + [[package]] name = "hyper" version = "0.14.20" @@ -1941,9 +1988,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", @@ -2211,9 +2258,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" @@ -2596,15 +2643,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" @@ -2714,9 +2752,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", @@ -2725,9 +2763,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", ] @@ -2896,9 +2934,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", @@ -2928,17 +2966,18 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-src" -version = "300.0.9+3.0.5" +version = "111.22.0+1.1.1q" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df52116687e2d276515a1cbf0b84d2fb646f519aebe65d2fa82f28c5d078f174" +checksum = "8f31f0d509d1c1ae9cada2f9539ff8f37933831fd5098879e482aa687d659853" dependencies = [ "cc", ] [[package]] name = "openssl-sys" -version = "0.9.75" -source = "git+https://github.com/spacedriveapp/rust-openssl#f49328d2fc62e5ade3a321eed75cf4b250bda8b7" +version = "0.9.76" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5230151e44c0f05157effb743e8d517472843121cf9243e8b81393edb5acd9ce" dependencies = [ "autocfg", "cc", @@ -3143,9 +3182,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", @@ -3153,9 +3192,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", @@ -3163,9 +3202,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", @@ -3176,9 +3215,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", @@ -3391,7 +3430,7 @@ dependencies = [ [[package]] name = "prisma-client-rust" version = "0.6.1" -source = "git+https://github.com//Brendonovich/prisma-client-rust.git?rev=6b59d9f0a07c4c5df1f5c97f2c6c1df7082ccac6#6b59d9f0a07c4c5df1f5c97f2c6c1df7082ccac6" +source = "git+https://github.com//Brendonovich/prisma-client-rust.git?branch=rspc-0.1.1#c580af4195c7278c1fddf12149ae38cec2c9869e" dependencies = [ "base64 0.13.0", "bigdecimal", @@ -3420,7 +3459,7 @@ dependencies = [ [[package]] name = "prisma-client-rust-cli" version = "0.6.1" -source = "git+https://github.com//Brendonovich/prisma-client-rust.git?rev=6b59d9f0a07c4c5df1f5c97f2c6c1df7082ccac6#6b59d9f0a07c4c5df1f5c97f2c6c1df7082ccac6" +source = "git+https://github.com//Brendonovich/prisma-client-rust.git?branch=rspc-0.1.1#c580af4195c7278c1fddf12149ae38cec2c9869e" dependencies = [ "datamodel", "prisma-client-rust-sdk", @@ -3435,7 +3474,7 @@ dependencies = [ [[package]] name = "prisma-client-rust-sdk" version = "0.6.1" -source = "git+https://github.com//Brendonovich/prisma-client-rust.git?rev=6b59d9f0a07c4c5df1f5c97f2c6c1df7082ccac6#6b59d9f0a07c4c5df1f5c97f2c6c1df7082ccac6" +source = "git+https://github.com//Brendonovich/prisma-client-rust.git?branch=rspc-0.1.1#c580af4195c7278c1fddf12149ae38cec2c9869e" dependencies = [ "convert_case 0.5.0", "datamodel", @@ -3540,9 +3579,9 @@ checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" [[package]] name = "proc-macro2" -version = "1.0.43" +version = "1.0.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a2ca2c61bc9f3d74d2886294ab7b9853abd9c1ad903a3ac7815c58989bb7bab" +checksum = "94e2ef8dbfc347b10c094890f778ee2e36ca9bb4262e86dc99cd217e35f3470b" dependencies = [ "unicode-ident", ] @@ -3594,7 +3633,7 @@ dependencies = [ "mach", "once_cell", "raw-cpuid", - "wasi 0.10.2+wasi-snapshot-preview1", + "wasi 0.10.0+wasi-snapshot-preview1", "web-sys", "winapi", ] @@ -3821,15 +3860,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" @@ -4009,7 +4039,7 @@ dependencies = [ "objc", "objc-foundation", "objc_id", - "raw-window-handle 0.5.0", + "raw-window-handle", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", @@ -4044,9 +4074,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", @@ -4055,13 +4085,13 @@ dependencies = [ [[package]] name = "rspc" -version = "0.0.5" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "443633b1d8808c9b4e27dce8797b9062f86ae214999c825fd9133a73d6550333" +checksum = "712fc4e2fc79297d308fa4575f19f6967bf7610e3292446dfb392738aeab5239" dependencies = [ - "axum", + "async-stream", "futures", - "nanoid", + "httpz", "serde", "serde_json", "specta", @@ -4655,12 +4685,12 @@ dependencies = [ [[package]] name = "specta" -version = "0.0.3" +version = "0.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4145d41e1881c57b714f979ef01c8add58a1984b46f8858ea67f35fd01ebd1e" +checksum = "5886f252f583ae32d4ae21c228c7a4ab3da40a7ebed646886b942f4085047394" dependencies = [ "chrono", - "convert_case 0.5.0", + "convert_case 0.6.0", "indexmap", "serde_json", "specta-macros", @@ -4900,9 +4930,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", @@ -4921,9 +4951,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", @@ -4996,7 +5026,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", @@ -5045,7 +5075,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", @@ -5137,7 +5167,7 @@ dependencies = [ "http-range", "infer", "rand 0.8.5", - "raw-window-handle 0.5.0", + "raw-window-handle", "serde", "serde_json", "tauri-utils", @@ -5157,7 +5187,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", @@ -5257,18 +5287,18 @@ checksum = "8eaa81235c7058867fa8c0e7314f33dcce9c215f535d1913822a2b3f5e289f3c" [[package]] name = "thiserror" -version = "1.0.35" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c53f98874615aea268107765aa1ed8f6116782501d18e53d08b471733bea6c85" +checksum = "10deb33631e3c9018b9baf9dcbbc4f737320d2b576bac10f6aefa048fa407e3e" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.35" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8b463991b4eab2d801e724172285ec4195c650e8ec79b149e6c2a8e6dd3f783" +checksum = "982d17546b47146b28f7c22e3d08465f6b8903d0ea13c1660d9d84a6e7adcdbb" dependencies = [ "proc-macro2", "quote", @@ -5306,11 +5336,12 @@ 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", ] @@ -5323,8 +5354,15 @@ 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" @@ -5342,9 +5380,9 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" [[package]] name = "tokio" -version = "1.21.1" +version = "1.21.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0020c875007ad96677dcc890298f4b942882c5d4eb7cc8f439fc3bf813dc9c95" +checksum = "a9e03c497dc955702ba729190dc4aac6f2a0ce97f913e5b1b5912fc5039d9099" dependencies = [ "autocfg", "bytes", @@ -5352,7 +5390,6 @@ dependencies = [ "memchr", "mio", "num_cpus", - "once_cell", "pin-project-lite", "signal-hook-registry", "socket2", @@ -5381,18 +5418,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" @@ -5804,9 +5829,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" @@ -6024,13 +6049,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", ] @@ -6337,3 +6362,8 @@ name = "xml-rs" version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2d7d3948613f75c98fd9328cfdcc45acc4d360655289d0a7d4ec931392200a3" + +[[patch.unused]] +name = "openssl-sys" +version = "0.9.75" +source = "git+https://github.com/spacedriveapp/rust-openssl#f49328d2fc62e5ade3a321eed75cf4b250bda8b7" diff --git a/Cargo.toml b/Cargo.toml index 96f10f8f7..b45727c65 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,5 +13,5 @@ resolver = "2" openssl-sys = { git = "https://github.com/spacedriveapp/rust-openssl" } [patch."https://github.com/Brendonovich/prisma-client-rust.git"] -prisma-client-rust = { git = "https://github.com//Brendonovich/prisma-client-rust.git", rev = "6b59d9f0a07c4c5df1f5c97f2c6c1df7082ccac6" } -prisma-client-rust-cli = { git = "https://github.com//Brendonovich/prisma-client-rust.git", rev = "6b59d9f0a07c4c5df1f5c97f2c6c1df7082ccac6" } +prisma-client-rust ={ git = "https://github.com//Brendonovich/prisma-client-rust.git", branch = "rspc-0.1.1" } +prisma-client-rust-cli = { git = "https://github.com//Brendonovich/prisma-client-rust.git", branch = "rspc-0.1.1" } diff --git a/apps/desktop/package.json b/apps/desktop/package.json index 818905ec2..e8fe551db 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.8.0", + "@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/Cargo.toml b/apps/desktop/src-tauri/Cargo.toml index ec1592f58..2adf75975 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 = { version = "0.1.2", features = ["tauri"] } sdcore = { 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 = ["build"] } diff --git a/apps/desktop/src/index.tsx b/apps/desktop/src/index.tsx index 815573030..a291067a7 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 } 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/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..c2a24bf98 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 @@ -64,8 +64,8 @@ importers: '@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 + '@rspc/client': 0.1.2 + '@rspc/react': 0.1.2_qxlhziqfutyqts5zm22lyyqixy '@sd/assets': file:../../packages/assets '@tanstack/react-query': 4.2.3_jk6ntyzimkrv4hwdmdgaaf5yaa byte-size: 8.1.0 @@ -81,7 +81,7 @@ 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 @@ -1863,7 +1863,7 @@ packages: 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 @@ -1877,7 +1877,7 @@ packages: 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: @@ -2091,7 +2091,7 @@ packages: react-native: ^0.0.0-0 || 0.60 - 0.69 || 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: @@ -2184,7 +2184,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 +2193,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 @@ -2243,7 +2242,7 @@ packages: dependencies: joi: 17.6.0 - /@react-native-community/cli/8.0.5_mqmjqcyqm4trh6m6pjidkcb5na: + /@react-native-community/cli/8.0.5_react-native@0.69.4: resolution: {integrity: sha512-X0AMNK+sKDJQX8eQRkqgddJsZPWlHgLryX7O9usj78UFEK8VqVYtpv08piWecfAhC2mZU4/Lww4bKu9uJ1rdyQ==} engines: {node: '>=12'} hasBin: true @@ -2255,7 +2254,7 @@ packages: '@react-native-community/cli-debugger-ui': 8.0.0 '@react-native-community/cli-doctor': 8.0.4 '@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 +2268,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 +2283,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: @@ -2310,7 +2308,7 @@ packages: '@react-navigation/native': 6.0.12_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 @@ -2345,7 +2343,7 @@ packages: '@react-navigation/native': 6.0.12_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-safe-area-context: 4.3.1_jk6ntyzimkrv4hwdmdgaaf5yaa @@ -2363,7 +2361,7 @@ packages: dependencies: '@react-navigation/native': 6.0.12_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 @@ -2378,7 +2376,7 @@ packages: 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: @@ -2401,7 +2399,7 @@ packages: '@react-navigation/native': 6.0.12_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 @@ -2434,7 +2432,7 @@ packages: '@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' @@ -2478,21 +2476,19 @@ packages: 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_qxlhziqfutyqts5zm22lyyqixy: + 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 + '@rspc/client': 0.1.2 '@tanstack/react-query': 4.2.3_jk6ntyzimkrv4hwdmdgaaf5yaa react: 18.0.0 - transitivePeerDependencies: - - react-dom - - react-native dev: false /@segment/loosely-validate-event/2.0.0: @@ -2667,7 +2663,7 @@ packages: '@tanstack/query-core': 4.2.3 '@types/use-sync-external-store': 0.0.3 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 @@ -3214,7 +3210,7 @@ packages: '@babel/preset-env': 7.18.10_@babel+core@7.18.10 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 @@ -5912,7 +5908,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 @@ -6069,10 +6065,8 @@ 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 @@ -6116,16 +6110,14 @@ packages: 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 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: @@ -6238,7 +6230,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 @@ -6861,7 +6853,7 @@ packages: dependencies: caniuse-lite: 1.0.30001374 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 @@ -7190,7 +7182,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: @@ -7220,7 +7212,7 @@ packages: 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: @@ -7239,7 +7231,7 @@ packages: normalize-svg-path: 1.1.0 parse-svg-path: 0.1.2 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 dev: false @@ -7251,7 +7243,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 +7252,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,7 +7263,7 @@ packages: dependencies: react: 18.0.0 react-freeze: 1.0.3_react@18.0.0 - react-native: 0.69.4_k6xwmnqmgysg6weibx66ue6pyi + react-native: 0.69.4_react@18.0.0 warn-once: 0.1.0 dev: false @@ -7284,7 +7276,7 @@ packages: '@svgr/core': 6.3.1 '@svgr/plugin-svgo': 6.3.1_@svgr+core@6.3.1 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: - supports-color @@ -7299,9 +7291,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,7 +7301,7 @@ 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.5_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/assets': 1.0.0 @@ -7323,7 +7315,7 @@ 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 @@ -7343,7 +7335,6 @@ packages: whatwg-fetch: 3.6.2 ws: 6.2.2 transitivePeerDependencies: - - '@babel/core' - '@babel/preset-env' - bufferutil - encoding @@ -8337,7 +8328,7 @@ packages: peerDependencies: react-native: '>=0.63.0' dependencies: - react-native: 0.69.4_k6xwmnqmgysg6weibx66ue6pyi + react-native: 0.69.4_react@18.0.0 tailwindcss: 3.1.7 transitivePeerDependencies: - ts-node diff --git a/apps/mobile/rust/Cargo.toml b/apps/mobile/rust/Cargo.toml index 42d673cfe..cbc27db7d 100644 --- a/apps/mobile/rust/Cargo.toml +++ b/apps/mobile/rust/Cargo.toml @@ -9,18 +9,18 @@ name = "sdcore" crate-type = ["staticlib", "cdylib"] # staticlib for IOS and cdylib for Android [dependencies] -once_cell = "1.13.0" +once_cell = "1.15.0" sdcore = { 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 = { version = "0.1.2", features = [] } +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 3f25a3dd4..5d35bef0d 100644 --- a/apps/mobile/rust/src/android.rs +++ b/apps/mobile/rust/src/android.rs @@ -1,7 +1,7 @@ -use crate::{CLIENT_CONTEXT, EVENT_SENDER, NODE, RUNTIME}; +use crate::{EVENT_SENDER, NODE, RUNTIME, SUBSCRIPTIONS}; use jni::objects::{JClass, JObject, JString}; use jni::JNIEnv; -use rspc::Request; +use rspc::internal::jsonrpc::{handle_json_rpc, Request, Sender, SubscriptionMap}; use sdcore::Node; use tokio::sync::mpsc::unbounded_channel; @@ -22,7 +22,7 @@ pub extern "system" fn Java_com_spacedrive_app_SDCore_registerCoreEventListener( Err(err) => { println!("Failed to serialize event: {}", err); continue; - }, + } }; let env = jvm.attach_current_thread().unwrap(); @@ -45,7 +45,7 @@ pub extern "system" fn Java_com_spacedrive_app_SDCore_handleCoreMsg( env: JNIEnv, class: JClass, query: JString, - callback: JObject, + _callback: JObject, ) { let jvm = env.get_java_vm().unwrap(); let query: String = env @@ -53,7 +53,6 @@ pub extern "system" fn Java_com_spacedrive_app_SDCore_handleCoreMsg( .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(); @@ -65,12 +64,7 @@ pub extern "system" fn Java_com_spacedrive_app_SDCore_handleCoreMsg( let data_dir: String = { let env = jvm.attach_current_thread().unwrap(); let data_dir = env - .call_method( - &class, - "getDataDirectory", - "()Ljava/lang/String;", - &[], - ) + .call_method(&class, "getDataDirectory", "()Ljava/lang/String;", &[]) .unwrap() .l() .unwrap(); @@ -78,34 +72,19 @@ pub extern "system" fn Java_com_spacedrive_app_SDCore_handleCoreMsg( env.get_string(data_dir.into()).unwrap().into() }; - let new_node = Node::new(data_dir).await.expect("Unable to create node"); + let new_node = Node::new(data_dir).await.unwrap(); node.replace(new_node.clone()); new_node - }, + } }; - let resp = serde_json::to_string( - &request - .handle( - node.get_request_context(), - &router, - &CLIENT_CONTEXT, - EVENT_SENDER.get(), - ) - .await, + handle_json_rpc( + node.get_request_context(), + request, + &router, + &mut Sender::ResponseChannel(&mut EVENT_SENDER.get().unwrap().clone()), + &mut SubscriptionMap::Mutex(&SUBSCRIPTIONS), ) - .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(); + .await; }); } diff --git a/apps/mobile/rust/src/lib.rs b/apps/mobile/rust/src/lib.rs index 1619101c2..4c9dc9510 100644 --- a/apps/mobile/rust/src/lib.rs +++ b/apps/mobile/rust/src/lib.rs @@ -1,24 +1,23 @@ -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 sdcore::{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)); +pub(crate) static NODE: Lazy, Arc)>>> = + Lazy::new(|| Mutex::new(None)); #[allow(dead_code)] -pub(crate) static CLIENT_CONTEXT: Lazy = Lazy::new(|| ClientContext { - subscriptions: Default::default(), -}); +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/hooks/rspc.ts b/apps/mobile/src/hooks/rspc.ts index 0df3939c0..613ea1390 100644 --- a/apps/mobile/src/hooks/rspc.ts +++ b/apps/mobile/src/hooks/rspc.ts @@ -1,28 +1,19 @@ -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; constructor() { @@ -41,12 +32,15 @@ export class ReactNativeTransport implements Transport { }); } - async doRequest(operation: OperationType, key: OperationKey): Promise { + async doRequest(operation: OperationType, key: string, input: any): Promise { const body = JSON.parse( await SDCore.sd_core_msg( JSON.stringify({ - operation, - key: this.transformer?.serialize(operation, key) || key + method: operation, + params: { + path: key, + input + } }) ) ); @@ -54,91 +48,60 @@ export class ReactNativeTransport implements Transport { const { status_code, message } = body; throw new RSPCError(status_code, message); } else if (body.type === 'response') { - return this.transformer?.deserialize(operation, key, body.result) || body.result; + return body.result; } 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 c3d16c9aa..d82997047 100644 --- a/apps/mobile/src/types/bindings.ts +++ b/apps/mobile/src/types/bindings.ts @@ -1,48 +1,48 @@ /* eslint-disable */ // This file was generated by [rspc](https://github.com/oscartbeaumont/rspc). Do not edit this file manually. -export type Operations = { +export type Procedures = { 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 }, + { 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.getForFile", 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", 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 }, + { 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"], result: InvalidateOperationEvent } | - { key: ["jobs.newThumbnail", LibraryArgs], result: string } + { key: "invalidateQuery", input: never, result: InvalidateOperationEvent } | + { key: "jobs.newThumbnail", input: LibraryArgs, result: string } }; export interface ConfigMetadata { version: string | null } diff --git a/apps/server/Cargo.toml b/apps/server/Cargo.toml index 99bd2e887..7ca7d8183 100644 --- a/apps/server/Cargo.toml +++ b/apps/server/Cargo.toml @@ -5,8 +5,8 @@ edition = "2021" [dependencies] sdcore = { 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 = { version = "0.1.2", 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 85892f76e..8566d052f 100644 --- a/apps/server/src/main.rs +++ b/apps/server/src/main.rs @@ -22,11 +22,9 @@ async fn main() { } std::env::current_dir() - .expect( - "Unable to get your current directory. Maybe try setting $DATA_DIR?", - ) + .expect("Unable to get your current directory. Maybe try setting $DATA_DIR?") .join("sdserver_data") - }, + } }; let port = env::var("PORT") @@ -57,13 +55,10 @@ 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(), - ); + .fallback((|| async { "404 Not Found: We're past the event horizon..." }).into_service()); let mut addr = "[::]:8080".parse::().unwrap(); // This listens on IPv6 and IPv4 addr.set_port(port); diff --git a/apps/web/package.json b/apps/web/package.json index 67d29d392..df365b134 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -8,25 +8,25 @@ "preview": "vite preview" }, "dependencies": { - "@fontsource/inter": "^4.5.11", - "@rspc/client": "^0.0.6", + "@fontsource/inter": "^4.5.12", + "@rspc/client": "^0.1.2", "@sd/client": "workspace:*", "@sd/interface": "workspace:*", "@sd/ui": "workspace:*", - "@tanstack/react-query": "^4.0.10", + "@tanstack/react-query": "^4.8.0", "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", "tailwind": "^4.0.0", - "typescript": "^4.7.4", - "vite": "^3.0.3", + "typescript": "^4.8.4", + "vite": "^3.1.4", "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/core/Cargo.toml b/core/Cargo.toml index 7551f8b1a..0e5301987 100644 --- a/core/Cargo.toml +++ b/core/Cargo.toml @@ -25,14 +25,14 @@ 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 prisma-client-rust = { git = "https://github.com/Brendonovich/prisma-client-rust.git", tag = "0.6.0", features = [ @@ -41,30 +41,30 @@ prisma-client-rust = { git = "https://github.com/Brendonovich/prisma-client-rust "migrations", "sqlite", ], default-features = false } -rspc = { version = "0.0.5", features = ["uuid", "chrono", "tracing"] } +rspc = { version = "0.1.2", 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 } 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" [dev-dependencies] diff --git a/core/src/api/files.rs b/core/src/api/files.rs index 0250e2a88..cd07c0eb2 100644 --- a/core/src/api/files.rs +++ b/core/src/api/files.rs @@ -19,25 +19,28 @@ pub struct SetFavoriteArgs { 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 - .file() - .update(file::id::equals(args.id), vec![file::note::set(args.note)]) - .exec() - .await?; + .library_mutation("setNote", |t| { + t(|_, args: SetNoteArgs, library| async move { + library + .db + .file() + .update(file::id::equals(args.id), vec![file::note::set(args.note)]) + .exec() + .await?; - invalidate_query!(library, "locations.getExplorerData"); + invalidate_query!(library, "locations.getExplorerData"); - Ok(()) + Ok(()) + }) }) - .library_mutation( - "setFavorite", - |_, args: SetFavoriteArgs, library| async move { + .library_mutation("setFavorite", |t| { + t(|_, args: SetFavoriteArgs, library| async move { library .db .file() @@ -51,17 +54,19 @@ pub(crate) fn mount() -> RouterBuilder { invalidate_query!(library, "locations.getExplorerData"); Ok(()) - }, - ) - .library_mutation("delete", |_, id: i32, library| async move { - library - .db - .file() - .delete(file::id::equals(id)) - .exec() - .await?; + }) + }) + .library_mutation("delete", |t| { + t(|_, id: i32, library| async move { + library + .db + .file() + .delete(file::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 7668d1ee8..847e72394 100644 --- a/core/src/api/jobs.rs +++ b/core/src/api/jobs.rs @@ -28,42 +28,42 @@ pub struct IdentifyUniqueFilesArgs { 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| { + 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()); + } - library - .spawn_job(Job::new( - ThumbnailJobInit { - location_id: args.id, - path: args.path, - background: false, // fix - }, - Box::new(ThumbnailJob {}), - )) - .await; + library + .spawn_job(Job::new( + ThumbnailJobInit { + location_id: args.id, + path: args.path, + background: false, // fix + }, + Box::new(ThumbnailJob {}), + )) + .await; - Ok(()) - }, - ) - .library_mutation( - "identifyUniqueFiles", - |_, args: IdentifyUniqueFilesArgs, library| async move { + Ok(()) + }, + ) + }) + .library_mutation("identifyUniqueFiles", |t| { + 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 c6c19c50a..fcfcee964 100644 --- a/core/src/api/libraries.rs +++ b/core/src/api/libraries.rs @@ -21,78 +21,84 @@ pub struct EditLibraryArgs { 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 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")); + 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_file_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()), - ]; + 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_file_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?) + 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", |ctx, name: String| async move { - Ok(ctx - .library_manager - .create(LibraryConfig { - name: name.to_string(), - ..Default::default() - }) - .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", |ctx, args: EditLibraryArgs| async move { - Ok(ctx - .library_manager - .edit(args.id, args.name, args.description) - .await?) + .mutation("edit", |t| { + t(|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 aed2faa5f..a59be9956 100644 --- a/core/src/api/locations.rs +++ b/core/src/api/locations.rs @@ -9,11 +9,11 @@ use crate::{ prisma::{file, file_path, indexer_rule, indexer_rules_in_location, location, 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}; +use super::{utils::LibraryRequest, Ctx, RouterBuilder}; #[derive(Serialize, Deserialize, Type, Debug)] pub struct ExplorerData { @@ -47,28 +47,36 @@ pub struct LocationExplorerArgs { pub cursor: Option, } -pub(crate) fn mount() -> RouterBuilder { +// 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| { + 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..e04055e00 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/tags.rs b/core/src/api/tags.rs index 111d5e242..c9a634667 100644 --- a/core/src/api/tags.rs +++ b/core/src/api/tags.rs @@ -34,146 +34,165 @@ pub struct TagUpdateArgs { 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 - .file() - .find_many(vec![file::tags::some(vec![tag_on_file::tag_id::equals( - tag_id, - )])]) - .include(file_with_paths::include()) - .exec() - .await? - .into_iter() - .map(|mut file| { - // sorry brendan - // grab the first path and tac on the name - let oldest_path = &file.paths[0]; - file.name = Some(oldest_path.name.clone()); - file.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 files: Vec = library + .db + .file() + .find_many(vec![file::tags::some(vec![tag_on_file::tag_id::equals( + tag_id, + )])]) + .include(file_with_paths::include()) + .exec() + .await? + .into_iter() + .map(|mut file| { + // sorry brendan + // grab the first path and tac on the name + let oldest_path = &file.paths[0]; + file.name = Some(oldest_path.name.clone()); + file.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(&file.cas_id) - .with_extension("webp"); + let thumb_path = library + .config() + .data_directory() + .join(THUMBNAIL_CACHE_DIR_NAME) + .join(&file.cas_id) + .with_extension("webp"); - file.has_thumbnail = thumb_path.exists(); + file.has_thumbnail = thumb_path.exists(); - ExplorerItem::Object(Box::new(file)) + ExplorerItem::Object(Box::new(file)) + }) + .collect(); + + info!("Got files {}", files.len()); + + Ok(ExplorerData { + context: ExplorerContext::Tag(tag), + items: files, }) - .collect(); - - info!("Got files {}", files.len()); - - Ok(ExplorerData { - context: ExplorerContext::Tag(tag), - items: files, }) }) - .library_query("getForFile", |_, file_id: i32, library| async move { - Ok(library - .db - .tag() - .find_many(vec![tag::tag_files::some(vec![ - tag_on_file::file_id::equals(file_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("getForFile", |t| { + t(|_, file_id: i32, library| async move { + Ok(library .db - .tag_on_file() - .delete(tag_on_file::tag_id_file_id(args.tag_id, args.file_id)) + .tag() + .find_many(vec![tag::tag_files::some(vec![ + tag_on_file::file_id::equals(file_id), + ])]) .exec() - .await?; - } else { - library + .await?) + }) + }) + .library_query("get", |t| { + t(|_, tag_id: i32, library| async move { + Ok(library .db - .tag_on_file() + .tag() + .find_unique(tag::id::equals(tag_id)) + .exec() + .await?) + }) + }) + .library_mutation("create", |t| { + t(|_, args: TagCreateArgs, library| async move { + let created_tag = library + .db + .tag() .create( - tag::id::equals(args.tag_id), - file::id::equals(args.file_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.getForFile"); + invalidate_query!(library, "tags.list"); - Ok(()) + Ok(created_tag) + }) }) - .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("assign", |t| { + t(|_, args: TagAssignArgs, library| async move { + if args.unassign { + library + .db + .tag_on_file() + .delete(tag_on_file::tag_id_file_id(args.tag_id, args.file_id)) + .exec() + .await?; + } else { + library + .db + .tag_on_file() + .create( + tag::id::equals(args.tag_id), + file::id::equals(args.file_id), + vec![], + ) + .exec() + .await?; + } - invalidate_query!(library, "tags.list"); + invalidate_query!(library, "tags.getForFile"); - Ok(()) + Ok(()) + }) }) - .library_mutation("delete", |_, tag_id: i32, library| async move { - library - .db - .tag() - .delete(tag::id::equals(tag_id)) - .exec() - .await?; + .library_mutation("update", |t| { + 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?; - invalidate_query!(library, "tags.list"); + invalidate_query!(library, "tags.list"); - Ok(()) + Ok(()) + }) + }) + .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"); + + Ok(()) + }) }) } diff --git a/core/src/api/utils/library.rs b/core/src/api/utils/library.rs index 4062b94d4..f776f4967 100644 --- a/core/src/api/utils/library.rs +++ b/core/src/api/utils/library.rs @@ -1,5 +1,8 @@ use futures::{Future, Stream}; -use rspc::{internal::specta, ErrorCode, IntoLayerResult, Type}; +use rspc::{ + internal::{specta, BuiltProcedureBuilder, MiddlewareBuilderLike, UnbuiltProcedureBuilder}, + ErrorCode, RequestLayer, SerializeMarker, Type, +}; use serde::{de::DeserializeOwned, Deserialize, Serialize}; use uuid::Uuid; @@ -12,116 +15,136 @@ 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: fn(UnbuiltProcedureBuilder) -> BuiltProcedureBuilder, ) -> Self where TArg: DeserializeOwned + specta::Type + Send + 'static, TResult: Future> + Send + 'static, - T: IntoLayerResult + Send + Serialize + specta::Type; + T: RequestLayer + Serialize + specta::Type + Send, + TResolver: Fn(Ctx, TArg, LibraryContext) -> TResult + Send + Sync + 'static; - fn library_mutation( + fn library_mutation( self, key: &'static str, - resolver: fn(Ctx, TArg, LibraryContext) -> TResult, + builder: fn(UnbuiltProcedureBuilder) -> BuiltProcedureBuilder, ) -> Self where TArg: DeserializeOwned + specta::Type + Send + 'static, TResult: Future> + Send + 'static, - T: IntoLayerResult + Send + Serialize + specta::Type; + T: RequestLayer + Serialize + specta::Type + Send, + TResolver: Fn(Ctx, TArg, LibraryContext) -> TResult + Send + Sync + 'static; - fn library_subscription( + fn library_subscription( self, key: &'static str, - resolver: fn(Ctx, TArg, Uuid) -> T, + builder: 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 + Sync + Send + 'static, + TResult: Serialize + specta::Type, + // TODO: This should take the 'LibraryContext' not 'Uuid' + 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: fn(UnbuiltProcedureBuilder) -> BuiltProcedureBuilder, ) -> Self where TArg: DeserializeOwned + specta::Type + Send + 'static, TResult: Future> + Send + 'static, - T: IntoLayerResult + Send + Serialize + specta::Type, + T: RequestLayer + Serialize + specta::Type + Send, + TResolver: Fn(Ctx, TArg, LibraryContext) -> TResult + Send + Sync + 'static, { - 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| { + t(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(), + ) + })?; - resolver(ctx, arg.arg, library).await + let resolver = builder(UnbuiltProcedureBuilder::default()).resolver; + resolver(ctx, arg.arg, library).await + }) }) } - fn library_mutation( + fn library_mutation( self, key: &'static str, - resolver: fn(Ctx, TArg, LibraryContext) -> TResult, + builder: fn(UnbuiltProcedureBuilder) -> BuiltProcedureBuilder, ) -> Self where TArg: DeserializeOwned + specta::Type + Send + 'static, TResult: Future> + Send + 'static, - T: IntoLayerResult + Send + Serialize + specta::Type, + T: RequestLayer + Serialize + specta::Type + Send, + TResolver: Fn(Ctx, TArg, LibraryContext) -> TResult + Send + Sync + 'static, { - 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| { + t(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(), + ) + })?; - resolver(ctx, arg.arg, library).await + let resolver = builder(UnbuiltProcedureBuilder::default()).resolver; + resolver(ctx, arg.arg, library).await + }) }) } - fn library_subscription( + fn library_subscription( self, key: &'static str, - resolver: fn(Ctx, TArg, Uuid) -> T, + builder: fn(UnbuiltProcedureBuilder) -> BuiltProcedureBuilder, ) -> Self where - TArg: DeserializeOwned + specta::Type + Send + 'static, - T: Stream + Send + 'static, + TArg: DeserializeOwned + specta::Type + 'static, + TStream: Stream + Sync + Send + '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| { + 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) + let resolver = builder(UnbuiltProcedureBuilder::default()).resolver; + 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 3ab679658..11f4cf2f0 100644 --- a/core/src/lib.rs +++ b/core/src/lib.rs @@ -66,7 +66,11 @@ 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)) .init(); diff --git a/crates/ffmpeg/Cargo.toml b/crates/ffmpeg/Cargo.toml index 216a7103b..b3b65d421 100644 --- a/crates/ffmpeg/Cargo.toml +++ b/crates/ffmpeg/Cargo.toml @@ -13,10 +13,10 @@ resolver = "2" [dependencies] ffmpeg-sys-next = "5.1.1" -thiserror = "1.0.35" +thiserror = "1.0.37" webp = "0.2.2" -tokio = { version = "1.21.1", features = ["fs", "rt"] } +tokio = { version = "1.21.2", features = ["fs", "rt"] } [dev-dependencies] tempfile = "3.3.0" -tokio = { version = "1.21.1", features = ["fs", "rt", "macros"] } +tokio = { version = "1.21.2", features = ["fs", "rt", "macros"] } diff --git a/package.json b/package.json index ab0932e3d..0ba1d1873 100644 --- a/package.json +++ b/package.json @@ -21,13 +21,13 @@ }, "devDependencies": { "@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", - "typescript": "^4.7.4" + "typescript": "^4.8.4" }, "overrides": { "vite-plugin-svgr": "https://github.com/spacedriveapp/vite-plugin-svgr#cb4195b69849429cdb18d1f12381676bf9196a84" diff --git a/packages/client/package.json b/packages/client/package.json index 4ed47610f..394c8eed2 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -17,24 +17,24 @@ "preset": "scripts/jest/node" }, "dependencies": { - "@rspc/client": "^0.0.6", - "@rspc/react": "^0.0.6", + "@rspc/client": "^0.1.2", + "@rspc/react": "^0.1.2", "@sd/config": "workspace:*", "@sd/interface": "workspace:*", - "@tanstack/react-query": "^4.0.10", + "@tanstack/react-query": "^4.8.0", "eventemitter3": "^4.0.7", "immer": "^9.0.15", "lodash": "^4.17.21", "valtio": "^1.7.0", "valtio-persist": "^1.0.2", - "zustand": "4.0.0" + "zustand": "4.1.1" }, "devDependencies": { - "@types/lodash": "^4.14.182", - "@types/react": "^18.0.15", + "@types/lodash": "^4.14.186", + "@types/react": "^18.0.21", "scripts": "*", "tsconfig": "*", - "typescript": "^4.7.4" + "typescript": "^4.8.4" }, "peerDependencies": { "react": "^18.2.0" diff --git a/packages/client/src/core.ts b/packages/client/src/core.ts index c3d16c9aa..d82997047 100644 --- a/packages/client/src/core.ts +++ b/packages/client/src/core.ts @@ -1,48 +1,48 @@ /* eslint-disable */ // This file was generated by [rspc](https://github.com/oscartbeaumont/rspc). Do not edit this file manually. -export type Operations = { +export type Procedures = { 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 }, + { 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.getForFile", 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", 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 }, + { 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"], result: InvalidateOperationEvent } | - { key: ["jobs.newThumbnail", LibraryArgs], result: string } + { key: "invalidateQuery", input: never, result: InvalidateOperationEvent } | + { key: "jobs.newThumbnail", input: LibraryArgs, result: string } }; export interface ConfigMetadata { version: string | null } diff --git a/packages/client/src/hooks/useCurrentLibrary.tsx b/packages/client/src/hooks/useCurrentLibrary.tsx index 53cc877a3..d9d02e43f 100644 --- a/packages/client/src/hooks/useCurrentLibrary.tsx +++ b/packages/client/src/hooks/useCurrentLibrary.tsx @@ -22,6 +22,10 @@ export const LibraryContextProvider = ({ return {children}; }; +export function getLibraryIdRaw(): string | null { + return currentLibraryUuidStore.id; +} + // this is a hook to get the current library loaded into the UI. It takes care of a bunch of invariants under the hood. export const useCurrentLibrary = () => { const currentLibraryUuid = useSnapshot(currentLibraryUuidStore).id; diff --git a/packages/client/src/rspc.ts b/packages/client/src/rspc.ts index fa2aff113..086363f16 100644 --- a/packages/client/src/rspc.ts +++ b/packages/client/src/rspc.ts @@ -1,120 +1,61 @@ -import { RSPCError } from '@rspc/client'; +import { ProcedureDef } from '@rspc/client'; import { createReactQueryHooks } from '@rspc/react'; -import { - QueryClient, - UseInfiniteQueryOptions, - UseInfiniteQueryResult, - UseMutationOptions, - UseMutationResult, - UseQueryOptions, - UseQueryResult, - useMutation as _useMutation -} from '@tanstack/react-query'; +import { QueryClient } from '@tanstack/react-query'; -import { LibraryArgs, Operations } from './core'; -import { useCurrentLibrary } from './index'; +import { LibraryArgs, Procedures } from './core'; +import { getLibraryIdRaw } from './index'; export const queryClient = new QueryClient(); -export const rspc = createReactQueryHooks(); +export const rspc = createReactQueryHooks(); -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 { library } = useCurrentLibrary(); - - if (!library?.uuid) throw new Error(`Attempted to do library query with no library set!`); - // @ts-ignore - return rspc.useQuery( - // @ts-ignore - [key[0], { library_id: library?.uuid || '', arg: key[1] || null }], - options - ); -} - -export function useInfiniteLibraryQuery( - key: LibraryQueryArgs extends null | undefined ? [K] : [K, LibraryQueryArgs], - options?: UseInfiniteQueryOptions, RSPCError> -): UseInfiniteQueryResult, RSPCError> { - const { library } = useCurrentLibrary(); - - if (!library?.uuid) throw new Error(`Attempted to do library query with no library set!`); - // @ts-ignore - return rspc.useInfiniteQuery( - // @ts-ignore - [key[0], { library_id: library?.uuid || '', 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 { library } = useCurrentLibrary(); - if (!library?.uuid) 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?.uuid || '', 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) => { - let key = [invalidateOperation.key]; + onData: (invalidateOperation) => { + const key = [invalidateOperation.key]; if (invalidateOperation.arg !== null) { key.concat(invalidateOperation.arg); } diff --git a/packages/config/base.tsconfig.json b/packages/config/base.tsconfig.json index 192c236c5..819f5cfbd 100644 --- a/packages/config/base.tsconfig.json +++ b/packages/config/base.tsconfig.json @@ -15,7 +15,7 @@ "noUnusedLocals": false, "noUnusedParameters": false, "preserveWatchOutput": true, - "skipLibCheck": false, + "skipLibCheck": true, "strict": true, "allowSyntheticDefaultImports": true, "resolveJsonModule": true, diff --git a/packages/config/package.json b/packages/config/package.json index 6d9f656ba..f997cf726 100644 --- a/packages/config/package.json +++ b/packages/config/package.json @@ -7,11 +7,11 @@ "eslint-react.js" ], "devDependencies": { - "eslint": "^8.21.0", - "@typescript-eslint/eslint-plugin": "^5.30.7", - "@typescript-eslint/parser": "^5.30.7", + "@typescript-eslint/eslint-plugin": "^5.38.1", + "@typescript-eslint/parser": "^5.38.1", + "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" } } diff --git a/packages/interface/package.json b/packages/interface/package.json index d875a80df..370e734a2 100644 --- a/packages/interface/package.json +++ b/packages/interface/package.json @@ -15,82 +15,82 @@ "lint": "eslint src/**/*.{ts,tsx} && tsc --noEmit" }, "dependencies": { - "@fontsource/inter": "^4.5.11", - "@headlessui/react": "^1.6.6", - "@heroicons/react": "^2.0.10", + "@fontsource/inter": "^4.5.12", + "@headlessui/react": "^1.7.2", + "@heroicons/react": "^2.0.11", "@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-tooltip": "^1.0.0", "@sd/assets": "workspace:*", "@sd/client": "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.8.0", + "@tanstack/react-query-devtools": "^4.8.0", "@tanstack/react-virtual": "3.0.0-beta.18", - "@types/styled-components": "^5.1.25", - "@vitejs/plugin-react": "^2.0.0", - "autoprefixer": "^10.4.7", + "@types/styled-components": "^5.1.26", + "@vitejs/plugin-react": "^2.1.0", + "autoprefixer": "^10.4.12", "byte-size": "^8.1.0", "clsx": "^1.2.1", - "date-fns": "^2.29.2", + "date-fns": "^2.29.3", "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", "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.1", + "react-router-dom": "6.4.1", + "react-scrollbars-custom": "^4.1.1", "react-spline": "^1.2.1", - "react-transition-group": "^4.4.2", - "react-virtuoso": "^2.16.5", - "rooks": "^5.14.0", - "styled-components": "^5.3.5", - "tailwindcss": "^3.1.6", + "react-transition-group": "^4.4.5", + "react-virtuoso": "^2.19.0", + "rooks": "^7.4.0", + "styled-components": "^5.3.6", + "tailwindcss": "^3.1.8", "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", - "zod": "^3.18.0", - "zustand": "4.0.0" + "zod": "^3.19.1", + "zustand": "4.1.1" }, "devDependencies": { "@sd/config": "workspace:*", "@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.7.23", "@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": "^1.3.1", - "concurrently": "^7.3.0", + "concurrently": "^7.4.0", "prettier": "^2.7.1", - "typescript": "^4.7.4", - "vite": "^3.0.3", + "typescript": "^4.8.4", + "vite": "^3.1.4", "vite-plugin-svgr": "^2.2.1" } } diff --git a/packages/interface/src/components/explorer/Explorer.tsx b/packages/interface/src/components/explorer/Explorer.tsx index 7dcf6911f..df170d5df 100644 --- a/packages/interface/src/components/explorer/Explorer.tsx +++ b/packages/interface/src/components/explorer/Explorer.tsx @@ -14,7 +14,7 @@ export default function Explorer(props: Props) { const { library } = useCurrentLibrary(); rspc.useSubscription(['jobs.newThumbnail', { library_id: library!.uuid, arg: null }], { - onNext: (cas_id) => { + onData: (cas_id) => { expStore.addNewThumbnail(cas_id); } }); diff --git a/packages/interface/src/components/explorer/VirtualizedList.tsx b/packages/interface/src/components/explorer/VirtualizedList.tsx index d668bffb2..3e6b11fe6 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 { useVirtualizer } from '@tanstack/react-virtual'; -import { memo, useCallback, useLayoutEffect, useMemo, useRef, useState } from 'react'; +import { useCallback, 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/ui/package.json b/packages/ui/package.json index 2241e948b..bed169404 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -17,45 +17,45 @@ "storybook:build": "build-storybook" }, "dependencies": { - "@headlessui/react": "^1.6.6", - "@heroicons/react": "^2.0.10", + "@headlessui/react": "^1.7.2", + "@heroicons/react": "^2.0.11", "@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.9", - "@storybook/addon-essentials": "^6.5.9", - "@storybook/addon-interactions": "^6.5.9", - "@storybook/addon-links": "^6.5.9", - "@storybook/addon-postcss": "3.0.0-alpha.1", - "@storybook/builder-webpack5": "^6.5.9", - "@storybook/manager-webpack5": "^6.5.9", + "@storybook/addon-actions": "^6.5.12", + "@storybook/addon-essentials": "^6.5.12", + "@storybook/addon-interactions": "^6.5.12", + "@storybook/addon-links": "^6.5.12", + "@storybook/addon-postcss": "2.0.0", + "@storybook/builder-webpack5": "^6.5.12", + "@storybook/manager-webpack5": "^6.5.12", "@storybook/preset-scss": "^1.0.3", - "@storybook/react": "^6.5.9", + "@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 0c3ead989..4ceeb59e0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,63 +5,63 @@ 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 - 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 - 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.8.0 + '@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.8.0_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 @@ -70,38 +70,38 @@ 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 + '@headlessui/react': ^1.7.2 '@heroicons/react': ^2.0.11 - '@icons-pack/react-simple-icons': ^5.2.0 + '@icons-pack/react-simple-icons': ^5.7.0 '@sd/assets': link:../../packages/assets '@sd/config': link:../../packages/config '@sd/interface': link:../../packages/interface '@sd/ui': link:../../packages/ui - '@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.7.23 '@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 @@ -109,29 +109,29 @@ importers: markdown-yaml-metadata-parser: ^3.0.0 marked: ^4.1.0 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.2 + 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.2 + typescript: ^4.8.4 + vite: ^3.1.4 + vite-plugin-markdown: ^2.1.0 + vite-plugin-ssr: ^0.4.38 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 + '@icons-pack/react-simple-icons': 5.7.0_react@18.2.0 '@sd/assets': link:../../packages/assets '@sd/interface': link:../../packages/interface '@sd/ui': link:../../packages/ui @@ -139,11 +139,11 @@ importers: '@types/compression': 1.7.2 '@types/express': 4.17.14 '@types/marked': 4.0.7 - '@types/node': 17.0.45 + '@types/node': 18.7.23 '@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 @@ -159,11 +159,11 @@ importers: react-hook-form: 7.36.1_react@18.2.0 react-tsparticles: 2.3.2_react@18.2.0 sirv: 2.0.2 - ts-node: 10.9.1_rb7lfb2dlgdf5f7m6mcvvespxa + ts-node: 10.9.1_gbhfbbeqrol7fxixnzbkbuanxe 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 + typescript: 4.8.4 + vite: 3.1.4_sass@1.55.0 + vite-plugin-ssr: 0.4.38_vite@3.1.4 devDependencies: '@sd/config': link:../../packages/config '@tailwindcss/line-clamp': 0.4.2 @@ -171,108 +171,108 @@ 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.12 + '@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.8.0 + '@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 tailwind: ^4.0.0 - typescript: ^4.7.4 - vite: ^3.0.3 + typescript: ^4.8.4 + vite: ^3.1.4 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 + '@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.8.0_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 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-svgr: 2.2.1_vite@3.1.4 + vite-plugin-tsconfig-paths: 1.2.0_almlqgfwpyp2i4b7lhcrozmu7m packages/assets: specifiers: {} 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:* '@sd/interface': workspace:* - '@tanstack/react-query': ^4.0.10 - '@types/lodash': ^4.14.182 - '@types/react': ^18.0.15 + '@tanstack/react-query': ^4.8.0 + '@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_6whdt7z2dcc6pbhv5hm3vpwf44 '@sd/config': link:../config '@sd/interface': link:../interface - '@tanstack/react-query': 4.6.0 + '@tanstack/react-query': 4.8.0 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.38.1 + '@typescript-eslint/parser': ^5.38.1 + 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.38.1_gofx6msuqd4luqedfouzks2s4u + '@typescript-eslint/parser': 5.38.1_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 @@ -280,80 +280,80 @@ importers: packages/interface: specifiers: - '@fontsource/inter': ^4.5.11 - '@headlessui/react': ^1.6.6 - '@heroicons/react': ^2.0.10 + '@fontsource/inter': ^4.5.12 + '@headlessui/react': ^1.7.2 + '@heroicons/react': ^2.0.11 '@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-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.8.0 + '@tanstack/react-query-devtools': ^4.8.0 '@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.7.23 '@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/styled-components': ^5.1.25 + '@types/styled-components': ^5.1.26 '@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 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.1 + react-router-dom: 6.4.1 + react-scrollbars-custom: ^4.1.1 react-spline: ^1.2.1 - react-transition-group: ^4.4.2 - react-virtuoso: ^2.16.5 - rooks: ^5.14.0 - styled-components: ^5.3.5 - tailwindcss: ^3.1.6 - typescript: ^4.7.4 + react-transition-group: ^4.4.5 + react-virtuoso: ^2.19.0 + rooks: ^7.4.0 + styled-components: ^5.3.6 + 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 @@ -361,19 +361,19 @@ importers: '@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-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.8.0_biqbaboplfbrettd7655fr4n2y + '@tanstack/react-query-devtools': 4.8.0_nscguit52pwjmvr4nqvhrqfsfq '@tanstack/react-virtual': 3.0.0-beta.18_react@18.2.0 '@types/styled-components': 5.1.26 - '@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 @@ -396,28 +396,28 @@ 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.1_react@18.2.0 + react-router-dom: 6.4.1_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 - rooks: 5.14.1_biqbaboplfbrettd7655fr4n2y - styled-components: 5.3.5_biqbaboplfbrettd7655fr4n2y + rooks: 7.4.0_biqbaboplfbrettd7655fr4n2y + styled-components: 5.3.6_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.7.23 '@types/pretty-bytes': 5.2.0 '@types/react': 18.0.21 '@types/react-dom': 18.0.6 @@ -427,90 +427,90 @@ 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.2 + '@heroicons/react': ^2.0.11 '@radix-ui/react-context-menu': ^1.0.0 '@radix-ui/react-dropdown-menu': ^1.0.0 '@sd/config': workspace:* - '@storybook/addon-actions': ^6.5.9 - '@storybook/addon-essentials': ^6.5.9 - '@storybook/addon-interactions': ^6.5.9 - '@storybook/addon-links': ^6.5.9 - '@storybook/addon-postcss': 3.0.0-alpha.1 - '@storybook/builder-webpack5': ^6.5.9 - '@storybook/manager-webpack5': ^6.5.9 + '@storybook/addon-actions': ^6.5.12 + '@storybook/addon-essentials': ^6.5.12 + '@storybook/addon-interactions': ^6.5.12 + '@storybook/addon-links': ^6.5.12 + '@storybook/addon-postcss': 2.0.0 + '@storybook/builder-webpack5': ^6.5.12 + '@storybook/manager-webpack5': ^6.5.12 '@storybook/preset-scss': ^1.0.3 - '@storybook/react': ^6.5.9 + '@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 '@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 + 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': 3.0.0-alpha.1 - '@storybook/builder-webpack5': 6.5.12_bb2lpehc4sm6fnn2zwweqmbmoy - '@storybook/manager-webpack5': 6.5.12_bb2lpehc4sm6fnn2zwweqmbmoy + '@storybook/addon-postcss': 2.0.0 + '@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: @@ -527,8 +527,8 @@ packages: dependencies: '@babel/highlight': 7.18.6 - /@babel/compat-data/7.19.1: - resolution: {integrity: sha512-72a9ghR0gnESIa7jBN53U32FOVCEoztyIlKaNoU05zRhEecduGK9L9c3ww7Mp06JiR+0ls0GBPFJQwwtjn9ksg==} + /@babel/compat-data/7.19.3: + resolution: {integrity: sha512-prBHMK4JYYK+wDjJF1q99KK4JLL+egWS4nmNqdlMUgCExMZ+iZW0hGhyC3VEbsPjvaN0TBhW//VIFwBrk8sEiw==} engines: {node: '>=6.9.0'} /@babel/core/7.12.9: @@ -536,13 +536,13 @@ packages: 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 @@ -561,7 +561,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 @@ -577,20 +577,20 @@ packages: - supports-color dev: true - /@babel/core/7.19.1: - resolution: {integrity: sha512-1H8VgqXme4UXCRv7/Wa1bq7RVymKOzC7znjyFM8KiEzwFqcKUKYNoQef4GhdklgNvoBXyW4gYhuBNCM5o1zImw==} + /@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.19.0 - '@babel/helper-compilation-targets': 7.19.1_@babel+core@7.19.1 + '@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.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 @@ -608,11 +608,11 @@ packages: source-map: 0.5.7 dev: true - /@babel/generator/7.19.0: - resolution: {integrity: sha512-S1ahxf1gZ2dpoiFgA+ohK9DIpz50bJ0CWs7Zlzb54Z4sG8qmdIrGrVqmy1sAtTVRb+9CU6U8VqT9L0Zj7hxHVg==} + /@babel/generator/7.19.3: + resolution: {integrity: sha512-fqVZnmp1ncvZU757UzDheKZpfPgatqY59XtW2/j/18H7u76akb8xqvjw82f+i2UKd/ksYsSick/BCLQUUtJ/qQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.19.0 + '@babel/types': 7.19.3 '@jridgewell/gen-mapping': 0.3.2 jsesc: 2.5.2 @@ -620,47 +620,47 @@ packages: 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==} + /@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.1 + '@babel/compat-data': 7.19.3 '@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==} + /@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.19.1 - '@babel/core': 7.19.1 + '@babel/compat-data': 7.19.3 + '@babel/core': 7.19.3 '@babel/helper-validator-option': 7.18.6 browserslist: 4.21.4 semver: 6.3.0 - /@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 @@ -671,26 +671,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 @@ -698,13 +698,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 @@ -721,32 +721,32 @@ 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.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==} @@ -758,8 +758,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 @@ -767,7 +767,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==} @@ -776,17 +776,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 @@ -797,8 +797,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 @@ -806,19 +806,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==} @@ -838,8 +838,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 @@ -848,8 +848,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 @@ -869,156 +869,156 @@ packages: '@babel/types': 7.17.0 dev: true - /@babel/parser/7.19.1: - resolution: {integrity: sha512-h7RCSorm1DdTVGJf3P2Mhj3kdnkmF/EiysUkzS2TdgAYqyjFdMQJbVuXOBej2SBJaXan/lIVtT6KkGbyyq753A==} + /@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.0 + '@babel/types': 7.19.3 - /@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==} @@ -1030,159 +1030,159 @@ packages: '@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: @@ -1193,37 +1193,37 @@ 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: + /@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.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: 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: @@ -1234,106 +1234,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 @@ -1344,121 +1344,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 @@ -1466,13 +1466,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 @@ -1481,44 +1481,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: @@ -1533,322 +1533,322 @@ 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/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-react-display-name/7.18.6_@babel+core@7.19.1: + /@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.19.1 + '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-react-jsx-development/7.18.6_@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==} 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/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.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: + /@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.19.1 + '@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.19.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 - /@babel/plugin-transform-react-pure-annotations/7.18.6_@babel+core@7.19.1: + /@babel/plugin-transform-react-pure-annotations/7.18.6_@babel+core@7.19.3: 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/core': 7.19.3 '@babel/helper-annotate-as-pure': 7.18.6 '@babel/helper-plugin-utils': 7.19.0 - /@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/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-template-literals/7.18.9_@babel+core@7.19.1: + /@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.19.1 + '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 - /@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==} + /@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.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/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 + '@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.3 semver: 6.3.0 transitivePeerDependencies: - supports-color - /@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: + /@babel/preset-react/7.18.6_@babel+core@7.19.3: resolution: {integrity: sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==} 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-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/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-development': 7.18.6_@babel+core@7.19.3 + '@babel/plugin-transform-react-pure-annotations': 7.18.6_@babel+core@7.19.3 - /@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 @@ -1896,8 +1896,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==} @@ -1917,35 +1917,35 @@ packages: - supports-color dev: true - /@babel/traverse/7.19.1: - resolution: {integrity: sha512-0j/ZfZMxKukDaag2PtOPDbwuELqIar6lLskVPPJDjXMXjfLb1Obo/1yjxIGqqAJrmfaTIY3z2wFLAQ7qSkLsuA==} + /@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.19.0 + '@babel/generator': 7.19.3 '@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 + '@babel/parser': 7.19.3 + '@babel/types': 7.19.3 debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color - /@babel/traverse/7.19.1_supports-color@5.5.0: - resolution: {integrity: sha512-0j/ZfZMxKukDaag2PtOPDbwuELqIar6lLskVPPJDjXMXjfLb1Obo/1yjxIGqqAJrmfaTIY3z2wFLAQ7qSkLsuA==} + /@babel/traverse/7.19.3_supports-color@5.5.0: + resolution: {integrity: sha512-qh5yf6149zhq2sgIXmwjnsvmnNQC2iw70UFjp4olxucKrWd/dvlUsBI88VSLUsnMNF7/vnOiA+nk1+yLoCqROQ==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.18.6 - '@babel/generator': 7.19.0 + '@babel/generator': 7.19.3 '@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 + '@babel/parser': 7.19.3 + '@babel/types': 7.19.3 debug: 4.3.4_supports-color@5.5.0 globals: 11.12.0 transitivePeerDependencies: @@ -1960,8 +1960,8 @@ packages: to-fast-properties: 2.0.0 dev: true - /@babel/types/7.19.0: - resolution: {integrity: sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA==} + /@babel/types/7.19.3: + resolution: {integrity: sha512-hGCaQzIY22DJlDh9CH7NOxgKkFjBk0Cw9xDO1Xmh2151ti7wiGfQ3LauXzL4HP1fmFlTX6XjpRETTpUcv7wQLw==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-string-parser': 7.18.10 @@ -2000,8 +2000,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 @@ -2041,25 +2041,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.11 '@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 @@ -2211,8 +2211,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.11: + resolution: {integrity: sha512-PZ8EqFSCEoJzcH/bp/+c2ze6aCK/8u5b7Qt1+O2Cwzmr8VLVZIVcpHpELnh4IvT4MRvzfa2WCDoUSofPwAfrsg==} dev: true /@cspell/dict-sql/1.0.4: @@ -2327,16 +2327,16 @@ packages: resolution: {integrity: sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==} dev: false - /@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] @@ -2432,8 +2432,8 @@ packages: 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 @@ -2456,8 +2456,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.7.0_react@18.2.0: + resolution: {integrity: sha512-zQtA7+UIxk5qWBcXgVBD6okSuLmSCw6n0D5x8YTim59i+IH5Y35gGPvJDK6ce5eCVNarCODIZylBQXb/OPX33g==} peerDependencies: react: ^16.13 || ^17 || ^18 dependencies: @@ -2484,7 +2484,7 @@ packages: resolution: {integrity: sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==} engines: {node: '>= 10.14.2'} dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@jest/types': 26.6.2 babel-plugin-istanbul: 6.1.1 chalk: 4.1.2 @@ -2509,7 +2509,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.7.20 + '@types/node': 18.7.23 '@types/yargs': 15.0.14 chalk: 4.1.2 dev: true @@ -2520,7 +2520,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.7.20 + '@types/node': 18.7.23 '@types/yargs': 16.0.4 chalk: 4.1.2 dev: true @@ -3056,7 +3056,7 @@ packages: dependencies: ansi-html-community: 0.0.8 common-path-prefix: 3.0.0 - core-js-pure: 3.25.2 + core-js-pure: 3.25.3 error-stack-parser: 2.1.4 find-up: 5.0.0 html-entities: 2.3.3 @@ -3071,14 +3071,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 @@ -3101,19 +3095,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: @@ -3129,15 +3110,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: @@ -3166,15 +3138,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: @@ -3375,16 +3338,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: @@ -3397,15 +3350,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: @@ -3428,34 +3383,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: @@ -3512,15 +3459,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: @@ -3530,16 +3468,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: @@ -3550,15 +3478,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: @@ -3569,15 +3488,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: @@ -3587,10 +3497,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 @@ -3606,15 +3516,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: @@ -3643,36 +3544,40 @@ packages: '@babel/runtime': 7.19.0 dev: false + /@remix-run/router/1.0.1: + resolution: {integrity: sha512-eBV5rvW4dRFOU1eajN7FmYxjAIVz/mRHgUE9En9mBn6m3mulK3WTR5C3iQhL9MZ14rWAq+xOlEaCkDiW0/heOg==} + 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 + 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: - resolution: {integrity: sha512-iU7DUbc0WkMW7q53sx0+t/gUhcShQ/a0KLpBmHGT6QTwhjnFsdqzW7GohCD4CTcT+RYUxirqHq6TvKPlmtKHcQ==} + /@rspc/react/0.1.2_6whdt7z2dcc6pbhv5hm3vpwf44: + 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.8.0 dev: false - /@rspc/tauri/0.0.6_@tauri-apps+api@1.0.2: - resolution: {integrity: sha512-zFitmJC/r0WNv2s9yw9R1mHkUgYQ6Qfm79zp0X0GjV3qq8ZhViWcQNxvouYAJrqR3eBiuNHbqie0Fa6YnAuNCA==} + /@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.0.6 - '@tauri-apps/api': 1.0.2 + '@rspc/client': 0.1.2 + '@tauri-apps/api': 1.1.0 dev: false /@sindresorhus/is/0.14.0: @@ -3707,7 +3612,7 @@ packages: '@storybook/core-events': 6.5.12 '@storybook/csf': 0.0.2--canary.4566f4d.1 '@storybook/theming': 6.5.12_biqbaboplfbrettd7655fr4n2y - core-js: 3.25.2 + core-js: 3.25.3 fast-deep-equal: 3.1.3 global: 4.4.0 lodash: 4.17.21 @@ -3741,7 +3646,7 @@ packages: '@storybook/core-events': 6.5.12 '@storybook/csf': 0.0.2--canary.4566f4d.1 '@storybook/theming': 6.5.12_biqbaboplfbrettd7655fr4n2y - core-js: 3.25.2 + core-js: 3.25.3 global: 4.4.0 memoizerific: 1.11.3 react: 18.2.0 @@ -3751,7 +3656,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 @@ -3766,12 +3671,12 @@ 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 '@storybook/theming': 6.5.12_biqbaboplfbrettd7655fr4n2y - core-js: 3.25.2 + core-js: 3.25.3 lodash: 4.17.21 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -3785,7 +3690,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 @@ -3799,26 +3704,26 @@ packages: react-dom: optional: true dependencies: - '@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/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 - core-js: 3.25.2 + babel-loader: 8.2.5_@babel+core@7.19.3 + core-js: 3.25.3 fast-deep-equal: 3.1.3 global: 4.4.0 lodash: 4.17.21 @@ -3840,7 +3745,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 @@ -3897,21 +3802,21 @@ 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.2 + core-js: 3.25.3 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 regenerator-runtime: 0.13.9 @@ -3926,7 +3831,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 @@ -3942,12 +3847,12 @@ 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 '@storybook/theming': 6.5.12_biqbaboplfbrettd7655fr4n2y - core-js: 3.25.2 + core-js: 3.25.3 global: 4.4.0 jest-mock: 27.5.1 polished: 4.2.2 @@ -3981,7 +3886,7 @@ packages: '@storybook/csf': 0.0.2--canary.4566f4d.1 '@storybook/router': 6.5.12_biqbaboplfbrettd7655fr4n2y '@types/qs': 6.9.7 - core-js: 3.25.2 + core-js: 3.25.3 global: 4.4.0 prop-types: 15.8.1 qs: 6.11.0 @@ -4008,7 +3913,7 @@ packages: '@storybook/components': 6.5.12_biqbaboplfbrettd7655fr4n2y '@storybook/core-events': 6.5.12 '@storybook/csf': 0.0.2--canary.4566f4d.1 - core-js: 3.25.2 + core-js: 3.25.3 global: 4.4.0 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -4031,7 +3936,7 @@ packages: '@storybook/components': 6.5.12_biqbaboplfbrettd7655fr4n2y '@storybook/core-events': 6.5.12 '@storybook/csf': 0.0.2--canary.4566f4d.1 - core-js: 3.25.2 + core-js: 3.25.3 global: 4.4.0 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -4039,9 +3944,9 @@ packages: ts-dedent: 2.2.0 dev: true - /@storybook/addon-postcss/3.0.0-alpha.1: - resolution: {integrity: sha512-j3DB//h89ctz0Orh1N4AHuzdzYhbL5XhUdh1V5rJ6tPOhHZ57v60tS4owukY4nE5gqM345lbuXK6MjbSZPqZdQ==} - engines: {node: '>=14', yarn: ^1.17.0} + /@storybook/addon-postcss/2.0.0: + resolution: {integrity: sha512-Nt82A7e9zJH4+A+VzLKKswUfru+T6FJTakj4dccP0i8DSn7a0CkzRPrLuZBq8tg4voV6gD74bcDf3gViCVBGtA==} + engines: {node: '>=10', yarn: ^1.17.0} dependencies: '@storybook/node-logger': 6.5.12 css-loader: 3.6.0 @@ -4068,7 +3973,7 @@ packages: '@storybook/client-logger': 6.5.12 '@storybook/components': 6.5.12_biqbaboplfbrettd7655fr4n2y '@storybook/theming': 6.5.12_biqbaboplfbrettd7655fr4n2y - core-js: 3.25.2 + core-js: 3.25.3 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 regenerator-runtime: 0.13.9 @@ -4091,7 +3996,7 @@ packages: '@storybook/components': 6.5.12_biqbaboplfbrettd7655fr4n2y '@storybook/core-events': 6.5.12 '@storybook/theming': 6.5.12_biqbaboplfbrettd7655fr4n2y - core-js: 3.25.2 + core-js: 3.25.3 global: 4.4.0 memoizerific: 1.11.3 prop-types: 15.8.1 @@ -4114,7 +4019,7 @@ packages: '@storybook/router': 6.5.12_biqbaboplfbrettd7655fr4n2y '@storybook/theming': 6.5.12_biqbaboplfbrettd7655fr4n2y '@types/webpack-env': 1.18.0 - core-js: 3.25.2 + core-js: 3.25.3 global: 4.4.0 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -4134,7 +4039,7 @@ packages: '@storybook/router': 6.5.12_biqbaboplfbrettd7655fr4n2y '@storybook/semver': 7.3.2 '@storybook/theming': 6.5.12_biqbaboplfbrettd7655fr4n2y - core-js: 3.25.2 + core-js: 3.25.3 fast-deep-equal: 3.1.3 global: 4.4.0 lodash: 4.17.21 @@ -4148,7 +4053,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 @@ -4158,7 +4063,7 @@ packages: typescript: optional: true dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@storybook/addons': 6.5.12_biqbaboplfbrettd7655fr4n2y '@storybook/api': 6.5.12_biqbaboplfbrettd7655fr4n2y '@storybook/channel-postmessage': 6.5.12 @@ -4166,7 +4071,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 @@ -4175,21 +4080,21 @@ packages: '@storybook/store': 6.5.12_biqbaboplfbrettd7655fr4n2y '@storybook/theming': 6.5.12_biqbaboplfbrettd7655fr4n2y '@storybook/ui': 6.5.12_biqbaboplfbrettd7655fr4n2y - '@types/node': 16.11.60 + '@types/node': 16.11.62 '@types/webpack': 4.41.32 autoprefixer: 9.8.8 - babel-loader: 8.2.5_7k5t74zmen3ocxyd32avkcyrwe + babel-loader: 8.2.5_jeg5564y5etyvi3ajplf6yhqg4 case-sensitive-paths-webpack-plugin: 2.4.0 - core-js: 3.25.2 + core-js: 3.25.3 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 @@ -4200,7 +4105,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 @@ -4217,7 +4122,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 @@ -4227,7 +4132,7 @@ packages: typescript: optional: true dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@storybook/addons': 6.5.12_biqbaboplfbrettd7655fr4n2y '@storybook/api': 6.5.12_biqbaboplfbrettd7655fr4n2y '@storybook/channel-postmessage': 6.5.12 @@ -4235,7 +4140,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 @@ -4243,14 +4148,14 @@ packages: '@storybook/semver': 7.3.2 '@storybook/store': 6.5.12_biqbaboplfbrettd7655fr4n2y '@storybook/theming': 6.5.12_biqbaboplfbrettd7655fr4n2y - '@types/node': 16.11.60 - babel-loader: 8.2.5_rhsdbzevgb5tizdhlla5jsbgyu + '@types/node': 16.11.62 + babel-loader: 8.2.5_wfdvla2jorjoj23kkavho2upde babel-plugin-named-exports-order: 0.0.2 browser-assert: 1.2.1 case-sensitive-paths-webpack-plugin: 2.4.0 - core-js: 3.25.2 + core-js: 3.25.3 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 @@ -4262,7 +4167,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 @@ -4285,7 +4190,7 @@ packages: '@storybook/channels': 6.5.12 '@storybook/client-logger': 6.5.12 '@storybook/core-events': 6.5.12 - core-js: 3.25.2 + core-js: 3.25.3 global: 4.4.0 qs: 6.11.0 telejson: 6.0.8 @@ -4296,7 +4201,7 @@ packages: dependencies: '@storybook/channels': 6.5.12 '@storybook/client-logger': 6.5.12 - core-js: 3.25.2 + core-js: 3.25.3 global: 4.4.0 telejson: 6.0.8 dev: true @@ -4304,27 +4209,27 @@ packages: /@storybook/channels/6.5.12: resolution: {integrity: sha512-X5XaKbe4b7LXJ4sUakBo00x6pXnW78JkOonHoaKoWsccHLlEzwfBZpVVekhVZnqtCoLT23dB8wjKgA71RYWoiw==} dependencies: - core-js: 3.25.2 + core-js: 3.25.3 ts-dedent: 2.2.0 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.3 cross-spawn: 7.0.3 envinfo: 7.8.1 express: 4.18.1 @@ -4332,7 +4237,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 @@ -4372,7 +4277,7 @@ packages: '@storybook/store': 6.5.12_biqbaboplfbrettd7655fr4n2y '@types/qs': 6.9.7 '@types/webpack-env': 1.18.0 - core-js: 3.25.2 + core-js: 3.25.3 fast-deep-equal: 3.1.3 global: 4.4.0 lodash: 4.17.21 @@ -4390,21 +4295,21 @@ packages: /@storybook/client-logger/6.5.12: resolution: {integrity: sha512-IrkMr5KZcudX935/C2balFbxLHhkvQnJ78rbVThHDVckQ7l3oIXTh66IMzldeOabVFDZEMiW8AWuGEYof+JtLw==} dependencies: - core-js: 3.25.2 + core-js: 3.25.3 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.3 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 @@ -4424,7 +4329,7 @@ packages: '@storybook/client-logger': 6.5.12 '@storybook/csf': 0.0.2--canary.4566f4d.1 '@storybook/theming': 6.5.12_biqbaboplfbrettd7655fr4n2y - core-js: 3.25.2 + core-js: 3.25.3 memoizerific: 1.11.3 qs: 6.11.0 react: 18.2.0 @@ -4433,7 +4338,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 @@ -4456,7 +4361,7 @@ packages: '@storybook/ui': 6.5.12_biqbaboplfbrettd7655fr4n2y airbnb-js-shims: 2.2.1 ansi-to-html: 0.6.15 - core-js: 3.25.2 + core-js: 3.25.3 global: 4.4.0 lodash: 4.17.21 qs: 6.11.0 @@ -4464,50 +4369,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.2 - 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.3 + 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 @@ -4517,41 +4422,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.62 '@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.3 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 @@ -4567,7 +4472,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: @@ -4580,10 +4485,10 @@ packages: /@storybook/core-events/6.5.12: resolution: {integrity: sha512-0AMyMM19R/lHsYRfWqM8zZTXthasTAK2ExkSRzYi2GkIaVMxRKtM33YRwxKIpJ6KmIKIs8Ru3QCXu1mfCmGzNg==} dependencies: - core-js: 3.25.2 + core-js: 3.25.3 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': '*' @@ -4600,20 +4505,20 @@ 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 - '@types/node': 16.11.60 + '@storybook/telemetry': 6.5.12_yalvw3r2waubxycyb7k7qsruca + '@types/node': 16.11.62 '@types/node-fetch': 2.6.2 '@types/pretty-hrtime': 1.0.1 '@types/webpack': 4.41.32 @@ -4623,7 +4528,7 @@ packages: cli-table3: 0.6.3 commander: 6.2.1 compression: 1.7.4 - core-js: 3.25.2 + core-js: 3.25.3 cpy: 8.1.2 detect-port: 1.5.1 express: 4.18.1 @@ -4643,7 +4548,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 @@ -4662,7 +4567,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': '*' @@ -4679,13 +4584,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' @@ -4708,16 +4613,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.3 fs-extra: 9.1.0 global: 4.4.0 regenerator-runtime: 0.13.9 @@ -4733,10 +4638,10 @@ packages: /@storybook/docs-tools/6.5.12_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-8brf8W89KVk95flVqW0sYEqkL+FBwb5W9CnwI+Ggd6r2cqXe9jyg+0vDZFdYp6kYNQKrPr4fbXGrGVXQG18/QQ==} dependencies: - '@babel/core': 7.19.1 + '@babel/core': 7.19.3 '@storybook/csf': 0.0.2--canary.4566f4d.1 '@storybook/store': 6.5.12_biqbaboplfbrettd7655fr4n2y - core-js: 3.25.2 + core-js: 3.25.3 doctrine: 3.0.0 lodash: 4.17.21 regenerator-runtime: 0.13.9 @@ -4752,14 +4657,14 @@ packages: '@storybook/addons': 6.5.12_biqbaboplfbrettd7655fr4n2y '@storybook/client-logger': 6.5.12 '@storybook/core-events': 6.5.12 - core-js: 3.25.2 + core-js: 3.25.3 global: 4.4.0 transitivePeerDependencies: - react - 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 @@ -4769,21 +4674,21 @@ packages: typescript: optional: true dependencies: - '@babel/core': 7.19.1 - '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.19.1 - '@babel/preset-react': 7.18.6_@babel+core@7.19.1 + '@babel/core': 7.19.3 + '@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 - '@types/node': 16.11.60 + '@types/node': 16.11.62 '@types/webpack': 4.41.32 - babel-loader: 8.2.5_7k5t74zmen3ocxyd32avkcyrwe + babel-loader: 8.2.5_jeg5564y5etyvi3ajplf6yhqg4 case-sensitive-paths-webpack-plugin: 2.4.0 chalk: 4.1.2 - core-js: 3.25.2 + core-js: 3.25.3 css-loader: 3.6.0_webpack@4.46.0 express: 4.18.1 file-loader: 6.2.0_webpack@4.46.0 @@ -4791,7 +4696,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 @@ -4801,7 +4706,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 @@ -4817,7 +4722,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 @@ -4827,20 +4732,20 @@ packages: typescript: optional: true dependencies: - '@babel/core': 7.19.1 - '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.19.1 - '@babel/preset-react': 7.18.6_@babel+core@7.19.1 + '@babel/core': 7.19.3 + '@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 - '@types/node': 16.11.60 - babel-loader: 8.2.5_rhsdbzevgb5tizdhlla5jsbgyu + '@types/node': 16.11.62 + babel-loader: 8.2.5_wfdvla2jorjoj23kkavho2upde case-sensitive-paths-webpack-plugin: 2.4.0 chalk: 4.1.2 - core-js: 3.25.2 + core-js: 3.25.3 css-loader: 5.2.7_webpack@5.74.0 express: 4.18.1 find-up: 5.0.0 @@ -4857,7 +4762,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 @@ -4874,15 +4779,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 @@ -4897,14 +4802,14 @@ packages: dependencies: '@types/npmlog': 4.1.4 chalk: 4.1.2 - core-js: 3.25.2 + core-js: 3.25.3 npmlog: 5.0.1 pretty-hrtime: 1.0.3 /@storybook/postinstall/6.5.12: resolution: {integrity: sha512-6K73f9c2UO+w4Wtyo2BxEpEsnhPvMgqHSaJ9Yt6Tc90LaDGUbcVgy6PNibsRyuJ/KQ543WeiRO5rSZfm2uJU9A==} dependencies: - core-js: 3.25.2 + core-js: 3.25.3 dev: true /@storybook/preset-scss/1.0.3_bwzccejaufux335em5rfxw325i: @@ -4932,7 +4837,7 @@ packages: '@storybook/csf': 0.0.2--canary.4566f4d.1 '@storybook/store': 6.5.12_biqbaboplfbrettd7655fr4n2y ansi-to-html: 0.6.15 - core-js: 3.25.2 + core-js: 3.25.3 global: 4.4.0 lodash: 4.17.21 qs: 6.11.0 @@ -4945,7 +4850,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' @@ -4956,15 +4861,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 @@ -4992,31 +4897,31 @@ 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 - '@types/node': 16.11.60 + '@types/node': 16.11.62 '@types/webpack-env': 1.18.0 acorn: 7.4.1 acorn-jsx: 5.3.2_acorn@7.4.1 acorn-walk: 7.2.0 babel-plugin-add-react-displayname: 0.0.5 babel-plugin-react-docgen: 4.2.1 - core-js: 3.25.2 + core-js: 3.25.3 escodegen: 2.0.0 fs-extra: 9.1.0 global: 4.4.0 @@ -5030,7 +4935,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: @@ -5062,7 +4967,7 @@ packages: react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: '@storybook/client-logger': 6.5.12 - core-js: 3.25.2 + core-js: 3.25.3 memoizerific: 1.11.3 qs: 6.11.0 react: 18.2.0 @@ -5075,7 +4980,7 @@ packages: engines: {node: '>=10'} hasBin: true dependencies: - core-js: 3.25.2 + core-js: 3.25.3 find-up: 4.1.0 /@storybook/source-loader/6.5.12_biqbaboplfbrettd7655fr4n2y: @@ -5087,7 +4992,7 @@ packages: '@storybook/addons': 6.5.12_biqbaboplfbrettd7655fr4n2y '@storybook/client-logger': 6.5.12 '@storybook/csf': 0.0.2--canary.4566f4d.1 - core-js: 3.25.2 + core-js: 3.25.3 estraverse: 5.3.0 global: 4.4.0 loader-utils: 2.0.2 @@ -5108,7 +5013,7 @@ packages: '@storybook/client-logger': 6.5.12 '@storybook/core-events': 6.5.12 '@storybook/csf': 0.0.2--canary.4566f4d.1 - core-js: 3.25.2 + core-js: 3.25.3 fast-deep-equal: 3.1.3 global: 4.4.0 lodash: 4.17.21 @@ -5123,13 +5028,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.3 detect-package-manager: 2.0.1 fetch-retry: 5.0.3 fs-extra: 9.1.0 @@ -5169,7 +5074,7 @@ packages: react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: '@storybook/client-logger': 6.5.12 - core-js: 3.25.2 + core-js: 3.25.3 memoizerific: 1.11.3 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -5191,7 +5096,7 @@ packages: '@storybook/router': 6.5.12_biqbaboplfbrettd7655fr4n2y '@storybook/semver': 7.3.2 '@storybook/theming': 6.5.12_biqbaboplfbrettd7655fr4n2y - core-js: 3.25.2 + core-js: 3.25.3 memoizerific: 1.11.3 qs: 6.11.0 react: 18.2.0 @@ -5200,93 +5105,93 @@ 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_@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_@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_@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_@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_@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_@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_@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_@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: + /@svgr/babel-preset/6.3.1_@babel+core@7.19.3: resolution: {integrity: sha512-tQtWtzuMMQ3opH7je+MpwfuRA1Hf3cKdSgTtAYwOBDfmhabP7rcTfBi3E7V3MuwJNy/Y02/7/RutvwS1W4Qv9g==} 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 + '@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: @@ -5304,7 +5209,7 @@ packages: resolution: {integrity: sha512-NgyCbiTQIwe3wHe/VWOUjyxmpUmsrBjdoIxKpXt3Nqc3TN30BpJG22OxBvVzsAh9jqep0w0/h8Ywvdk3D9niNQ==} engines: {node: '>=10'} dependencies: - '@babel/types': 7.19.0 + '@babel/types': 7.19.3 entities: 4.4.0 dev: true @@ -5314,8 +5219,8 @@ packages: peerDependencies: '@svgr/core': ^6.0.0 dependencies: - '@babel/core': 7.19.1 - '@svgr/babel-preset': 6.3.1_@babel+core@7.19.1 + '@babel/core': 7.19.3 + '@svgr/babel-preset': 6.3.1_@babel+core@7.19.3 '@svgr/core': 6.3.1 '@svgr/hast-util-to-babel-ast': 6.3.1 svg-parser: 2.0.4 @@ -5389,26 +5294,26 @@ packages: remove-accents: 0.4.2 dev: false - /@tanstack/query-core/4.6.0: - resolution: {integrity: sha512-8b+vwooh8b4z1bIT3Ca7OVSyARM5JNbXi6F+g5VLYiflRd0AtJ+koqhin7UGhR11bbypmzVRKllWHwexWjKjDg==} + /@tanstack/query-core/4.8.0: + resolution: {integrity: sha512-PVcSqAWboFA86eNgtHTOjfHjBkNuFGAM6kPH82p1ibx1R76f7EjedZ+LZi4ZnW4ppoSl/+hUtCgWsiNQ2ViLTw==} dev: false - /@tanstack/react-query-devtools/4.6.0_35w334xqtbzboqulr5pz522esm: - resolution: {integrity: sha512-utuDpgHBNcb4UsszWqOXh3maj/FqgyccOpuTEdBdB0Ffl2T9bckCgWt3cFsVdGcGi6QsotT/qXAsZxC8vKAjQA==} + /@tanstack/react-query-devtools/4.8.0_nscguit52pwjmvr4nqvhrqfsfq: + resolution: {integrity: sha512-PJNAuUFOVfv/8FDjpL8O0DmXGkS5hONhSE9Ciyn/ewkqpAgbZOnwQ3nYj/9HKxNyciBzNx/54nPxQfe/smqoLw==} peerDependencies: - '@tanstack/react-query': 4.6.0 + '@tanstack/react-query': 4.8.0 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/react-query': 4.8.0_biqbaboplfbrettd7655fr4n2y 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 - /@tanstack/react-query/4.6.0: - resolution: {integrity: sha512-ZIx8EfRBGagxw+3onFb//Fnv0hhXDj/UHIYovPGwHdancAG9ZL4D0ymUan4cXJib/L0rGPzYFvET/yTEIPPXAw==} + /@tanstack/react-query/4.8.0: + resolution: {integrity: sha512-e3QzL/S8XeA5MYqOUUABet4oZDBc1MbeUIo32r0cxEDoDJS+9oqx0az9AbBxacZ7SjM/Fy4u/eXQFBjsKGFQ6A==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -5419,12 +5324,12 @@ packages: react-native: optional: true dependencies: - '@tanstack/query-core': 4.6.0 + '@tanstack/query-core': 4.8.0 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.8.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-e3QzL/S8XeA5MYqOUUABet4oZDBc1MbeUIo32r0cxEDoDJS+9oqx0az9AbBxacZ7SjM/Fy4u/eXQFBjsKGFQ6A==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -5435,7 +5340,7 @@ packages: react-native: optional: true dependencies: - '@tanstack/query-core': 4.6.0 + '@tanstack/query-core': 4.8.0 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 use-sync-external-store: 1.2.0_react@18.2.0 @@ -5456,13 +5361,13 @@ 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==} + /@tauri-apps/cli-darwin-arm64/1.1.1: + resolution: {integrity: sha512-qBG11ig525/qf0f5OQxn0ON3hT8YdpTfpa4Y4kVqBJhdW50R5fadPv6tv5Dpl2TS2X7nWh/zg5mEXYoCK3HZ9w==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] @@ -5470,8 +5375,8 @@ packages: dev: true optional: true - /@tauri-apps/cli-darwin-x64/1.0.5: - resolution: {integrity: sha512-hRNYC6L9edz2dEqK33tssPylF2ti6x6udidBlGWc5GSoeEb/05qKMEA1MESQYKBG+4q+wjJvACA2vvz6AfgJ3Q==} + /@tauri-apps/cli-darwin-x64/1.1.1: + resolution: {integrity: sha512-M3dMsp78OdxisbTwAWGvy3jIb3uqThtQcUYVvqOu9LeEOHyldOBFDSht+6PTBpaJLAHFMQK2rmNxiWgigklJaA==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] @@ -5479,8 +5384,8 @@ packages: dev: true optional: true - /@tauri-apps/cli-linux-arm-gnueabihf/1.0.5: - resolution: {integrity: sha512-hc/Jp3TtFpxB8XVkLEwWy7MNcUBlS8rNCafQBUt4KSElXB+/oGo50jPO+wd5GSMSOR59UCzH08v11P0b+sAa/w==} + /@tauri-apps/cli-linux-arm-gnueabihf/1.1.1: + resolution: {integrity: sha512-LYlvdAd73cq+yTi6rw7j/DWIvDpeApwgQkIn+HYsNNeFhyFmABU7tmw+pekK3W3nHAkYAJ69Rl4ZdoxdNGKmHg==} engines: {node: '>= 10'} cpu: [arm] os: [linux] @@ -5488,8 +5393,8 @@ packages: dev: true optional: true - /@tauri-apps/cli-linux-arm64-gnu/1.0.5: - resolution: {integrity: sha512-btFlkD2PG+yzJBZzWeJmyCy8ZV+iys2Jl66Fs4g9lSi3KrBDnyfQ26RpGZb2pRfkkcVP8/x1WSfByO+Rj+PTBA==} + /@tauri-apps/cli-linux-arm64-gnu/1.1.1: + resolution: {integrity: sha512-o/hbMQIKuFI7cTNpeQBHD/OCNJOBIci78faKms/t6AstLXx0QJuRHDk477Rg6VVy/I3BBKbyATALbmcTq+ti0A==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -5497,8 +5402,8 @@ packages: dev: true optional: true - /@tauri-apps/cli-linux-arm64-musl/1.0.5: - resolution: {integrity: sha512-p5JFdWab2AWhfgAZW/mgOLu+YiIJXKV0NdATGmdiBgQCMmz1k/FM8iOFApCgGbo3/zkR58cJ7Z7hyWmQ07M6Pw==} + /@tauri-apps/cli-linux-arm64-musl/1.1.1: + resolution: {integrity: sha512-8Ci4qlDnXIp93XqUrtzFCBDatUzPHpZq7L3bociUbWpvy/bnlzxp1C/C+vwdc4uS1MiAp9v3BFgrU4i0f0Z3QQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -5506,8 +5411,8 @@ packages: dev: true optional: true - /@tauri-apps/cli-linux-x64-gnu/1.0.5: - resolution: {integrity: sha512-fOXR635AXxwSO7MCfBhMLnGpcg1H83XGw9ocuyg4jjvtE8QoYPwC4ksfb5lLhDVMui9iIKY93NAK3EkQiSGGmQ==} + /@tauri-apps/cli-linux-x64-gnu/1.1.1: + resolution: {integrity: sha512-ES4Bkx2JAI8+dDNDJswhLS3yqt+yT/4C6UfGOPIHFxcXUh6fe36eUllrTt+HLRS9xTZbYnteJy7ebq2TqMkaxw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -5515,8 +5420,8 @@ packages: dev: true optional: true - /@tauri-apps/cli-linux-x64-musl/1.0.5: - resolution: {integrity: sha512-8be4zJVkuMs427JqONhFx5Ia5zWsQ5tbZXd80C3dHNL+5/3VIOK6nGQ0iijyZSLXiE9JKEH2jp1EHB+1TVJRcw==} + /@tauri-apps/cli-linux-x64-musl/1.1.1: + resolution: {integrity: sha512-qrN1WOMAaDl+LE8P8iO0+DYlrWNTc9jIu/CsnVY/LImTn79ZPxEkcVBo0UGeKRI7f10TfvkVmLCBLxTz8QhEyA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -5524,8 +5429,8 @@ packages: dev: true optional: true - /@tauri-apps/cli-win32-ia32-msvc/1.0.5: - resolution: {integrity: sha512-WpnIfzS1e4InGhvd1IDSKC3w6kbI5c6oJgMmtkMTBlhjhiZXhZmQF4XA784A5Y13pzsbXnbNJKOp8DuPVkoTRQ==} + /@tauri-apps/cli-win32-ia32-msvc/1.1.1: + resolution: {integrity: sha512-vw7VOmrQlywHhFV3pf54udf2FRNj9dg9WP1gL0My55FnB+w+PWS9Ipm871kX5qepmChdnZHKq9fsqE2uTjX//Q==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] @@ -5533,8 +5438,8 @@ packages: dev: true optional: true - /@tauri-apps/cli-win32-x64-msvc/1.0.5: - resolution: {integrity: sha512-8iEhVD3X4LZfrlxEPOV+mAj4QrJrEqKTICiJnwmgjvhYQOOsNHzg5kca7pcBbqcgorQOBydLpfGJtxWRusVPaw==} + /@tauri-apps/cli-win32-x64-msvc/1.1.1: + resolution: {integrity: sha512-OukxlLLi3AoCN4ABnqCDTiiC7xJGWukAjrKCIx7wFISrLjNfsrnH7/UOzuopfGpZChSe2c+AamVmcpBfVsEmJA==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -5542,20 +5447,20 @@ packages: dev: true optional: true - /@tauri-apps/cli/1.0.5: - resolution: {integrity: sha512-vbY+MwK+xN65x0R/o16UQPxBtJl8pmzVzC0TZKokZfmeOkomoqOEOinSwznAMeyR1ZMJW+fXVgJCPvGsRQ0LGg==} + /@tauri-apps/cli/1.1.1: + resolution: {integrity: sha512-80kjMEMPBwLYCp0tTKSquy90PHHGGBvZsneNr3B/mWxNsvjzA1C0vOyGJGFrJuT2OmkvrdvuJZ5mch5hL8O1Xg==} 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 + '@tauri-apps/cli-darwin-arm64': 1.1.1 + '@tauri-apps/cli-darwin-x64': 1.1.1 + '@tauri-apps/cli-linux-arm-gnueabihf': 1.1.1 + '@tauri-apps/cli-linux-arm64-gnu': 1.1.1 + '@tauri-apps/cli-linux-arm64-musl': 1.1.1 + '@tauri-apps/cli-linux-x64-gnu': 1.1.1 + '@tauri-apps/cli-linux-x64-musl': 1.1.1 + '@tauri-apps/cli-win32-ia32-msvc': 1.1.1 + '@tauri-apps/cli-win32-x64-msvc': 1.1.1 dev: true /@testing-library/dom/8.18.1: @@ -5674,7 +5579,7 @@ packages: resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} dependencies: '@types/connect': 3.4.35 - '@types/node': 17.0.45 + '@types/node': 18.7.23 dev: false /@types/byte-size/8.1.0: @@ -5686,7 +5591,7 @@ packages: dependencies: '@types/http-cache-semantics': 4.0.1 '@types/keyv': 3.1.4 - '@types/node': 18.7.20 + '@types/node': 18.7.23 '@types/responselike': 1.0.0 dev: true @@ -5699,7 +5604,7 @@ packages: /@types/connect/3.4.35: resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} dependencies: - '@types/node': 17.0.45 + '@types/node': 18.7.23 dev: false /@types/eslint-scope/3.7.4: @@ -5723,7 +5628,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.7.23 '@types/qs': 6.9.7 '@types/range-parser': 1.2.4 dev: false @@ -5741,20 +5646,20 @@ packages: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 16.11.60 + '@types/node': 16.11.62 dev: true /@types/glob/8.0.0: resolution: {integrity: sha512-l6NQsDDyQUVeoTynNpC9uRvCUint/gSUXQA2euwmTuWGvPY5LSDUu6tkCtJB2SvGQlJQzLaKqcGZP4//7EDveA==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 16.11.60 + '@types/node': 16.11.62 dev: true /@types/graceful-fs/4.1.5: resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} dependencies: - '@types/node': 18.7.20 + '@types/node': 18.7.23 dev: true /@types/hast/2.3.4: @@ -5810,10 +5715,10 @@ packages: /@types/keyv/3.1.4: resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} dependencies: - '@types/node': 18.7.20 + '@types/node': 18.7.23 - /@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==} @@ -5839,12 +5744,12 @@ packages: /@types/node-fetch/2.6.2: resolution: {integrity: sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==} dependencies: - '@types/node': 16.11.60 + '@types/node': 16.11.62 form-data: 3.0.1 dev: true - /@types/node/16.11.60: - resolution: {integrity: sha512-kYIYa1D1L+HDv5M5RXQeEu1o0FKA6yedZIoyugm/MBPROkLpX4L7HRxMrPVyo8bnvjpW/wDlqFNGzXNMb7AdRw==} + /@types/node/16.11.62: + resolution: {integrity: sha512-K/ggecSdwAAy2NUW4WKmF4Rc03GKbsfP+k326UWgckoS+Rzd2PaWbjk76dSmqdLQvLTJAO9axiTUJ6488mFsYQ==} /@types/node/16.9.1: resolution: {integrity: sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==} @@ -5852,9 +5757,10 @@ packages: /@types/node/17.0.45: resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} + dev: true - /@types/node/18.7.20: - resolution: {integrity: sha512-adzY4vLLr5Uivmx8+zfSJ5fbdgKxX8UMtjtl+17n0B1q1Nz8JEmE151vefMdpD+1gyh+77weN4qEhej/O7budQ==} + /@types/node/18.7.23: + resolution: {integrity: sha512-DWNcCHolDq0ZKGizjx2DZjR/PqsYwAcYUJmfMWqtVU2MBMG5Mo+xFZrhGId5r/O5HOuMPyQEcM6KUBp5lBZZBg==} /@types/normalize-package-data/2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} @@ -5946,7 +5852,7 @@ packages: /@types/responselike/1.0.0: resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} dependencies: - '@types/node': 18.7.20 + '@types/node': 18.7.23 /@types/scheduler/0.16.2: resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==} @@ -5955,7 +5861,7 @@ packages: resolution: {integrity: sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==} dependencies: '@types/mime': 3.0.1 - '@types/node': 17.0.45 + '@types/node': 18.7.23 dev: false /@types/source-list-map/0.1.2: @@ -6004,10 +5910,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 @@ -6015,7 +5917,7 @@ packages: /@types/webpack-sources/3.2.0: resolution: {integrity: sha512-Ft7YH3lEVRQ6ls8k4Ff1oB4jN6oy/XmU6tQISKdhfh+1mR+viZFphS6WL0IrtDOzvefmJg5a0s7ZQoRXwqTEFg==} dependencies: - '@types/node': 16.11.60 + '@types/node': 16.11.62 '@types/source-list-map': 0.1.2 source-map: 0.7.4 dev: true @@ -6023,7 +5925,7 @@ packages: /@types/webpack/4.41.32: resolution: {integrity: sha512-cb+0ioil/7oz5//7tZUSwbrSAN/NWHrQylz5cW8G0dWTcF/g+/dSdMlKVZspBYuMAN1+WnwHrkxiRrLcwd0Heg==} dependencies: - '@types/node': 16.11.60 + '@types/node': 16.11.62 '@types/tapable': 1.0.8 '@types/uglify-js': 3.17.0 '@types/webpack-sources': 3.2.0 @@ -6047,8 +5949,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.38.1_gofx6msuqd4luqedfouzks2s4u: + resolution: {integrity: sha512-ky7EFzPhqz3XlhS7vPOoMDaQnQMn+9o5ICR9CPr/6bw8HrFkzhMSxuA3gRfiJVvs7geYrSeawGJjZoZQKCOglQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -6058,10 +5960,10 @@ 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.38.1_eslint@8.24.0 + '@typescript-eslint/scope-manager': 5.38.1 + '@typescript-eslint/type-utils': 5.38.1_eslint@8.24.0 + '@typescript-eslint/utils': 5.38.1_eslint@8.24.0 debug: 4.3.4 eslint: 8.24.0 ignore: 5.2.0 @@ -6072,8 +5974,8 @@ packages: - supports-color dev: true - /@typescript-eslint/parser/5.38.0_eslint@8.24.0: - resolution: {integrity: sha512-/F63giJGLDr0ms1Cr8utDAxP2SPiglaD6V+pCOcG35P2jCqdfR7uuEhz1GIC3oy4hkUF8xA1XSXmd9hOh/a5EA==} + /@typescript-eslint/parser/5.38.1_eslint@8.24.0: + resolution: {integrity: sha512-LDqxZBVFFQnQRz9rUZJhLmox+Ep5kdUmLatLQnCRR6523YV+XhRjfYzStQ4MheFA8kMAfUlclHSbu+RKdRwQKw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -6082,25 +5984,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.38.1 + '@typescript-eslint/types': 5.38.1 + '@typescript-eslint/typescript-estree': 5.38.1 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.38.1: + resolution: {integrity: sha512-BfRDq5RidVU3RbqApKmS7RFMtkyWMM50qWnDAkKgQiezRtLKsoyRKIvz1Ok5ilRWeD9IuHvaidaLxvGx/2eqTQ==} 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.38.1 + '@typescript-eslint/visitor-keys': 5.38.1 dev: true - /@typescript-eslint/type-utils/5.38.0_eslint@8.24.0: - resolution: {integrity: sha512-iZq5USgybUcj/lfnbuelJ0j3K9dbs1I3RICAJY9NZZpDgBYXmuUlYQGzftpQA9wC8cKgtS6DASTvF3HrXwwozA==} + /@typescript-eslint/type-utils/5.38.1_eslint@8.24.0: + resolution: {integrity: sha512-UU3j43TM66gYtzo15ivK2ZFoDFKKP0k03MItzLdq0zV92CeGCXRfXlfQX5ILdd4/DSpHkSjIgLLLh1NtkOJOAw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -6109,8 +6011,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.38.1 + '@typescript-eslint/utils': 5.38.1_eslint@8.24.0 debug: 4.3.4 eslint: 8.24.0 tsutils: 3.21.0 @@ -6118,13 +6020,13 @@ packages: - supports-color dev: true - /@typescript-eslint/types/5.38.0: - resolution: {integrity: sha512-HHu4yMjJ7i3Cb+8NUuRCdOGu2VMkfmKyIJsOr9PfkBVYLYrtMCK/Ap50Rpov+iKpxDTfnqvDbuPLgBE5FwUNfA==} + /@typescript-eslint/types/5.38.1: + resolution: {integrity: sha512-QTW1iHq1Tffp9lNfbfPm4WJabbvpyaehQ0SrvVK2yfV79SytD9XDVxqiPvdrv2LK7DGSFo91TB2FgWanbJAZXg==} 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.38.1: + resolution: {integrity: sha512-99b5e/Enoe8fKMLdSuwrfH/C0EIbpUWmeEKHmQlGZb8msY33qn1KlkFww0z26o5Omx7EVjzVDCWEfrfCDHfE7g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -6132,8 +6034,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.38.0 - '@typescript-eslint/visitor-keys': 5.38.0 + '@typescript-eslint/types': 5.38.1 + '@typescript-eslint/visitor-keys': 5.38.1 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -6143,16 +6045,16 @@ packages: - 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.38.1_eslint@8.24.0: + resolution: {integrity: sha512-oIuUiVxPBsndrN81oP8tXnFa/+EcZ03qLqPDfSZ5xIJVm7A9V0rlkQwwBOAGtrdN70ZKDlKv+l1BeT4eSFxwXA==} 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.38.1 + '@typescript-eslint/types': 5.38.1 + '@typescript-eslint/typescript-estree': 5.38.1 eslint: 8.24.0 eslint-scope: 5.1.1 eslint-utils: 3.0.0_eslint@8.24.0 @@ -6161,11 +6063,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.38.1: + resolution: {integrity: sha512-bSHr1rRxXt54+j2n4k54p4fj8AHJ49VDWtjpImOpzQj4qjAiOpPni+V1Tyajh19Api1i844F757cur8wH3YvOA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.38.0 + '@typescript-eslint/types': 5.38.1 eslint-visitor-keys: 3.3.0 dev: true @@ -6183,36 +6085,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.5 react-refresh: 0.14.0 - vite: 3.1.3 + vite: 3.1.4_sass@1.55.0 transitivePeerDependencies: - supports-color @@ -6679,7 +6565,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 @@ -6761,7 +6647,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==} @@ -6863,7 +6749,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: @@ -6942,13 +6828,13 @@ packages: postcss: ^8.1.0 dependencies: browserslist: 4.21.4 - caniuse-lite: 1.0.30001412 + caniuse-lite: 1.0.30001414 fraction.js: 4.2.0 normalize-range: 0.1.2 picocolors: 1.0.0 postcss-value-parser: 4.2.0 - /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 @@ -6956,11 +6842,11 @@ packages: postcss: ^8.1.0 dependencies: browserslist: 4.21.4 - caniuse-lite: 1.0.30001412 + caniuse-lite: 1.0.30001414 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 @@ -6969,7 +6855,7 @@ packages: hasBin: true dependencies: browserslist: 4.21.4 - caniuse-lite: 1.0.30001412 + caniuse-lite: 1.0.30001414 normalize-range: 0.1.2 num2fraction: 1.2.2 picocolors: 0.2.1 @@ -6986,50 +6872,50 @@ 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 schema-utils: 2.7.1 dev: true - /babel-loader/8.2.5_rhsdbzevgb5tizdhlla5jsbgyu: + /babel-loader/8.2.5_jeg5564y5etyvi3ajplf6yhqg4: 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 + schema-utils: 2.7.1 + webpack: 4.46.0 + + /babel-loader/8.2.5_wfdvla2jorjoj23kkavho2upde: + resolution: {integrity: sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==} + engines: {node: '>= 8.9'} + peerDependencies: + '@babel/core': ^7.0.0 + webpack: '>=2' + dependencies: + '@babel/core': 7.19.3 find-cache-dir: 3.3.2 loader-utils: 2.0.2 make-dir: 3.1.0 @@ -7085,47 +6971,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.3 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.3 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 @@ -7139,7 +7025,7 @@ packages: - supports-color dev: true - /babel-plugin-styled-components/2.0.7_styled-components@5.3.5: + /babel-plugin-styled-components/2.0.7_styled-components@5.3.6: resolution: {integrity: sha512-i7YhvPgVqRKfoQ66toiZ06jPNA3p6ierpfUuEWxNF+fV27Uv5gxBkf8KZLHUCc1nFA9j6+80pYoIpqCeyW3/bA==} peerDependencies: styled-components: '>= 2' @@ -7149,7 +7035,7 @@ packages: babel-plugin-syntax-jsx: 6.18.0 lodash: 4.17.21 picomatch: 2.3.1 - styled-components: 5.3.5_biqbaboplfbrettd7655fr4n2y + styled-components: 5.3.6_biqbaboplfbrettd7655fr4n2y dev: false /babel-plugin-syntax-jsx/6.18.0: @@ -7157,7 +7043,7 @@ packages: dev: false /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 @@ -7212,8 +7098,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==} @@ -7416,6 +7300,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==} @@ -7491,8 +7388,8 @@ 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.30001414 + electron-to-chromium: 1.4.269 node-releases: 2.0.6 update-browserslist-db: 1.0.9_browserslist@4.21.4 @@ -7517,11 +7414,11 @@ 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: - resolution: {integrity: sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=} + resolution: {integrity: sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==} engines: {node: '>=0.4.0'} dev: true @@ -7533,7 +7430,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: @@ -7562,7 +7459,7 @@ packages: dev: false /bytes/3.0.0: - resolution: {integrity: sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=} + resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} engines: {node: '>= 0.8'} /bytes/3.1.2: @@ -7745,8 +7642,8 @@ packages: resolution: {integrity: sha512-W2lPwkBkMZwFlPCXhIlYgxu+7gC/NUlCtdK652DAJ1JdgV0sTrvuPFshNPrFa1TY2JOkLhgdeEBplB4ezEa+xg==} dev: false - /caniuse-lite/1.0.30001412: - resolution: {integrity: sha512-+TeEIee1gS5bYOiuf+PS/kp2mrXic37Hl66VY6EAfxasIk5fELTktK2oOezYed12H8w7jt3s512PpulQidPjwA==} + /caniuse-lite/1.0.30001414: + resolution: {integrity: sha512-t55jfSaWjCdocnFdKQoO+d2ct9C59UZg4dY3OnUlSZ447r8pUtIKdp0hpAzrGFultmTC+Us+KpKi4GZl/LXlFg==} /capture-exit/2.0.0: resolution: {integrity: sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==} @@ -7915,7 +7812,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' @@ -7923,7 +7820,7 @@ packages: typescript: optional: true dependencies: - typescript: 4.8.3 + typescript: 4.8.4 dev: false /classnames/2.3.2: @@ -8108,8 +8005,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 @@ -8182,7 +8079,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==} @@ -8201,7 +8098,7 @@ 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 @@ -8261,7 +8158,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==} @@ -8286,13 +8183,13 @@ 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==} + /core-js-compat/3.25.3: + resolution: {integrity: sha512-xVtYpJQ5grszDHEUU9O7XbjjcZ0ccX3LgQsyqSvTnjX97ZqEgn9F5srmrwwwMtbKzDllyFPL+O+2OFMl1lU4TQ==} dependencies: browserslist: 4.21.4 - /core-js-pure/3.25.2: - resolution: {integrity: sha512-ItD7YpW1cUB4jaqFLZXe1AXkyqIxz6GqPnsDV4uF4hVcWh/WAGIqSqw5p0/WdsILM0Xht9s3Koyw05R3K6RtiA==} + /core-js-pure/3.25.3: + resolution: {integrity: sha512-T/7qvgv70MEvRkZ8p6BasLZmOVYKzOaWNBEHAU8FmveCJkl4nko2quqPQOmy6AJIp5MBanhz9no3A94NoRb0XA==} requiresBuild: true dev: true @@ -8302,8 +8199,8 @@ packages: requiresBuild: true dev: true - /core-js/3.25.2: - resolution: {integrity: sha512-YB4IAT1bjEfxTJ1XYy11hJAKskO+qmhuDBM8/guIfMz4JvdsAQAqvyb97zXX7JgSrfPLG5mRGFWJwJD39ruq2A==} + /core-js/3.25.3: + resolution: {integrity: sha512-y1hvKXmPHvm5B7w4ln1S4uc9eV/O5+iFExSRUimnvIph11uaizFR8LFMdONN8hG3P2pipUfX4Y/fR8rAEtcHcQ==} requiresBuild: true /core-util-is/1.0.3: @@ -8466,56 +8363,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 @@ -8529,27 +8438,27 @@ 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 @@ -8617,13 +8526,13 @@ packages: peerDependencies: webpack: ^4.27.0 || ^5.0.0 dependencies: - icss-utils: 5.1.0_postcss@8.4.16 + icss-utils: 5.1.0_postcss@8.4.17 loader-utils: 2.0.2 - 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 + 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 schema-utils: 3.1.1 semver: 7.3.7 @@ -8636,12 +8545,12 @@ 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 dev: true @@ -8956,7 +8865,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==} @@ -9181,10 +9089,10 @@ 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==} + /electron-to-chromium/1.4.269: + resolution: {integrity: sha512-7mHFONwp7MNvdyto1v70fCwk28NJMFgsK79op+iYHzz1BLE8T66a1B2qW5alb8XgE0yi3FL3ZQjSYZpJpF6snw==} /elliptic/6.5.4: resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} @@ -9356,194 +9264,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==} @@ -9680,7 +9588,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 @@ -9772,8 +9680,8 @@ packages: resolution: {integrity: sha512-YNF+mZ/Wu2FU/gvmzuWtYc8rloubL7wfXCTgouFrnjGVXPA/EeYYA7pupXWrb3Iv1cTBeSSxxJIbK23l4MRNqg==} engines: {node: '>=8.3.0'} dependencies: - '@babel/traverse': 7.19.1 - '@babel/types': 7.19.0 + '@babel/traverse': 7.19.3 + '@babel/types': 7.19.3 c8: 7.12.0 transitivePeerDependencies: - supports-color @@ -9781,6 +9689,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==} @@ -9800,7 +9709,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: @@ -10381,8 +10290,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 @@ -10433,7 +10342,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: @@ -10453,14 +10362,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: @@ -10487,40 +10396,40 @@ packages: schema-utils: 2.7.0 semver: 7.3.7 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.7 + 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 @@ -10561,7 +10470,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: @@ -10773,7 +10682,7 @@ packages: dev: true /github-from-package/0.0.0: - resolution: {integrity: sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=} + resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} dev: true /github-slugger/1.4.0: @@ -11026,7 +10935,7 @@ packages: source-map: 0.6.1 wordwrap: 1.0.0 optionalDependencies: - uglify-js: 3.17.1 + uglify-js: 3.17.2 /has-ansi/2.0.0: resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==} @@ -11206,12 +11115,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: @@ -11411,13 +11314,13 @@ packages: postcss: 7.0.39 dev: true - /icss-utils/5.1.0_postcss@8.4.16: + /icss-utils/5.1.0_postcss@8.4.17: resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - postcss: 8.4.16 + postcss: 8.4.17 dev: true /ieee754/1.2.1: @@ -11553,7 +11456,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 @@ -12035,8 +11938,8 @@ packages: resolution: {integrity: sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==} engines: {node: '>=8'} dependencies: - '@babel/core': 7.19.1 - '@babel/parser': 7.19.1 + '@babel/core': 7.19.3 + '@babel/parser': 7.19.3 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 semver: 6.3.0 @@ -12081,7 +11984,7 @@ packages: 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: @@ -12090,7 +11993,7 @@ packages: dependencies: '@jest/types': 26.6.2 '@types/graceful-fs': 4.1.5 - '@types/node': 18.7.20 + '@types/node': 18.7.23 anymatch: 3.1.2 fb-watchman: 2.0.2 graceful-fs: 4.2.10 @@ -12112,7 +12015,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.7.20 + '@types/node': 18.7.23 dev: true /jest-regex-util/26.0.0: @@ -12124,7 +12027,7 @@ packages: resolution: {integrity: sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==} engines: {node: '>= 10.14.2'} dependencies: - '@types/node': 18.7.20 + '@types/node': 18.7.23 graceful-fs: 4.2.10 dev: true @@ -12133,7 +12036,7 @@ packages: engines: {node: '>= 10.14.2'} dependencies: '@jest/types': 26.6.2 - '@types/node': 18.7.20 + '@types/node': 18.7.23 chalk: 4.1.2 graceful-fs: 4.2.10 is-ci: 2.0.0 @@ -12144,7 +12047,7 @@ packages: resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.7.20 + '@types/node': 18.7.23 merge-stream: 2.0.0 supports-color: 7.2.0 dev: true @@ -12153,7 +12056,7 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 16.11.60 + '@types/node': 16.11.62 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true @@ -12204,7 +12107,7 @@ 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: @@ -12215,6 +12118,10 @@ packages: resolution: {integrity: sha512-Y2/yD55y5jteOAmY50JbUZYwk3CP3wnLPEZnlR1w9oKhITrBEtAxwuWKebFf8hMrPMgbYwFoWK/lH2sBkErELw==} 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'} @@ -12236,25 +12143,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 @@ -12425,7 +12332,7 @@ packages: dependencies: '@babel/runtime': 7.19.0 app-root-dir: 1.0.2 - core-js: 3.25.2 + core-js: 3.25.3 dotenv: 8.6.0 dotenv-expand: 5.1.0 @@ -12604,7 +12511,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==} @@ -12717,8 +12624,8 @@ packages: hasBin: true dev: true - /magic-string/0.26.4: - resolution: {integrity: sha512-e5uXtVJ22aEpK9u1+eQf0fSxHeqwyV19K+uGnlROCxUhzwRip9tBsaMViK/0vC3viyPd5Gtucp3UmEp/Q2cPTQ==} + /magic-string/0.26.5: + resolution: {integrity: sha512-yXUIYOOQnEHKHOftp5shMWpB9ImfgfDJpapa38j/qMtTj5QHWucvxP4lUtuRmHT9vAzvtpHkWKXW9xBwimXeNg==} engines: {node: '>=12'} dependencies: sourcemap-codec: 1.4.8 @@ -12828,6 +12735,13 @@ packages: 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'} @@ -12872,7 +12786,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: @@ -12924,7 +12838,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==} @@ -12968,6 +12882,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 @@ -13185,6 +13103,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} @@ -13251,11 +13175,11 @@ 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.25.0: + resolution: {integrity: sha512-p+0xx5ruIQ+8X57CRIMxbTZRT7tU0Tjn2C/aAK68AEMrbGsCo6IjnDdPNhEyyjWCT4bRtzomXchYd3sSgk3BJQ==} engines: {node: '>=10'} dependencies: semver: 7.3.7 @@ -13317,13 +13241,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 @@ -13498,6 +13422,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 @@ -13966,7 +13894,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==} @@ -14113,11 +14041,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 @@ -14139,27 +14067,27 @@ packages: postcss: 7.0.39 dev: true - /postcss-import/14.1.0_postcss@8.4.16: + /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.16 + postcss: 8.4.17 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.1 - /postcss-js/4.0.0_postcss@8.4.16: + /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.16 + postcss: 8.4.17 - /postcss-load-config/3.1.4_postcss@8.4.16: + /postcss-load-config/3.1.4_postcss@8.4.17: resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} engines: {node: '>= 10'} peerDependencies: @@ -14172,7 +14100,7 @@ packages: 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: @@ -14206,7 +14134,7 @@ packages: semver: 7.3.7 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: @@ -14215,7 +14143,7 @@ packages: dependencies: cosmiconfig: 7.0.1 klona: 2.0.5 - postcss: 8.4.16 + postcss: 8.4.17 semver: 7.3.7 dev: true @@ -14226,13 +14154,13 @@ packages: postcss: 7.0.39 dev: true - /postcss-modules-extract-imports/3.0.0_postcss@8.4.16: + /postcss-modules-extract-imports/3.0.0_postcss@8.4.17: resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - postcss: 8.4.16 + postcss: 8.4.17 dev: true /postcss-modules-local-by-default/3.0.3: @@ -14245,14 +14173,14 @@ packages: postcss-value-parser: 4.2.0 dev: true - /postcss-modules-local-by-default/4.0.0_postcss@8.4.16: + /postcss-modules-local-by-default/4.0.0_postcss@8.4.17: 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 + icss-utils: 5.1.0_postcss@8.4.17 + postcss: 8.4.17 postcss-selector-parser: 6.0.10 postcss-value-parser: 4.2.0 dev: true @@ -14265,13 +14193,13 @@ packages: postcss-selector-parser: 6.0.10 dev: true - /postcss-modules-scope/3.0.0_postcss@8.4.16: + /postcss-modules-scope/3.0.0_postcss@8.4.17: resolution: {integrity: sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - postcss: 8.4.16 + postcss: 8.4.17 postcss-selector-parser: 6.0.10 dev: true @@ -14282,23 +14210,23 @@ packages: postcss: 7.0.39 dev: true - /postcss-modules-values/4.0.0_postcss@8.4.16: + /postcss-modules-values/4.0.0_postcss@8.4.17: 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 + icss-utils: 5.1.0_postcss@8.4.17 + postcss: 8.4.17 dev: true - /postcss-nested/5.0.6_postcss@8.4.16: + /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.16 + postcss: 8.4.17 postcss-selector-parser: 6.0.10 /postcss-selector-parser/6.0.10: @@ -14319,8 +14247,8 @@ packages: source-map: 0.6.1 dev: true - /postcss/8.4.16: - resolution: {integrity: sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==} + /postcss/8.4.17: + resolution: {integrity: sha512-UNxNOLQydcOFi41yHNMcKRZ39NeXlr8AxGuZJsdub8vIb12fHzcq37DTU/QtbI6WLxNg2gF9Z+8qtRwTj1UI1Q==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.4 @@ -14338,7 +14266,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.25.0 pump: 3.0.0 rc: 1.2.8 simple-get: 4.0.1 @@ -14626,7 +14554,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. @@ -14744,12 +14672,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: @@ -14757,8 +14685,8 @@ packages: engines: {node: '>=8.10.0'} hasBin: true dependencies: - '@babel/core': 7.19.1 - '@babel/generator': 7.19.0 + '@babel/core': 7.19.3 + '@babel/generator': 7.19.3 '@babel/runtime': 7.19.0 ast-types: 0.14.2 commander: 2.20.3 @@ -14930,12 +14858,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: @@ -14943,11 +14870,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: @@ -14955,11 +14882,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'} @@ -14999,24 +14921,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.1_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-MY7NJCrGNVJtGp8ODMOBHu20UaIkmwD2V3YsAOUQoCXFk7Ppdwf55RdcGyrSj+ycSL9Uiwrb3gTLYSnzcRoXww==} + engines: {node: '>=14'} peerDependencies: react: '>=16.8' react-dom: '>=16.8' dependencies: - history: 5.3.0 + '@remix-run/router': 1.0.1 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.1_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.1_react@18.2.0: + resolution: {integrity: sha512-OJASKp5AykDWFewgWUim1vlLr7yfD4vO/h+bSgcP/ix8Md+LMHuAjovA74MQfsfhQJGGN1nHRhwS5qQQbbBt3A==} + engines: {node: '>=14'} peerDependencies: react: '>=16.8' dependencies: - history: 5.3.0 + '@remix-run/router': 1.0.1 react: 18.2.0 dev: false @@ -15403,7 +15327,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: @@ -15529,7 +15453,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 @@ -15574,8 +15498,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: @@ -15584,7 +15508,6 @@ packages: rollup: optional: true dependencies: - nanoid: 3.3.4 open: 8.4.0 source-map: 0.7.4 yargs: 17.5.1 @@ -15597,8 +15520,8 @@ packages: optionalDependencies: fsevents: 2.3.2 - /rooks/5.14.1_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-ZldHmIdi6NM9zgGJlLbYrOcwvdadzX9RLw11KgfD4WuePMz7Dy50JHZzoPz9oCaKM5iTjAaBXZ3z7Gz9dvt2Hg==} + /rooks/7.4.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-k9gOJid4/BRcznOSkce+sPlVulLj7ZuM9iEXKYk9Js4TplFULs8K/I8x1N9c0z/YkF9MHjmpe1JYVKpUJrNqVg==} engines: {node: '>=v10.24.1'} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -15630,8 +15553,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 @@ -15927,7 +15850,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: @@ -16240,7 +16163,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: @@ -16301,11 +16224,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 @@ -16550,8 +16473,8 @@ packages: dependencies: inline-style-parser: 0.1.1 - /styled-components/5.3.5_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-ndETJ9RKaaL6q41B69WudeqLzOpY1A/ET/glXkNZ2T7dPjPqpPCXXQjDFYZWwNnE5co0wX+gTCqx9mfxTmSIPg==} + /styled-components/5.3.6_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-hGTZquGAaTqhGWldX7hhfzjnIYBZ0IXQXkCYdvF1Sq3DsUaLx6+NTHC5Jj1ooM2F68sBiVz3lvhfwQs/S3l6qg==} engines: {node: '>=10'} requiresBuild: true peerDependencies: @@ -16560,11 +16483,11 @@ packages: react-is: '>= 16.8.0' dependencies: '@babel/helper-module-imports': 7.18.6 - '@babel/traverse': 7.19.1_supports-color@5.5.0 + '@babel/traverse': 7.19.3_supports-color@5.5.0 '@emotion/is-prop-valid': 1.2.0 '@emotion/stylis': 0.8.5 '@emotion/unitless': 0.7.5 - babel-plugin-styled-components: 2.0.7_styled-components@5.3.5 + babel-plugin-styled-components: 2.0.7_styled-components@5.3.6 css-to-react-native: 3.0.0 hoist-non-react-statics: 3.3.2 react: 18.2.0 @@ -16682,11 +16605,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@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 @@ -17006,7 +16929,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==} @@ -17015,7 +16938,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_gbhfbbeqrol7fxixnzbkbuanxe: resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -17034,19 +16957,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.7.23 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: @@ -17055,7 +16978,7 @@ packages: typescript: optional: true dependencies: - typescript: 4.8.3 + typescript: 4.8.4 dev: true /tsconfig/7.0.0: @@ -17439,16 +17362,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 @@ -17460,8 +17383,8 @@ packages: resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} dev: true - /uglify-js/3.17.1: - resolution: {integrity: sha512-+juFBsLLw7AqMaqJ0GFvlsGZwdQfI2ooKQB39PSBgMnMakcFosi9O8jCwE+2/2nMNcc0z63r9mwjoDG8zr+q0Q==} + /uglify-js/3.17.2: + resolution: {integrity: sha512-bbxglRjsGQMchfvXZNusUcYgiB9Hx2K4AHYXQy2DITZ9Rd+JzhX7+hoocE5Winr7z2oHvPsekkBwXtigvxevXg==} engines: {node: '>=0.8.0'} hasBin: true requiresBuild: true @@ -17590,6 +17513,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'} @@ -17839,7 +17769,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: @@ -17927,7 +17857,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: @@ -17954,11 +17884,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 @@ -17987,7 +17917,7 @@ packages: resolution: {integrity: sha512-uMSDbItT78QsXM2fPdQjy43eiXoS5JBq81yziekBg3FPtgJvBDhnyo/i1ZaI7M8FLsXOmaeVzH5bjNsvcZ08Sg==} dev: true - /vite-plugin-markdown/2.1.0_vite@3.1.3: + /vite-plugin-markdown/2.1.0_vite@3.1.4: resolution: {integrity: sha512-eWLlrWzYZXEX3/HaXZo/KLjRpO72IUhbgaoFrbwB07ueXi6QfwqrgdZQfUcXTSofJCkN7GhErMC1K1RTAE0gGQ==} peerDependencies: vite: ^2.0.0 || ^3.0.0 @@ -17995,10 +17925,10 @@ 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-ssr/0.4.38_vite@3.1.3: + /vite-plugin-ssr/0.4.38_vite@3.1.4: resolution: {integrity: sha512-gwbbN3AkcvkevsTCbBHzjbW2EkluCxK/0ZTirh65K9VDeoKb/bW2eB0sG65qUm3CPcSDK4mJlXa6Q0wPhmHiWA==} engines: {node: '>=12.19.0'} hasBin: true @@ -18013,34 +17943,34 @@ 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_sass@1.55.0 + vite: 3.1.4_sass@1.55.0 transitivePeerDependencies: - 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: @@ -18058,15 +17988,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: @@ -18084,8 +18014,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 @@ -18571,8 +18501,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' @@ -18587,8 +18517,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' From b250ab6861442f808b4f1e41d7c18bc1abd5da0a Mon Sep 17 00:00:00 2001 From: Oscar Beaumont Date: Sun, 2 Oct 2022 01:37:35 +0800 Subject: [PATCH 02/16] bundle splitting and performance optimisations --- .gitignore | 2 +- apps/mobile/package.json | 2 +- apps/mobile/pnpm-lock.yaml | 15 +- apps/mobile/rust/src/lib.rs | 5 +- .../src/components/modals/FileModal.tsx | 6 +- apps/mobile/src/screens/Overview.tsx | 265 ++++++++++++++---- apps/web/package.json | 2 + apps/web/vite.config.ts | 15 +- packages/interface/package.json | 3 +- packages/interface/src/App.tsx | 8 + packages/interface/src/AppLayout.tsx | 5 +- packages/interface/src/AppRouter.tsx | 169 +++++------ packages/interface/src/NotFound.tsx | 2 +- .../src/components/explorer/FileThumb.tsx | 71 ++--- .../src/components/explorer/Inspector.tsx | 33 +-- .../components/explorer/inspector/Note.tsx | 2 +- .../src/components/jobs/JobManager.tsx | 6 +- packages/interface/src/screens/Content.tsx | 4 +- packages/interface/src/screens/Debug.tsx | 4 +- .../src/screens/LocationExplorer.tsx | 4 +- packages/interface/src/screens/Overview.tsx | 4 +- packages/interface/src/screens/Photos.tsx | 4 +- .../interface/src/screens/TagExplorer.tsx | 4 +- .../src/screens/settings/Settings.tsx | 4 +- pnpm-lock.yaml | 98 ++++++- 25 files changed, 500 insertions(+), 237 deletions(-) diff --git a/.gitignore b/.gitignore index 73aded57f..c9c309319 100644 --- a/.gitignore +++ b/.gitignore @@ -65,4 +65,4 @@ examples/*/*.lock /core/src/prisma.rs /sdserver_data -.spacedrive +.spacedrive \ No newline at end of file diff --git a/apps/mobile/package.json b/apps/mobile/package.json index 49b065fb3..97ae939b7 100644 --- a/apps/mobile/package.json +++ b/apps/mobile/package.json @@ -23,7 +23,7 @@ "@tanstack/react-query": "^4.2.3", "byte-size": "^8.1.0", "class-variance-authority": "^0.2.3", - "date-fns": "^2.29.2", + "dayjs": "^1.11.5", "expo": "~46.0.10", "expo-linking": "~3.2.2", "expo-splash-screen": "~0.16.2", diff --git a/apps/mobile/pnpm-lock.yaml b/apps/mobile/pnpm-lock.yaml index c2a24bf98..fd4ed81a5 100644 --- a/apps/mobile/pnpm-lock.yaml +++ b/apps/mobile/pnpm-lock.yaml @@ -26,7 +26,7 @@ importers: babel-plugin-module-resolver: ^4.1.0 byte-size: ^8.1.0 class-variance-authority: ^0.2.3 - date-fns: ^2.29.2 + dayjs: ^1.11.5 eslint: ^8.21.0 eslint-config-prettier: ^8.5.0 eslint-plugin-react: ^7.30.1 @@ -70,7 +70,7 @@ importers: '@tanstack/react-query': 4.2.3_jk6ntyzimkrv4hwdmdgaaf5yaa byte-size: 8.1.0 class-variance-authority: 0.2.3_typescript@4.7.4 - date-fns: 2.29.2 + dayjs: 1.11.5 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 @@ -3881,13 +3881,8 @@ packages: resolution: {integrity: sha512-+LSAiGFwQ9dRnRdOeaj7g47ZFJcOUPukAP8J3A3fuZ1g9Y44BG+P1sgApjLXTQPOzC4+7S9Wr8kXsfpINM4jpw==} dev: false - /date-fns/2.29.2: - resolution: {integrity: sha512-0VNbwmWJDS/G3ySwFSJA3ayhbURMTJLtwM2DTxf9CWondCnh6DTNlO9JgRSq6ibf4eD0lfMJNBxUdEAHHix+bA==} - 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==} @@ -5886,7 +5881,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: diff --git a/apps/mobile/rust/src/lib.rs b/apps/mobile/rust/src/lib.rs index 4c9dc9510..9eaf0e03f 100644 --- a/apps/mobile/rust/src/lib.rs +++ b/apps/mobile/rust/src/lib.rs @@ -11,9 +11,10 @@ use tokio::{ #[allow(dead_code)] pub(crate) static RUNTIME: Lazy = Lazy::new(|| Runtime::new().unwrap()); +type NodeType = Lazy, Arc)>>>; + #[allow(dead_code)] -pub(crate) static NODE: Lazy, Arc)>>> = - Lazy::new(|| Mutex::new(None)); +pub(crate) static NODE: NodeType = Lazy::new(|| Mutex::new(None)); #[allow(dead_code)] pub(crate) static SUBSCRIPTIONS: Lazy>>> = 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/screens/Overview.tsx b/apps/mobile/src/screens/Overview.tsx index 05666fe54..fffec0059 100644 --- a/apps/mobile/src/screens/Overview.tsx +++ b/apps/mobile/src/screens/Overview.tsx @@ -1,65 +1,214 @@ -import React from 'react'; -import { FlatList, View } from 'react-native'; -import Device from '~/components/device/Device'; -import VirtualizedListWrapper from '~/components/layout/VirtualizedListWrapper'; -import OverviewStats from '~/containers/OverviewStats'; -import tw from '~/lib/tailwind'; -import { OverviewStackScreenProps } from '~/navigation/tabs/OverviewStack'; +import { ExclamationCircleIcon, PlusIcon } from '@heroicons/react/24/solid'; +import { useBridgeQuery, useLibraryQuery, usePlatform } from '@sd/client'; +import { Statistics } from '@sd/client'; +import { Button, Input } from '@sd/ui'; +import byteSize from 'byte-size'; +import clsx from 'clsx'; +import { useEffect } from 'react'; +import Skeleton from 'react-loading-skeleton'; +import 'react-loading-skeleton/dist/skeleton.css'; +import create from 'zustand'; -const placeholderOverviewStats = { - id: 1, - total_bytes_capacity: '8093333345230', - preview_media_bytes: '2304387532', - library_db_size: '83345230', - total_file_count: 20342345, - total_bytes_free: '89734502034', - total_bytes_used: '8093333345230', - total_unique_bytes: '9347397', - date_captured: '2020-01-01' +import { Device } from '../components/device/Device'; +import Dialog from '../components/layout/Dialog'; +import useCounter from '../hooks/useCounter'; + +interface StatItemProps { + title: string; + bytes: string; + isLoading: boolean; +} + +const StatItemNames: Partial> = { + total_bytes_capacity: 'Total capacity', + preview_media_bytes: 'Preview media', + library_db_size: 'Index size', + total_bytes_free: 'Free space' }; -const placeholderDevices: any = [ - { - name: "James' iPhone 12", - size: '47.9GB', - locations: [], - type: 'phone' - }, - { - name: "James' MacBook Pro", - size: '1TB', - locations: [], - type: 'laptop' - }, - { - name: "James' Toaster", - size: '1PB', - locations: [], - type: 'desktop' - }, - { - name: 'Spacedrive Server', - size: '5GB', - locations: [], - type: 'server' - } -]; +type OverviewStats = Partial>; +type OverviewState = { + overviewStats: OverviewStats; + setOverviewStat: (name: keyof OverviewStats, newValue: string) => void; + setOverviewStats: (stats: OverviewStats) => void; +}; + +export const useOverviewState = create((set) => ({ + overviewStats: {}, + setOverviewStat: (name, newValue) => + set((state) => ({ + ...state, + overviewStats: { + ...state.overviewStats, + [name]: newValue + } + })), + setOverviewStats: (stats) => + set((state) => ({ + ...state, + overviewStats: stats + })) +})); + +const StatItem: React.FC = (props) => { + const { title, bytes = '0', isLoading } = props; + + // const appProps = useContext(AppPropsContext); + + const size = byteSize(+bytes); + + const count = useCounter({ + name: title, + end: +size.value + }); -export default function OverviewScreen({ navigation }: OverviewStackScreenProps<'Overview'>) { return ( - - - {/* Stats */} - - {/* Devices */} - index.toString()} - renderItem={({ item }) => ( - - )} - /> - - +
+ {title} + + {isLoading && ( +
+ +
+ )} +
+ {count} + {size.unit} +
+
+
+ ); +}; + +export default function OverviewScreen() { + const platform = usePlatform(); + const { data: libraryStatistics, isLoading: isStatisticsLoading } = useLibraryQuery([ + 'library.getStatistics' + ]); + const { data: nodeState } = useBridgeQuery(['getNode']); + + const { overviewStats, setOverviewStats } = useOverviewState(); + + // get app props from context + useEffect(() => { + if (platform.demoMode === true) { + if (!Object.entries(overviewStats).length) + setOverviewStats({ + total_bytes_capacity: '8093333345230', + preview_media_bytes: '2304387532', + library_db_size: '83345230', + total_file_count: '20342345', + total_bytes_free: '89734502034', + total_bytes_used: '8093333345230', + total_unique_bytes: '9347397' + }); + } else { + const newStatistics: OverviewStats = { + total_bytes_capacity: '0', + preview_media_bytes: '0', + library_db_size: '0', + total_file_count: '0', + total_bytes_free: '0', + total_bytes_used: '0', + total_unique_bytes: '0' + }; + + Object.entries((libraryStatistics as Statistics) || {}).forEach(([key, value]) => { + newStatistics[key as keyof Statistics] = `${value}`; + }); + + setOverviewStats(newStatistics); + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [platform, libraryStatistics]); + + // useEffect(() => { + // setTimeout(() => { + // setOverviewStat('total_bytes_capacity', '4093333345230'); + // }, 2000); + // }, [overviewStats]); + + const displayableStatItems = Object.keys(StatItemNames) as unknown as keyof typeof StatItemNames; + + return ( +
+
+ {/* PAGE */} +
+ {/* STAT HEADER */} +
+ {/* STAT CONTAINER */} +
+ {Object.entries(overviewStats).map(([key, value]) => { + if (!displayableStatItems.includes(key)) return null; + + return ( + + ); + })} +
+ +
+
+
+ {}} + ctaLabel="Connect" + trigger={ + + } + > +
+
+ + This Device + + +
+
+ + Enter a device code + + +
+
+
+
+
+
+
+ + + +
+
+ Note: This is a pre-alpha build of Spacedrive, many features are yet to be + functional. +
+
+
+
); } diff --git a/apps/web/package.json b/apps/web/package.json index df365b134..44d4e572a 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -23,9 +23,11 @@ "@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.8.4", "vite": "^3.1.4", + "vite-plugin-html": "^3.2.0", "vite-plugin-svgr": "^2.2.1", "vite-plugin-tsconfig-paths": "^1.2.0" } 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/packages/interface/package.json b/packages/interface/package.json index 370e734a2..df37ad985 100644 --- a/packages/interface/package.json +++ b/packages/interface/package.json @@ -37,11 +37,10 @@ "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", "lodash": "^4.17.21", - "moment": "^2.29.4", "phosphor-react": "^1.4.1", "pretty-bytes": "^6.0.0", "react": "^18.2.0", diff --git a/packages/interface/src/App.tsx b/packages/interface/src/App.tsx index 07a4dedff..84e3fd591 100644 --- a/packages/interface/src/App.tsx +++ b/packages/interface/src/App.tsx @@ -2,6 +2,10 @@ import '@fontsource/inter/variable.css'; import { LibraryContextProvider, queryClient } from '@sd/client'; import { QueryClientProvider, defaultContext } from '@tanstack/react-query'; import { ReactQueryDevtools } from '@tanstack/react-query-devtools'; +import dayjs from 'dayjs'; +import advancedFormat from 'dayjs/plugin/advancedFormat'; +import duration from 'dayjs/plugin/duration'; +import relativeTime from 'dayjs/plugin/relativeTime'; import { ErrorBoundary } from 'react-error-boundary'; import { MemoryRouter, useNavigate } from 'react-router-dom'; @@ -9,6 +13,10 @@ import { AppRouter } from './AppRouter'; import { ErrorFallback } from './ErrorFallback'; import './style.scss'; +dayjs.extend(advancedFormat); +dayjs.extend(relativeTime); +dayjs.extend(duration); + export default function SpacedriveInterface() { return ( diff --git a/packages/interface/src/AppLayout.tsx b/packages/interface/src/AppLayout.tsx index 14a9ab835..263173dae 100644 --- a/packages/interface/src/AppLayout.tsx +++ b/packages/interface/src/AppLayout.tsx @@ -1,5 +1,6 @@ import { useCurrentLibrary } from '@sd/client'; import clsx from 'clsx'; +import { Suspense } from 'react'; import { Outlet } from 'react-router-dom'; import { Sidebar } from './components/layout/Sidebar'; @@ -29,7 +30,9 @@ export function AppLayout() { >
- + Loading...

}> + +
); diff --git a/packages/interface/src/AppRouter.tsx b/packages/interface/src/AppRouter.tsx index 363be4cfb..0ec119793 100644 --- a/packages/interface/src/AppRouter.tsx +++ b/packages/interface/src/AppRouter.tsx @@ -1,38 +1,43 @@ import { useCurrentLibrary, useInvalidateQuery } from '@sd/client'; +import { Suspense, lazy } from 'react'; import { Route, Routes } from 'react-router-dom'; import { AppLayout } from './AppLayout'; -import { NotFound } from './NotFound'; -import OnboardingScreen from './components/onboarding/Onboarding'; import { useKeybindHandler } from './hooks/useKeyboardHandler'; -import { ContentScreen } from './screens/Content'; -import { DebugScreen } from './screens/Debug'; -import { LocationExplorer } from './screens/LocationExplorer'; -import { OverviewScreen } from './screens/Overview'; -import { PhotosScreen } from './screens/Photos'; import { RedirectPage } from './screens/Redirect'; -import { TagExplorer } from './screens/TagExplorer'; -import { SettingsScreen } from './screens/settings/Settings'; -import AppearanceSettings from './screens/settings/client/AppearanceSettings'; -import ExtensionSettings from './screens/settings/client/ExtensionsSettings'; -import GeneralSettings from './screens/settings/client/GeneralSettings'; -import KeybindingSettings from './screens/settings/client/KeybindingSettings'; -import PrivacySettings from './screens/settings/client/PrivacySettings'; -import AboutSpacedrive from './screens/settings/info/AboutSpacedrive'; -import Changelog from './screens/settings/info/Changelog'; -import Support from './screens/settings/info/Support'; -import ContactsSettings from './screens/settings/library/ContactsSettings'; -import KeysSettings from './screens/settings/library/KeysSetting'; -import LibraryGeneralSettings from './screens/settings/library/LibraryGeneralSettings'; -import LocationSettings from './screens/settings/library/LocationSettings'; -import NodesSettings from './screens/settings/library/NodesSettings'; -import SecuritySettings from './screens/settings/library/SecuritySettings'; -import SharingSettings from './screens/settings/library/SharingSettings'; -import SyncSettings from './screens/settings/library/SyncSettings'; -import TagsSettings from './screens/settings/library/TagsSettings'; -import ExperimentalSettings from './screens/settings/node/ExperimentalSettings'; -import LibrarySettings from './screens/settings/node/LibrariesSettings'; -import P2PSettings from './screens/settings/node/P2PSettings'; + +const DebugScreen = lazy(() => import('./screens/Debug')); +const SettingsScreen = lazy(() => import('./screens/settings/Settings')); +const TagExplorer = lazy(() => import('./screens/TagExplorer')); +const PhotosScreen = lazy(() => import('./screens/Photos')); +const OverviewScreen = lazy(() => import('./screens/Overview')); +const ContentScreen = lazy(() => import('./screens/Content')); +const LocationExplorer = lazy(() => import('./screens/LocationExplorer')); +const OnboardingScreen = lazy(() => import('./components/onboarding/Onboarding')); +const NotFound = lazy(() => import('./NotFound')); + +const AppearanceSettings = lazy(() => import('./screens/settings/client/AppearanceSettings')); +const ExtensionSettings = lazy(() => import('./screens/settings/client/ExtensionsSettings')); +const GeneralSettings = lazy(() => import('./screens/settings/client/GeneralSettings')); +const KeybindingSettings = lazy(() => import('./screens/settings/client/KeybindingSettings')); +const PrivacySettings = lazy(() => import('./screens/settings/client/PrivacySettings')); +const AboutSpacedrive = lazy(() => import('./screens/settings/info/AboutSpacedrive')); +const Changelog = lazy(() => import('./screens/settings/info/Changelog')); +const Support = lazy(() => import('./screens/settings/info/Support')); +const ContactsSettings = lazy(() => import('./screens/settings/library/ContactsSettings')); +const KeysSettings = lazy(() => import('./screens/settings/library/KeysSetting')); +const LibraryGeneralSettings = lazy( + () => import('./screens/settings/library/LibraryGeneralSettings') +); +const LocationSettings = lazy(() => import('./screens/settings/library/LocationSettings')); +const NodesSettings = lazy(() => import('./screens/settings/library/NodesSettings')); +const SecuritySettings = lazy(() => import('./screens/settings/library/SecuritySettings')); +const SharingSettings = lazy(() => import('./screens/settings/library/SharingSettings')); +const SyncSettings = lazy(() => import('./screens/settings/library/SyncSettings')); +const TagsSettings = lazy(() => import('./screens/settings/library/TagsSettings')); +const ExperimentalSettings = lazy(() => import('./screens/settings/node/ExperimentalSettings')); +const LibrarySettings = lazy(() => import('./screens/settings/node/LibrariesSettings')); +const P2PSettings = lazy(() => import('./screens/settings/node/P2PSettings')); export function AppRouter() { const { library } = useCurrentLibrary(); @@ -41,56 +46,60 @@ export function AppRouter() { useInvalidateQuery(); return ( - - } /> - }> - {/* As we are caching the libraries in localStore so this *shouldn't* result is visual problems unless something else is wrong */} - {library === undefined ? ( - Please select or create a library in the sidebar. - } - /> - ) : ( - <> - } /> - } /> - } /> - } /> - } /> - }> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - - } /> - } /> - } /> - - )} - - + Loading...

}> + + } /> + }> + {/* As we are caching the libraries in localStore so this *shouldn't* result is visual problems unless something else is wrong */} + {library === undefined ? ( + + Please select or create a library in the sidebar. + + } + /> + ) : ( + <> + } /> + } /> + } /> + } /> + } /> + }> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + + } /> + } /> + } /> + + )} + + +
); } diff --git a/packages/interface/src/NotFound.tsx b/packages/interface/src/NotFound.tsx index aeec54c35..ad732dac1 100644 --- a/packages/interface/src/NotFound.tsx +++ b/packages/interface/src/NotFound.tsx @@ -1,7 +1,7 @@ import { Button } from '@sd/ui'; import { useNavigate } from 'react-router'; -export function NotFound() { +export default function NotFound() { const navigate = useNavigate(); return (
; + const Icon = useMemo(() => { + const icon = icons[`../../../../assets/icons/${data.extension as any}.svg`]; + const Icon = icon + ? lazy(() => icon().then((v) => ({ default: (v as any).ReactComponent }))) + : undefined; + return Icon; + }, [data.extension]); + + if (isPath(data) && data.is_dir) return ; const cas_id = isObject(data) ? data.cas_id : data.file?.cas_id; - if (cas_id) { - // this won't work - const new_thumbnail = !!getExplorerStore().newThumbnails[cas_id]; + if (!cas_id) return
; - const has_thumbnail = isObject(data) - ? data.has_thumbnail - : isPath(data) - ? data.file?.has_thumbnail - : new_thumbnail; + const has_thumbnail = isObject(data) + ? data.has_thumbnail + : isPath(data) + ? data.file?.has_thumbnail + : !!store.newThumbnails[cas_id]; - const url = platform.getThumbnailUrlById(cas_id); - - if (has_thumbnail && url) - return ( - - ); - } - - const Icon = icons[data.extension as keyof typeof icons]; + if (has_thumbnail) + return ( + + ); return (
{Icon && (
- + }> + + {data.extension} diff --git a/packages/interface/src/components/explorer/Inspector.tsx b/packages/interface/src/components/explorer/Inspector.tsx index fec89f030..106ae6bd5 100644 --- a/packages/interface/src/components/explorer/Inspector.tsx +++ b/packages/interface/src/components/explorer/Inspector.tsx @@ -1,13 +1,14 @@ import { ShareIcon } from '@heroicons/react/24/solid'; import { useLibraryQuery } from '@sd/client'; -import { ExplorerContext, ExplorerItem, File, FilePath, Location } from '@sd/client'; -import { Button, TextArea } from '@sd/ui'; +import { ExplorerContext, ExplorerItem } from '@sd/client'; +import { Button } from '@sd/ui'; +import { useQuery } from '@tanstack/react-query'; import clsx from 'clsx'; -import moment from 'moment'; +import dayjs from 'dayjs'; import { Link } from 'phosphor-react'; import { useEffect, useState } from 'react'; -import types from '../../constants/file-types.json'; +// import types from '../../constants/file-types.json'; import { Tooltip } from '../tooltip/Tooltip'; import FileThumb from './FileThumb'; import { Divider } from './inspector/Divider'; @@ -22,6 +23,11 @@ interface Props { } export const Inspector = (props: Props) => { + const { data: types } = useQuery( + ['_file-types'], + () => import('../../constants/file-types.json') + ); + const is_dir = props.data?.type === 'Path' ? props.data.is_dir : false; const objectData = isObject(props.data) ? props.data : props.data.file; @@ -41,18 +47,13 @@ export const Inspector = (props: Props) => { }); return ( -
+
{!!props.data && ( <> -
- +
+
-
+

{props.data?.name} {props.data?.extension && `.${props.data.extension}`} @@ -111,12 +112,12 @@ export const Inspector = (props: Props) => { {!is_dir && ( <> @@ -128,7 +129,7 @@ export const Inspector = (props: Props) => { )}

- {props.data?.extension + {props.data?.extension && types !== undefined ? //@ts-ignore types[props.data.extension.toUpperCase()]?.descriptions.join(' / ') : 'Unknown'} diff --git a/packages/interface/src/components/explorer/inspector/Note.tsx b/packages/interface/src/components/explorer/inspector/Note.tsx index 500cafe79..5be79dc0c 100644 --- a/packages/interface/src/components/explorer/inspector/Note.tsx +++ b/packages/interface/src/components/explorer/inspector/Note.tsx @@ -2,7 +2,7 @@ import { useLibraryMutation } from '@sd/client'; import { File } 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/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 a6751bfdc..78ff04ba2 100644 --- a/packages/interface/src/screens/LocationExplorer.tsx +++ b/packages/interface/src/screens/LocationExplorer.tsx @@ -16,7 +16,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(); @@ -39,4 +39,4 @@ export const LocationExplorer: React.FC = () => { {library!.uuid && explorerData.data && }
); -}; +} diff --git a/packages/interface/src/screens/Overview.tsx b/packages/interface/src/screens/Overview.tsx index 45d53ce23..2fa7bc601 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' @@ -211,4 +211,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/pnpm-lock.yaml b/pnpm-lock.yaml index 4ceeb59e0..ec41ecff1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -196,9 +196,11 @@ importers: 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.8.4 vite: ^3.1.4 + vite-plugin-html: ^3.2.0 vite-plugin-svgr: ^2.2.1 vite-plugin-tsconfig-paths: ^1.2.0 dependencies: @@ -216,9 +218,11 @@ importers: '@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.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 @@ -315,11 +319,10 @@ importers: byte-size: ^8.1.0 clsx: ^1.2.1 concurrently: ^7.4.0 - date-fns: ^2.29.3 + dayjs: ^1.11.5 immer: ^9.0.15 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 @@ -377,11 +380,10 @@ importers: 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 - moment: 2.29.4 phosphor-react: 1.4.1_react@18.2.0 pretty-bytes: 6.0.0 react: 18.2.0 @@ -7979,6 +7981,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'} @@ -8124,6 +8130,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==} @@ -8617,6 +8632,11 @@ packages: /date-fns/2.29.3: resolution: {integrity: sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==} engines: {node: '>=0.11'} + dev: true + + /dayjs/1.11.5: + resolution: {integrity: sha512-CAdX5Q3YW3Gclyo5Vpqkgpj8fSdLQcRuzfX6mC6Phy0nfJ0eGYOeS7m4mt2plDWLAtA4TqTakvbboHvUxfe4iA==} + dev: false /debug/2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} @@ -9026,6 +9046,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'} @@ -9091,6 +9121,14 @@ packages: /ee-first/1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + /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.269: resolution: {integrity: sha512-7mHFONwp7MNvdyto1v70fCwk28NJMFgsK79op+iYHzz1BLE8T66a1B2qW5alb8XgE0yi3FL3ZQjSYZpJpF6snw==} @@ -10137,6 +10175,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'} @@ -11983,6 +12027,17 @@ 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: sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==} dev: true @@ -13050,10 +13105,6 @@ packages: resolution: {integrity: sha512-LRvkBHaJGnrcWvqsElsOhHCzj8mU39wLx5pQ0pc6s153GynCTsPdGdqsVNKAQD9sKnWj11iF7TZx9fpLwdD3fw==} dev: true - /moment/2.29.4: - resolution: {integrity: sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==} - dev: false - /morgan/1.9.1: resolution: {integrity: sha512-HQStPIV4y3afTiCYVxirakhlCfGkI161c76kKFca7Fk1JusM//Qeo1ej2XaMniiNeaZklMVrh3vTtIzpzwbpmA==} engines: {node: '>= 0.8.0'} @@ -13206,6 +13257,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 @@ -13916,6 +13974,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'} @@ -17917,6 +17979,26 @@ packages: resolution: {integrity: sha512-uMSDbItT78QsXM2fPdQjy43eiXoS5JBq81yziekBg3FPtgJvBDhnyo/i1ZaI7M8FLsXOmaeVzH5bjNsvcZ08Sg==} dev: true + /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: From adc1f4f46e1bdee563a7bfa6ac81f73bd9bf07dc Mon Sep 17 00:00:00 2001 From: Brendan Allan Date: Wed, 5 Oct 2022 10:20:04 +0800 Subject: [PATCH 03/16] update lockfile --- Cargo.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.lock b/Cargo.lock index 9aaa961ef..f74ac67ee 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4302,7 +4302,7 @@ dependencies = [ "once_cell", "openssl", "openssl-sys", - "rspc 0.0.5", + "rspc", "sd-core", "serde_json", "tokio", From f933bbe9fe69847bd2f3bda59b688b267da20486 Mon Sep 17 00:00:00 2001 From: Brendan Allan Date: Wed, 5 Oct 2022 11:32:25 +0800 Subject: [PATCH 04/16] update pcr --- Cargo.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index dca96c59c..04d5bbc69 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,13 +10,13 @@ members = [ resolver = "2" [workspace.dependencies] -prisma-client-rust = { git = "https://github.com/Brendonovich/prisma-client-rust.git", rev = "f5d4a952d8e8bc799a0006dc5f375a22fd64ac27", features = [ +prisma-client-rust = { git = "https://github.com/Brendonovich/prisma-client-rust.git", rev = "4ea7b785ec9539d80e29c9b90ebc2010ea3a390e", features = [ "rspc", "sqlite-create-many", "migrations", "sqlite", ], default-features = false } -prisma-client-rust-cli = { git = "https://github.com/Brendonovich/prisma-client-rust.git", rev = "f5d4a952d8e8bc799a0006dc5f375a22fd64ac27", features = [ +prisma-client-rust-cli = { git = "https://github.com/Brendonovich/prisma-client-rust.git", rev = "4ea7b785ec9539d80e29c9b90ebc2010ea3a390e", features = [ "rspc", "sqlite-create-many", "migrations", From 18e019fb8df6c6787d8b2a3c7b1ae4fff064f34e Mon Sep 17 00:00:00 2001 From: Brendan Allan Date: Wed, 5 Oct 2022 12:07:41 +0800 Subject: [PATCH 05/16] update pcr to 0.6.2 branch --- Cargo.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 04d5bbc69..7d179100b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,13 +10,13 @@ members = [ resolver = "2" [workspace.dependencies] -prisma-client-rust = { git = "https://github.com/Brendonovich/prisma-client-rust.git", rev = "4ea7b785ec9539d80e29c9b90ebc2010ea3a390e", 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 = "4ea7b785ec9539d80e29c9b90ebc2010ea3a390e", features = [ +prisma-client-rust-cli = { git = "https://github.com/Brendonovich/prisma-client-rust.git", rev = "078919e3724f35cc00c2402c66ba585b61c88d47", features = [ "rspc", "sqlite-create-many", "migrations", From 136df626028f605133922961307fdfcb572c00e2 Mon Sep 17 00:00:00 2001 From: Brendan Allan Date: Wed, 5 Oct 2022 12:14:04 +0800 Subject: [PATCH 06/16] please formatter --- Cargo.lock | 6 +++--- core/src/api/jobs.rs | 20 ++++++++++---------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5f8e266b2..da2383456 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3446,7 +3446,7 @@ dependencies = [ [[package]] name = "prisma-client-rust" version = "0.6.1" -source = "git+https://github.com/Brendonovich/prisma-client-rust.git?rev=4ea7b785ec9539d80e29c9b90ebc2010ea3a390e#4ea7b785ec9539d80e29c9b90ebc2010ea3a390e" +source = "git+https://github.com/Brendonovich/prisma-client-rust.git?rev=078919e3724f35cc00c2402c66ba585b61c88d47#078919e3724f35cc00c2402c66ba585b61c88d47" dependencies = [ "base64 0.13.0", "bigdecimal", @@ -3475,7 +3475,7 @@ dependencies = [ [[package]] name = "prisma-client-rust-cli" version = "0.6.1" -source = "git+https://github.com/Brendonovich/prisma-client-rust.git?rev=4ea7b785ec9539d80e29c9b90ebc2010ea3a390e#4ea7b785ec9539d80e29c9b90ebc2010ea3a390e" +source = "git+https://github.com/Brendonovich/prisma-client-rust.git?rev=078919e3724f35cc00c2402c66ba585b61c88d47#078919e3724f35cc00c2402c66ba585b61c88d47" dependencies = [ "datamodel", "prisma-client-rust-sdk", @@ -3490,7 +3490,7 @@ dependencies = [ [[package]] name = "prisma-client-rust-sdk" version = "0.6.1" -source = "git+https://github.com/Brendonovich/prisma-client-rust.git?rev=4ea7b785ec9539d80e29c9b90ebc2010ea3a390e#4ea7b785ec9539d80e29c9b90ebc2010ea3a390e" +source = "git+https://github.com/Brendonovich/prisma-client-rust.git?rev=078919e3724f35cc00c2402c66ba585b61c88d47#078919e3724f35cc00c2402c66ba585b61c88d47" dependencies = [ "convert_case 0.5.0", "datamodel", diff --git a/core/src/api/jobs.rs b/core/src/api/jobs.rs index f71ac4de2..cf6d6fa70 100644 --- a/core/src/api/jobs.rs +++ b/core/src/api/jobs.rs @@ -47,16 +47,16 @@ pub(crate) fn mount() -> RouterBuilder { return Err(LocationError::IdNotFound(args.id).into()); } - library - .spawn_job(Job::new( - ThumbnailJobInit { - location_id: args.id, - path: PathBuf::new(), - background: true, - }, - Box::new(ThumbnailJob {}), - )) - .await; + library + .spawn_job(Job::new( + ThumbnailJobInit { + location_id: args.id, + path: PathBuf::new(), + background: true, + }, + Box::new(ThumbnailJob {}), + )) + .await; Ok(()) }, From 008b0eb72bfc938f4735ba504a0d00ecf09cf309 Mon Sep 17 00:00:00 2001 From: Brendan Allan Date: Wed, 5 Oct 2022 17:20:28 +0800 Subject: [PATCH 07/16] separate fetch & check --- .github/workflows/ci.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) 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 From df1ff85815379d087b42ac91f269fd4b58bc7a2c Mon Sep 17 00:00:00 2001 From: Oscar Beaumont Date: Thu, 6 Oct 2022 13:30:57 +0800 Subject: [PATCH 08/16] move arg structs into the builder closure --- core/src/api/files.rs | 24 +++++++++++------------ core/src/api/jobs.rs | 24 +++++++++++------------ core/src/api/libraries.rs | 14 +++++++------- core/src/api/locations.rs | 30 ++++++++++++++--------------- core/src/api/tags.rs | 40 +++++++++++++++++++-------------------- 5 files changed, 66 insertions(+), 66 deletions(-) diff --git a/core/src/api/files.rs b/core/src/api/files.rs index 2c70c36a4..e973fb299 100644 --- a/core/src/api/files.rs +++ b/core/src/api/files.rs @@ -5,18 +5,6 @@ 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", |t| { @@ -26,6 +14,12 @@ pub(crate) fn mount() -> RouterBuilder { }) }) .library_mutation("setNote", |t| { + #[derive(Type, Deserialize)] + pub struct SetNoteArgs { + pub id: i32, + pub note: Option, + } + t(|_, args: SetNoteArgs, library| async move { library .db @@ -43,6 +37,12 @@ pub(crate) fn mount() -> RouterBuilder { }) }) .library_mutation("setFavorite", |t| { + #[derive(Type, Deserialize)] + pub struct SetFavoriteArgs { + pub id: i32, + pub favorite: bool, + } + t(|_, args: SetFavoriteArgs, library| async move { library .db diff --git a/core/src/api/jobs.rs b/core/src/api/jobs.rs index cf6d6fa70..c27092f47 100644 --- a/core/src/api/jobs.rs +++ b/core/src/api/jobs.rs @@ -14,18 +14,6 @@ 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", |t| { @@ -35,6 +23,12 @@ pub(crate) fn mount() -> RouterBuilder { t(|_, _: (), library| async move { Ok(JobManager::get_history(&library).await?) }) }) .library_mutation("generateThumbsForLocation", |t| { + #[derive(Type, Deserialize)] + pub struct GenerateThumbsForLocationArgs { + pub id: i32, + pub path: PathBuf, + } + t( |_, args: GenerateThumbsForLocationArgs, library| async move { if library @@ -63,6 +57,12 @@ pub(crate) fn mount() -> RouterBuilder { ) }) .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( diff --git a/core/src/api/libraries.rs b/core/src/api/libraries.rs index 834aeb089..44d0180fc 100644 --- a/core/src/api/libraries.rs +++ b/core/src/api/libraries.rs @@ -12,13 +12,6 @@ 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", |t| { @@ -91,6 +84,13 @@ pub(crate) fn mount() -> RouterBuilder { }) }) .mutation("edit", |t| { + #[derive(Type, Deserialize)] + pub struct EditLibraryArgs { + pub id: Uuid, + pub name: Option, + pub description: Option, + } + t(|ctx, args: EditLibraryArgs| async move { Ok(ctx .library_manager diff --git a/core/src/api/locations.rs b/core/src/api/locations.rs index 662943c2f..d5a0b617f 100644 --- a/core/src/api/locations.rs +++ b/core/src/api/locations.rs @@ -15,12 +15,6 @@ use tracing::info; use super::{utils::LibraryRequest, Ctx, RouterBuilder}; -#[derive(Serialize, Deserialize, Type, Debug)] -pub struct ExplorerData { - pub context: ExplorerContext, - pub items: Vec, -} - #[derive(Serialize, Deserialize, Type, Debug)] #[serde(tag = "type")] pub enum ExplorerContext { @@ -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,14 +30,15 @@ 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, } +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, @@ -76,6 +68,14 @@ pub(crate) fn mount() -> rspc::RouterBuilder< }) }) .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 diff --git a/core/src/api/tags.rs b/core/src/api/tags.rs index e13d4ec21..b69238220 100644 --- a/core/src/api/tags.rs +++ b/core/src/api/tags.rs @@ -12,26 +12,6 @@ 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", |t| { @@ -118,6 +98,12 @@ pub(crate) fn mount() -> RouterBuilder { }) }) .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 @@ -138,6 +124,13 @@ pub(crate) fn mount() -> RouterBuilder { }) }) .library_mutation("assign", |t| { + #[derive(Debug, Type, Deserialize)] + pub struct TagAssignArgs { + pub object_id: i32, + pub tag_id: i32, + pub unassign: bool, + } + t(|_, args: TagAssignArgs, library| async move { if args.unassign { library @@ -165,6 +158,13 @@ pub(crate) fn mount() -> RouterBuilder { }) }) .library_mutation("update", |t| { + #[derive(Type, Deserialize)] + pub struct TagUpdateArgs { + pub id: i32, + pub name: Option, + pub color: Option, + } + t(|_, args: TagUpdateArgs, library| async move { library .db From 6d7285b2ea7c01d14d9d7057817c144bfcc36835 Mon Sep 17 00:00:00 2001 From: Oscar Beaumont Date: Thu, 6 Oct 2022 14:03:58 +0800 Subject: [PATCH 09/16] upgrade workspace dependencies --- Cargo.lock | 20 +- apps/desktop/package.json | 2 +- apps/web/package.json | 4 +- crates/sync/example/package.json | 16 +- package.json | 10 +- packages/client/package.json | 2 +- packages/config/package.json | 4 +- packages/interface/package.json | 62 +- packages/ui/package.json | 4 +- pnpm-lock.yaml | 1475 +++++++++++++++--------------- 10 files changed, 780 insertions(+), 819 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index da2383456..54618df8e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -654,7 +654,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "344adc371239ef32293cb1c4fe519592fcf21206c79c02854320afcdf3ab4917" dependencies = [ "percent-encoding", - "time 0.3.14", + "time 0.3.15", "version_check", ] @@ -2411,7 +2411,7 @@ dependencies = [ "dirs-next", "objc-foundation", "objc_id", - "time 0.3.14", + "time 0.3.15", ] [[package]] @@ -3055,9 +3055,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", @@ -3396,7 +3396,7 @@ dependencies = [ "indexmap", "line-wrap", "serde", - "time 0.3.14", + "time 0.3.15", "xml-rs", ] @@ -4657,9 +4657,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fd0db749597d91ff862fd1d55ea87f7855a744a8425a64695b6fca237d1dad1" +checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" [[package]] name = "socket2" @@ -5164,7 +5164,7 @@ dependencies = [ "sha2 0.10.6", "tauri-utils", "thiserror", - "time 0.3.14", + "time 0.3.15", "uuid 1.1.2", "walkdir", ] @@ -5374,9 +5374,9 @@ dependencies = [ [[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", diff --git a/apps/desktop/package.json b/apps/desktop/package.json index e8fe551db..a567d20a5 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -16,7 +16,7 @@ "@sd/client": "workspace:*", "@sd/interface": "workspace:*", "@sd/ui": "workspace:*", - "@tanstack/react-query": "^4.8.0", + "@tanstack/react-query": "^4.10.1", "@tauri-apps/api": "1.1.0", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/apps/web/package.json b/apps/web/package.json index 44d4e572a..15588492d 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -8,12 +8,12 @@ "preview": "vite preview" }, "dependencies": { - "@fontsource/inter": "^4.5.12", + "@fontsource/inter": "^4.5.13", "@rspc/client": "^0.1.2", "@sd/client": "workspace:*", "@sd/interface": "workspace:*", "@sd/ui": "workspace:*", - "@tanstack/react-query": "^4.8.0", + "@tanstack/react-query": "^4.10.1", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/crates/sync/example/package.json b/crates/sync/example/package.json index 1b3589ea6..2cd744da4 100644 --- a/crates/sync/example/package.json +++ b/crates/sync/example/package.json @@ -11,22 +11,22 @@ }, "license": "MIT", "devDependencies": { - "@tauri-apps/cli": "^1.1.0", + "@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", - "postcss": "^8.4.16", + "postcss": "^8.4.17", "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", "@rspc/tauri": "~0.1.2", - "@tanstack/solid-query": "4.7.1", + "@tanstack/solid-query": "4.10.1", "clsx": "^1.2.1", - "solid-js": "^1.4.7" + "solid-js": "^1.5.7" } } diff --git a/package.json b/package.json index 41fff5125..a000e359d 100644 --- a/package.json +++ b/package.json @@ -22,15 +22,15 @@ }, "devDependencies": { "@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" }, "overrides": { "vite-plugin-svgr": "https://github.com/spacedriveapp/vite-plugin-svgr#cb4195b69849429cdb18d1f12381676bf9196a84", diff --git a/packages/client/package.json b/packages/client/package.json index 394c8eed2..9f8fd64dc 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -21,7 +21,7 @@ "@rspc/react": "^0.1.2", "@sd/config": "workspace:*", "@sd/interface": "workspace:*", - "@tanstack/react-query": "^4.8.0", + "@tanstack/react-query": "^4.10.1", "eventemitter3": "^4.0.7", "immer": "^9.0.15", "lodash": "^4.17.21", diff --git a/packages/config/package.json b/packages/config/package.json index f997cf726..ddc8bc105 100644 --- a/packages/config/package.json +++ b/packages/config/package.json @@ -7,8 +7,8 @@ "eslint-react.js" ], "devDependencies": { - "@typescript-eslint/eslint-plugin": "^5.38.1", - "@typescript-eslint/parser": "^5.38.1", + "@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.31.8", diff --git a/packages/interface/package.json b/packages/interface/package.json index c765dfcbc..9563c9469 100644 --- a/packages/interface/package.json +++ b/packages/interface/package.json @@ -15,81 +15,81 @@ "lint": "eslint src/**/*.{ts,tsx} && tsc --noEmit" }, "dependencies": { - "@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-tooltip": "^1.0.0", "@sd/assets": "workspace:*", "@sd/client": "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", - "@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", - "date-fns": "^2.29.2", + "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", "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", + "tailwindcss": "^3.1.8", "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", - "zod": "^3.18.0", - "zustand": "4.0.0" + "zod": "^3.19.1", + "zustand": "4.1.1" }, "devDependencies": { "@sd/config": "workspace:*", "@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": "^1.3.1", - "concurrently": "^7.3.0", + "concurrently": "^7.4.0", "prettier": "^2.7.1", - "typescript": "^4.7.4", - "vite": "^3.0.3", + "typescript": "^4.8.4", + "vite": "^3.1.4", "vite-plugin-svgr": "^2.2.1" } } diff --git a/packages/ui/package.json b/packages/ui/package.json index bed169404..ff8a168ff 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -17,8 +17,8 @@ "storybook:build": "build-storybook" }, "dependencies": { - "@headlessui/react": "^1.7.2", - "@heroicons/react": "^2.0.11", + "@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.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5d7288fb5..d60c0a145 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,15 +5,15 @@ 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 @@ -33,7 +33,7 @@ importers: '@sd/client': workspace:* '@sd/interface': workspace:* '@sd/ui': workspace:* - '@tanstack/react-query': ^4.8.0 + '@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 @@ -60,7 +60,7 @@ importers: '@sd/client': link:../../packages/client '@sd/interface': link:../../packages/interface '@sd/ui': link:../../packages/ui - '@tanstack/react-query': 4.8.0_biqbaboplfbrettd7655fr4n2y + '@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 @@ -85,9 +85,9 @@ importers: apps/landing: specifiers: - '@headlessui/react': ^1.7.2 - '@heroicons/react': ^2.0.11 - '@icons-pack/react-simple-icons': ^5.7.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:* @@ -99,7 +99,7 @@ importers: '@types/compression': ^1.7.2 '@types/express': ^4.17.14 '@types/marked': ^4.0.7 - '@types/node': ^18.7.23 + '@types/node': ^18.8.2 '@types/prismjs': ^1.26.0 '@types/react': ^18.0.21 '@types/react-burger-menu': ^2.8.3 @@ -112,7 +112,7 @@ importers: 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.17 prismjs: ^1.29.0 @@ -121,22 +121,22 @@ importers: react-dom: ^18.2.0 react-helmet: ^6.1.0 react-hook-form: ^7.36.1 - react-tsparticles: ^2.3.2 + 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.9.1 - tsparticles: ^2.3.2 + tsparticles: ^2.3.4 typescript: ^4.8.4 vite: ^3.1.4 vite-plugin-markdown: ^2.1.0 - vite-plugin-ssr: ^0.4.38 + 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.7.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,7 +145,7 @@ importers: '@types/compression': 1.7.2 '@types/express': 4.17.14 '@types/marked': 4.0.7 - '@types/node': 18.7.23 + '@types/node': 18.8.2 '@types/react': 18.0.21 '@types/react-burger-menu': 2.8.3 '@types/react-dom': 18.0.6 @@ -155,7 +155,7 @@ importers: 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_gbhfbbeqrol7fxixnzbkbuanxe - tsparticles: 2.3.2 + 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.38_vite@3.1.4 + vite-plugin-ssr: 0.4.39_vite@3.1.4 devDependencies: '@sd/config': link:../../packages/config '@tailwindcss/line-clamp': 0.4.2 @@ -189,12 +189,12 @@ importers: apps/web: specifiers: - '@fontsource/inter': ^4.5.12 + '@fontsource/inter': ^4.5.13 '@rspc/client': ^0.1.2 '@sd/client': workspace:* '@sd/interface': workspace:* '@sd/ui': workspace:* - '@tanstack/react-query': ^4.8.0 + '@tanstack/react-query': ^4.10.1 '@types/react': ^18.0.21 '@types/react-dom': ^18.0.6 '@vitejs/plugin-react': ^2.1.0 @@ -210,12 +210,12 @@ importers: vite-plugin-svgr: ^2.2.1 vite-plugin-tsconfig-paths: ^1.2.0 dependencies: - '@fontsource/inter': 4.5.12 + '@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.8.0_biqbaboplfbrettd7655fr4n2y + '@tanstack/react-query': 4.10.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 devDependencies: @@ -237,32 +237,32 @@ importers: '@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.23 + '@types/node': 18.8.2 autoprefixer: 10.4.12_postcss@8.4.17 postcss: 8.4.17 - tailwindcss: 3.1.8_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 @@ -279,7 +279,7 @@ importers: '@rspc/react': ^0.1.2 '@sd/config': workspace:* '@sd/interface': workspace:* - '@tanstack/react-query': ^4.8.0 + '@tanstack/react-query': ^4.10.1 '@types/lodash': ^4.14.186 '@types/react': ^18.0.21 eventemitter3: ^4.0.7 @@ -293,10 +293,10 @@ importers: zustand: 4.1.1 dependencies: '@rspc/client': 0.1.2 - '@rspc/react': 0.1.2_6whdt7z2dcc6pbhv5hm3vpwf44 + '@rspc/react': 0.1.2_2j6p62nqyqxwo4xyixi65nw6l4 '@sd/config': link:../config '@sd/interface': link:../interface - '@tanstack/react-query': 4.8.0 + '@tanstack/react-query': 4.10.1 eventemitter3: 4.0.7 immer: 9.0.15 lodash: 4.17.21 @@ -312,15 +312,15 @@ importers: packages/config: specifiers: - '@typescript-eslint/eslint-plugin': ^5.38.1 - '@typescript-eslint/parser': ^5.38.1 + '@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.31.8 eslint-plugin-react-hooks: ^4.6.0 devDependencies: - '@typescript-eslint/eslint-plugin': 5.38.1_gofx6msuqd4luqedfouzks2s4u - '@typescript-eslint/parser': 5.38.1_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 @@ -328,96 +328,96 @@ 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-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-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.8.0_biqbaboplfbrettd7655fr4n2y - '@tanstack/react-query-devtools': 4.8.0_nscguit52pwjmvr4nqvhrqfsfq + '@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.4 autoprefixer: 10.4.12 @@ -443,13 +443,13 @@ 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 @@ -457,13 +457,13 @@ importers: 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.186 - '@types/node': 18.7.23 + '@types/node': 18.8.2 '@types/pretty-bytes': 5.2.0 '@types/react': 18.0.21 '@types/react-dom': 18.0.6 @@ -480,8 +480,8 @@ importers: packages/ui: specifiers: '@babel/core': ^7.19.3 - '@headlessui/react': ^1.7.2 - '@heroicons/react': ^2.0.11 + '@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:* @@ -518,8 +518,8 @@ importers: 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 @@ -530,7 +530,7 @@ importers: react: 18.2.0 react-dom: 18.2.0_react@18.2.0 storybook: 6.5.12_yalvw3r2waubxycyb7k7qsruca - tailwindcss: 3.1.8_postcss@8.4.17 + tailwindcss: 3.1.8 devDependencies: '@babel/core': 7.19.3 '@sd/config': link:../config @@ -1079,7 +1079,7 @@ 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 @@ -1840,7 +1840,7 @@ packages: 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.3 + core-js-compat: 3.25.5 semver: 6.3.0 transitivePeerDependencies: - supports-color @@ -2052,8 +2052,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 @@ -2067,7 +2067,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 @@ -2076,7 +2076,7 @@ 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.11 + '@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 @@ -2210,8 +2210,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: @@ -2246,8 +2246,8 @@ packages: resolution: {integrity: sha512-MUwA2YKpqaQOSR4V1/CVGRNk8Ii5kf6I8Ch+4/BhRZRQXuwWbi21rDRYWPqdQWps7VNzAbbMA+PQDWsD5YY38g==} dev: true - /@cspell/dict-software-terms/2.2.11: - resolution: {integrity: sha512-PZ8EqFSCEoJzcH/bp/+c2ze6aCK/8u5b7Qt1+O2Cwzmr8VLVZIVcpHpELnh4IvT4MRvzfa2WCDoUSofPwAfrsg==} + /@cspell/dict-software-terms/2.2.12: + resolution: {integrity: sha512-wVVy4on8Uq5VAWm3cqrrhewTRRbpmNxtmTURGQ5rT6FqUtJvZ7W2Pj3QquzXsA9zSFZhGFQR3U7IdFesET9yAg==} dev: true /@cspell/dict-sql/1.0.4: @@ -2422,16 +2422,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 @@ -2441,8 +2441,8 @@ 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: @@ -2473,8 +2473,8 @@ packages: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} dev: true - /@icons-pack/react-simple-icons/5.7.0_react@18.2.0: - resolution: {integrity: sha512-zQtA7+UIxk5qWBcXgVBD6okSuLmSCw6n0D5x8YTim59i+IH5Y35gGPvJDK6ce5eCVNarCODIZylBQXb/OPX33g==} + /@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: @@ -2526,7 +2526,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 @@ -2537,7 +2537,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 @@ -3034,7 +3034,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: @@ -3073,7 +3073,7 @@ packages: dependencies: ansi-html-community: 0.0.8 common-path-prefix: 3.0.0 - core-js-pure: 3.25.3 + core-js-pure: 3.25.5 error-stack-parser: 2.1.4 find-up: 5.0.0 html-entities: 2.3.3 @@ -3088,14 +3088,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 @@ -3118,19 +3112,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: @@ -3146,15 +3127,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: @@ -3183,15 +3155,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: @@ -3392,16 +3355,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: @@ -3414,15 +3367,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: @@ -3445,34 +3400,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: @@ -3529,15 +3476,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: @@ -3547,16 +3485,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: @@ -3567,15 +3495,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: @@ -3586,15 +3505,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: @@ -3604,10 +3514,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 @@ -3623,15 +3533,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: @@ -3660,6 +3561,11 @@ 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'} @@ -3672,24 +3578,24 @@ packages: resolution: {integrity: sha512-MfgSZkrqVzzqCN4GU3LKhfy4qG+PS1LpEz/MMays6rtz5EFNJIvEVMA5Ooc+DH8KLe5h4/3bf4dfyEs7czhA2w==} dev: false - /@rspc/react/0.1.2_6whdt7z2dcc6pbhv5hm3vpwf44: + /@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.1.2 - '@tanstack/react-query': 4.8.0 + '@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 @@ -3742,7 +3648,7 @@ packages: '@storybook/core-events': 6.5.12 '@storybook/csf': 0.0.2--canary.4566f4d.1 '@storybook/theming': 6.5.12_biqbaboplfbrettd7655fr4n2y - core-js: 3.25.3 + core-js: 3.25.5 fast-deep-equal: 3.1.3 global: 4.4.0 lodash: 4.17.21 @@ -3776,7 +3682,7 @@ packages: '@storybook/core-events': 6.5.12 '@storybook/csf': 0.0.2--canary.4566f4d.1 '@storybook/theming': 6.5.12_biqbaboplfbrettd7655fr4n2y - core-js: 3.25.3 + core-js: 3.25.5 global: 4.4.0 memoizerific: 1.11.3 react: 18.2.0 @@ -3806,7 +3712,7 @@ packages: '@storybook/node-logger': 6.5.12 '@storybook/store': 6.5.12_biqbaboplfbrettd7655fr4n2y '@storybook/theming': 6.5.12_biqbaboplfbrettd7655fr4n2y - core-js: 3.25.3 + core-js: 3.25.5 lodash: 4.17.21 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -3853,7 +3759,7 @@ packages: '@storybook/store': 6.5.12_biqbaboplfbrettd7655fr4n2y '@storybook/theming': 6.5.12_biqbaboplfbrettd7655fr4n2y babel-loader: 8.2.5_@babel+core@7.19.3 - core-js: 3.25.3 + core-js: 3.25.5 fast-deep-equal: 3.1.3 global: 4.4.0 lodash: 4.17.21 @@ -3946,7 +3852,7 @@ packages: '@storybook/builder-webpack5': 6.5.12_yalvw3r2waubxycyb7k7qsruca '@storybook/core-common': 6.5.12_yalvw3r2waubxycyb7k7qsruca '@storybook/node-logger': 6.5.12 - core-js: 3.25.3 + core-js: 3.25.5 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 regenerator-runtime: 0.13.9 @@ -3982,7 +3888,7 @@ packages: '@storybook/csf': 0.0.2--canary.4566f4d.1 '@storybook/instrumenter': 6.5.12_biqbaboplfbrettd7655fr4n2y '@storybook/theming': 6.5.12_biqbaboplfbrettd7655fr4n2y - core-js: 3.25.3 + core-js: 3.25.5 global: 4.4.0 jest-mock: 27.5.1 polished: 4.2.2 @@ -4016,7 +3922,7 @@ packages: '@storybook/csf': 0.0.2--canary.4566f4d.1 '@storybook/router': 6.5.12_biqbaboplfbrettd7655fr4n2y '@types/qs': 6.9.7 - core-js: 3.25.3 + core-js: 3.25.5 global: 4.4.0 prop-types: 15.8.1 qs: 6.11.0 @@ -4043,7 +3949,7 @@ packages: '@storybook/components': 6.5.12_biqbaboplfbrettd7655fr4n2y '@storybook/core-events': 6.5.12 '@storybook/csf': 0.0.2--canary.4566f4d.1 - core-js: 3.25.3 + core-js: 3.25.5 global: 4.4.0 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -4066,7 +3972,7 @@ packages: '@storybook/components': 6.5.12_biqbaboplfbrettd7655fr4n2y '@storybook/core-events': 6.5.12 '@storybook/csf': 0.0.2--canary.4566f4d.1 - core-js: 3.25.3 + core-js: 3.25.5 global: 4.4.0 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -4103,7 +4009,7 @@ packages: '@storybook/client-logger': 6.5.12 '@storybook/components': 6.5.12_biqbaboplfbrettd7655fr4n2y '@storybook/theming': 6.5.12_biqbaboplfbrettd7655fr4n2y - core-js: 3.25.3 + core-js: 3.25.5 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 regenerator-runtime: 0.13.9 @@ -4126,7 +4032,7 @@ packages: '@storybook/components': 6.5.12_biqbaboplfbrettd7655fr4n2y '@storybook/core-events': 6.5.12 '@storybook/theming': 6.5.12_biqbaboplfbrettd7655fr4n2y - core-js: 3.25.3 + core-js: 3.25.5 global: 4.4.0 memoizerific: 1.11.3 prop-types: 15.8.1 @@ -4149,7 +4055,7 @@ packages: '@storybook/router': 6.5.12_biqbaboplfbrettd7655fr4n2y '@storybook/theming': 6.5.12_biqbaboplfbrettd7655fr4n2y '@types/webpack-env': 1.18.0 - core-js: 3.25.3 + core-js: 3.25.5 global: 4.4.0 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -4169,7 +4075,7 @@ packages: '@storybook/router': 6.5.12_biqbaboplfbrettd7655fr4n2y '@storybook/semver': 7.3.2 '@storybook/theming': 6.5.12_biqbaboplfbrettd7655fr4n2y - core-js: 3.25.3 + core-js: 3.25.5 fast-deep-equal: 3.1.3 global: 4.4.0 lodash: 4.17.21 @@ -4210,12 +4116,12 @@ packages: '@storybook/store': 6.5.12_biqbaboplfbrettd7655fr4n2y '@storybook/theming': 6.5.12_biqbaboplfbrettd7655fr4n2y '@storybook/ui': 6.5.12_biqbaboplfbrettd7655fr4n2y - '@types/node': 16.11.62 + '@types/node': 16.11.64 '@types/webpack': 4.41.32 autoprefixer: 9.8.8 babel-loader: 8.2.5_jeg5564y5etyvi3ajplf6yhqg4 case-sensitive-paths-webpack-plugin: 2.4.0 - core-js: 3.25.3 + core-js: 3.25.5 css-loader: 3.6.0_webpack@4.46.0 file-loader: 6.2.0_webpack@4.46.0 find-up: 5.0.0 @@ -4278,12 +4184,12 @@ packages: '@storybook/semver': 7.3.2 '@storybook/store': 6.5.12_biqbaboplfbrettd7655fr4n2y '@storybook/theming': 6.5.12_biqbaboplfbrettd7655fr4n2y - '@types/node': 16.11.62 + '@types/node': 16.11.64 babel-loader: 8.2.5_wfdvla2jorjoj23kkavho2upde babel-plugin-named-exports-order: 0.0.2 browser-assert: 1.2.1 case-sensitive-paths-webpack-plugin: 2.4.0 - core-js: 3.25.3 + core-js: 3.25.5 css-loader: 5.2.7_webpack@5.74.0 fork-ts-checker-webpack-plugin: 6.5.2_qqxisngxjbp7lstdk7boexbu3e glob: 7.2.3 @@ -4320,7 +4226,7 @@ packages: '@storybook/channels': 6.5.12 '@storybook/client-logger': 6.5.12 '@storybook/core-events': 6.5.12 - core-js: 3.25.3 + core-js: 3.25.5 global: 4.4.0 qs: 6.11.0 telejson: 6.0.8 @@ -4331,7 +4237,7 @@ packages: dependencies: '@storybook/channels': 6.5.12 '@storybook/client-logger': 6.5.12 - core-js: 3.25.3 + core-js: 3.25.5 global: 4.4.0 telejson: 6.0.8 dev: true @@ -4339,7 +4245,7 @@ packages: /@storybook/channels/6.5.12: resolution: {integrity: sha512-X5XaKbe4b7LXJ4sUakBo00x6pXnW78JkOonHoaKoWsccHLlEzwfBZpVVekhVZnqtCoLT23dB8wjKgA71RYWoiw==} dependencies: - core-js: 3.25.3 + core-js: 3.25.5 ts-dedent: 2.2.0 util-deprecate: 1.0.2 dev: true @@ -4359,7 +4265,7 @@ packages: boxen: 5.1.2 chalk: 4.1.2 commander: 6.2.1 - core-js: 3.25.3 + core-js: 3.25.5 cross-spawn: 7.0.3 envinfo: 7.8.1 express: 4.18.1 @@ -4407,7 +4313,7 @@ packages: '@storybook/store': 6.5.12_biqbaboplfbrettd7655fr4n2y '@types/qs': 6.9.7 '@types/webpack-env': 1.18.0 - core-js: 3.25.3 + core-js: 3.25.5 fast-deep-equal: 3.1.3 global: 4.4.0 lodash: 4.17.21 @@ -4425,7 +4331,7 @@ packages: /@storybook/client-logger/6.5.12: resolution: {integrity: sha512-IrkMr5KZcudX935/C2balFbxLHhkvQnJ78rbVThHDVckQ7l3oIXTh66IMzldeOabVFDZEMiW8AWuGEYof+JtLw==} dependencies: - core-js: 3.25.3 + core-js: 3.25.5 global: 4.4.0 /@storybook/codemod/6.5.12_@babel+preset-env@7.19.3: @@ -4436,7 +4342,7 @@ packages: '@storybook/csf': 0.0.2--canary.4566f4d.1 '@storybook/csf-tools': 6.5.12 '@storybook/node-logger': 6.5.12 - core-js: 3.25.3 + core-js: 3.25.5 cross-spawn: 7.0.3 globby: 11.1.0 jscodeshift: 0.13.1_@babel+preset-env@7.19.3 @@ -4459,7 +4365,7 @@ packages: '@storybook/client-logger': 6.5.12 '@storybook/csf': 0.0.2--canary.4566f4d.1 '@storybook/theming': 6.5.12_biqbaboplfbrettd7655fr4n2y - core-js: 3.25.3 + core-js: 3.25.5 memoizerific: 1.11.3 qs: 6.11.0 react: 18.2.0 @@ -4491,7 +4397,7 @@ packages: '@storybook/ui': 6.5.12_biqbaboplfbrettd7655fr4n2y airbnb-js-shims: 2.2.1 ansi-to-html: 0.6.15 - core-js: 3.25.3 + core-js: 3.25.5 global: 4.4.0 lodash: 4.17.21 qs: 6.11.0 @@ -4528,7 +4434,7 @@ packages: '@storybook/ui': 6.5.12_biqbaboplfbrettd7655fr4n2y airbnb-js-shims: 2.2.1 ansi-to-html: 0.6.15 - core-js: 3.25.3 + core-js: 3.25.5 global: 4.4.0 lodash: 4.17.21 qs: 6.11.0 @@ -4576,13 +4482,13 @@ packages: '@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.62 + '@types/node': 16.11.64 '@types/pretty-hrtime': 1.0.1 babel-loader: 8.2.5_jeg5564y5etyvi3ajplf6yhqg4 babel-plugin-macros: 3.1.0 babel-plugin-polyfill-corejs3: 0.1.7_@babel+core@7.19.3 chalk: 4.1.2 - core-js: 3.25.3 + core-js: 3.25.5 express: 4.18.1 file-system-cache: 1.1.0 find-up: 5.0.0 @@ -4615,7 +4521,7 @@ packages: /@storybook/core-events/6.5.12: resolution: {integrity: sha512-0AMyMM19R/lHsYRfWqM8zZTXthasTAK2ExkSRzYi2GkIaVMxRKtM33YRwxKIpJ6KmIKIs8Ru3QCXu1mfCmGzNg==} dependencies: - core-js: 3.25.3 + core-js: 3.25.5 dev: true /@storybook/core-server/6.5.12_kgesy2a4vuj3eqhfm2rb2bv7ny: @@ -4648,7 +4554,7 @@ packages: '@storybook/semver': 7.3.2 '@storybook/store': 6.5.12_biqbaboplfbrettd7655fr4n2y '@storybook/telemetry': 6.5.12_yalvw3r2waubxycyb7k7qsruca - '@types/node': 16.11.62 + '@types/node': 16.11.64 '@types/node-fetch': 2.6.2 '@types/pretty-hrtime': 1.0.1 '@types/webpack': 4.41.32 @@ -4658,7 +4564,7 @@ packages: cli-table3: 0.6.3 commander: 6.2.1 compression: 1.7.4 - core-js: 3.25.3 + core-js: 3.25.5 cpy: 8.1.2 detect-port: 1.5.1 express: 4.18.1 @@ -4752,7 +4658,7 @@ packages: '@babel/types': 7.19.3 '@storybook/csf': 0.0.2--canary.4566f4d.1 '@storybook/mdx1-csf': 0.0.1_@babel+core@7.19.3 - core-js: 3.25.3 + core-js: 3.25.5 fs-extra: 9.1.0 global: 4.4.0 regenerator-runtime: 0.13.9 @@ -4771,7 +4677,7 @@ packages: '@babel/core': 7.19.3 '@storybook/csf': 0.0.2--canary.4566f4d.1 '@storybook/store': 6.5.12_biqbaboplfbrettd7655fr4n2y - core-js: 3.25.3 + core-js: 3.25.5 doctrine: 3.0.0 lodash: 4.17.21 regenerator-runtime: 0.13.9 @@ -4787,7 +4693,7 @@ packages: '@storybook/addons': 6.5.12_biqbaboplfbrettd7655fr4n2y '@storybook/client-logger': 6.5.12 '@storybook/core-events': 6.5.12 - core-js: 3.25.3 + core-js: 3.25.5 global: 4.4.0 transitivePeerDependencies: - react @@ -4813,12 +4719,12 @@ packages: '@storybook/node-logger': 6.5.12 '@storybook/theming': 6.5.12_biqbaboplfbrettd7655fr4n2y '@storybook/ui': 6.5.12_biqbaboplfbrettd7655fr4n2y - '@types/node': 16.11.62 + '@types/node': 16.11.64 '@types/webpack': 4.41.32 babel-loader: 8.2.5_jeg5564y5etyvi3ajplf6yhqg4 case-sensitive-paths-webpack-plugin: 2.4.0 chalk: 4.1.2 - core-js: 3.25.3 + core-js: 3.25.5 css-loader: 3.6.0_webpack@4.46.0 express: 4.18.1 file-loader: 6.2.0_webpack@4.46.0 @@ -4871,11 +4777,11 @@ packages: '@storybook/node-logger': 6.5.12 '@storybook/theming': 6.5.12_biqbaboplfbrettd7655fr4n2y '@storybook/ui': 6.5.12_biqbaboplfbrettd7655fr4n2y - '@types/node': 16.11.62 + '@types/node': 16.11.64 babel-loader: 8.2.5_wfdvla2jorjoj23kkavho2upde case-sensitive-paths-webpack-plugin: 2.4.0 chalk: 4.1.2 - core-js: 3.25.3 + core-js: 3.25.5 css-loader: 5.2.7_webpack@5.74.0 express: 4.18.1 find-up: 5.0.0 @@ -4932,14 +4838,14 @@ packages: dependencies: '@types/npmlog': 4.1.4 chalk: 4.1.2 - core-js: 3.25.3 + core-js: 3.25.5 npmlog: 5.0.1 pretty-hrtime: 1.0.3 /@storybook/postinstall/6.5.12: resolution: {integrity: sha512-6K73f9c2UO+w4Wtyo2BxEpEsnhPvMgqHSaJ9Yt6Tc90LaDGUbcVgy6PNibsRyuJ/KQ543WeiRO5rSZfm2uJU9A==} dependencies: - core-js: 3.25.3 + core-js: 3.25.5 dev: true /@storybook/preset-scss/1.0.3_bwzccejaufux335em5rfxw325i: @@ -4967,7 +4873,7 @@ packages: '@storybook/csf': 0.0.2--canary.4566f4d.1 '@storybook/store': 6.5.12_biqbaboplfbrettd7655fr4n2y ansi-to-html: 0.6.15 - core-js: 3.25.3 + core-js: 3.25.5 global: 4.4.0 lodash: 4.17.21 qs: 6.11.0 @@ -5044,14 +4950,14 @@ packages: '@storybook/semver': 7.3.2 '@storybook/store': 6.5.12_biqbaboplfbrettd7655fr4n2y '@types/estree': 0.0.51 - '@types/node': 16.11.62 + '@types/node': 16.11.64 '@types/webpack-env': 1.18.0 acorn: 7.4.1 acorn-jsx: 5.3.2_acorn@7.4.1 acorn-walk: 7.2.0 babel-plugin-add-react-displayname: 0.0.5 babel-plugin-react-docgen: 4.2.1 - core-js: 3.25.3 + core-js: 3.25.5 escodegen: 2.0.0 fs-extra: 9.1.0 global: 4.4.0 @@ -5097,7 +5003,7 @@ packages: react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: '@storybook/client-logger': 6.5.12 - core-js: 3.25.3 + core-js: 3.25.5 memoizerific: 1.11.3 qs: 6.11.0 react: 18.2.0 @@ -5110,7 +5016,7 @@ packages: engines: {node: '>=10'} hasBin: true dependencies: - core-js: 3.25.3 + core-js: 3.25.5 find-up: 4.1.0 /@storybook/source-loader/6.5.12_biqbaboplfbrettd7655fr4n2y: @@ -5122,7 +5028,7 @@ packages: '@storybook/addons': 6.5.12_biqbaboplfbrettd7655fr4n2y '@storybook/client-logger': 6.5.12 '@storybook/csf': 0.0.2--canary.4566f4d.1 - core-js: 3.25.3 + core-js: 3.25.5 estraverse: 5.3.0 global: 4.4.0 loader-utils: 2.0.2 @@ -5143,7 +5049,7 @@ packages: '@storybook/client-logger': 6.5.12 '@storybook/core-events': 6.5.12 '@storybook/csf': 0.0.2--canary.4566f4d.1 - core-js: 3.25.3 + core-js: 3.25.5 fast-deep-equal: 3.1.3 global: 4.4.0 lodash: 4.17.21 @@ -5164,7 +5070,7 @@ packages: '@storybook/client-logger': 6.5.12 '@storybook/core-common': 6.5.12_yalvw3r2waubxycyb7k7qsruca chalk: 4.1.2 - core-js: 3.25.3 + core-js: 3.25.5 detect-package-manager: 2.0.1 fetch-retry: 5.0.3 fs-extra: 9.1.0 @@ -5204,7 +5110,7 @@ packages: react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: '@storybook/client-logger': 6.5.12 - core-js: 3.25.3 + core-js: 3.25.5 memoizerific: 1.11.3 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -5226,7 +5132,7 @@ packages: '@storybook/router': 6.5.12_biqbaboplfbrettd7655fr4n2y '@storybook/semver': 7.3.2 '@storybook/theming': 6.5.12_biqbaboplfbrettd7655fr4n2y - core-js: 3.25.3 + core-js: 3.25.5 memoizerific: 1.11.3 qs: 6.11.0 react: 18.2.0 @@ -5235,6 +5141,13 @@ packages: resolve-from: 5.0.0 dev: true + /@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'} @@ -5244,6 +5157,13 @@ packages: '@babel/core': 7.19.3 dev: true + /@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'} @@ -5253,6 +5173,13 @@ packages: '@babel/core': 7.19.3 dev: true + /@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'} @@ -5262,6 +5189,13 @@ packages: '@babel/core': 7.19.3 dev: true + /@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'} @@ -5271,6 +5205,13 @@ packages: '@babel/core': 7.19.3 dev: true + /@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'} @@ -5280,6 +5221,13 @@ packages: '@babel/core': 7.19.3 dev: true + /@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'} @@ -5289,6 +5237,13 @@ packages: '@babel/core': 7.19.3 dev: true + /@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'} @@ -5298,6 +5253,13 @@ packages: '@babel/core': 7.19.3 dev: true + /@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'} @@ -5307,8 +5269,24 @@ packages: '@babel/core': 7.19.3 dev: true - /@svgr/babel-preset/6.3.1_@babel+core@7.19.3: - 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: + '@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/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 @@ -5324,35 +5302,37 @@ packages: '@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: + 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.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.3 - '@svgr/babel-preset': 6.3.1_@babel+core@7.19.3 - '@svgr/core': 6.3.1 - '@svgr/hast-util-to-babel-ast': 6.3.1 + '@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 @@ -5377,7 +5357,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.17 + tailwindcss: 3.1.8 dev: false /@tailwindcss/line-clamp/0.4.2: @@ -5391,7 +5371,7 @@ packages: peerDependencies: tailwindcss: '>=2.0.0 || >=3.0.0 || >=3.0.0-alpha.1' dependencies: - tailwindcss: 3.1.8_postcss@8.4.17 + tailwindcss: 3.1.8 dev: true /@tailwindcss/typography/0.5.7: @@ -5414,40 +5394,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.17 + 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.7.1: - resolution: {integrity: sha512-BzFI4KdiklxfUUgNiO6E4XsSwaX5NscuIhP7aqWbS8Hqik1KohfvO+SXpftSZHOyzm0+XpycRsip/QEs3Hx3AA==} + /@tanstack/query-core/4.10.1: + resolution: {integrity: sha512-UZRYzjgQSfYhQ+cJX0CspAbzutf8p93gR1xFjQuH3OYcb/7t3WnHkdb/qC9mbqrfWXN/JAbBTJlTU/XQHc5HbA==} dev: false - /@tanstack/query-core/4.8.0: - resolution: {integrity: sha512-PVcSqAWboFA86eNgtHTOjfHjBkNuFGAM6kPH82p1ibx1R76f7EjedZ+LZi4ZnW4ppoSl/+hUtCgWsiNQ2ViLTw==} - dev: false - - /@tanstack/react-query-devtools/4.8.0_nscguit52pwjmvr4nqvhrqfsfq: - resolution: {integrity: sha512-PJNAuUFOVfv/8FDjpL8O0DmXGkS5hONhSE9Ciyn/ewkqpAgbZOnwQ3nYj/9HKxNyciBzNx/54nPxQfe/smqoLw==} + /@tanstack/react-query-devtools/4.10.1_u34amavde33a6d2g2dyykucmvy: + resolution: {integrity: sha512-aPsFBr9zbylnQxQoCNzPF1teN+NVGdeU1xQO515FM3gq6uISUWbqirVj/mE6HHJJpH/zi0j6HD1StD5h1XdNmg==} peerDependencies: - '@tanstack/react-query': 4.8.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.8.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.8.0: - resolution: {integrity: sha512-e3QzL/S8XeA5MYqOUUABet4oZDBc1MbeUIo32r0cxEDoDJS+9oqx0az9AbBxacZ7SjM/Fy4u/eXQFBjsKGFQ6A==} + /@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 @@ -5458,12 +5435,12 @@ packages: react-native: optional: true dependencies: - '@tanstack/query-core': 4.8.0 + '@tanstack/query-core': 4.10.1 use-sync-external-store: 1.2.0 dev: false - /@tanstack/react-query/4.8.0_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-e3QzL/S8XeA5MYqOUUABet4oZDBc1MbeUIo32r0cxEDoDJS+9oqx0az9AbBxacZ7SjM/Fy4u/eXQFBjsKGFQ6A==} + /@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 @@ -5474,7 +5451,7 @@ packages: react-native: optional: true dependencies: - '@tanstack/query-core': 4.8.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 @@ -5490,12 +5467,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 @@ -5751,7 +5728,7 @@ packages: resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} dependencies: '@types/connect': 3.4.35 - '@types/node': 18.7.23 + '@types/node': 18.8.2 dev: false /@types/byte-size/8.1.0: @@ -5763,7 +5740,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 @@ -5776,7 +5753,7 @@ packages: /@types/connect/3.4.35: resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} dependencies: - '@types/node': 18.8.1 + '@types/node': 18.8.2 dev: false /@types/eslint-scope/3.7.4: @@ -5800,7 +5777,7 @@ packages: /@types/express-serve-static-core/4.17.31: resolution: {integrity: sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==} dependencies: - '@types/node': 18.7.23 + '@types/node': 18.8.2 '@types/qs': 6.9.7 '@types/range-parser': 1.2.4 dev: false @@ -5818,20 +5795,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: @@ -5880,7 +5857,7 @@ 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.186: resolution: {integrity: sha512-eHcVlLXP0c2FlMPm56ITode2AgLMSa6aJ05JTTbYbI+7EMkCEE5qk2E41d5g2lCVTqRe0GnnRFurmlCsDODrPw==} @@ -5909,12 +5886,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.62: - resolution: {integrity: sha512-K/ggecSdwAAy2NUW4WKmF4Rc03GKbsfP+k326UWgckoS+Rzd2PaWbjk76dSmqdLQvLTJAO9axiTUJ6488mFsYQ==} + /@types/node/16.11.64: + resolution: {integrity: sha512-z5hPTlVFzNwtJ2LNozTpJcD1Cu44c4LNuzaq1mwxmiHWQh2ULdR6Vjwo1UGldzRpzL0yUEdZddnfqGW2G70z6Q==} /@types/node/16.9.1: resolution: {integrity: sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==} @@ -5924,11 +5901,8 @@ packages: resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} dev: true - /@types/node/18.7.23: - resolution: {integrity: sha512-DWNcCHolDq0ZKGizjx2DZjR/PqsYwAcYUJmfMWqtVU2MBMG5Mo+xFZrhGId5r/O5HOuMPyQEcM6KUBp5lBZZBg==} - - /@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==} @@ -6020,7 +5994,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==} @@ -6029,7 +6003,7 @@ packages: resolution: {integrity: sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==} dependencies: '@types/mime': 3.0.1 - '@types/node': 18.7.23 + '@types/node': 18.8.2 dev: false /@types/source-list-map/0.1.2: @@ -6050,7 +6024,6 @@ packages: dependencies: tailwindcss: 3.1.8 transitivePeerDependencies: - - postcss - ts-node dev: true @@ -6071,10 +6044,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 @@ -6082,7 +6051,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 @@ -6090,7 +6059,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 @@ -6114,8 +6083,8 @@ packages: '@types/yargs-parser': 21.0.0 dev: true - /@typescript-eslint/eslint-plugin/5.38.1_gofx6msuqd4luqedfouzks2s4u: - resolution: {integrity: sha512-ky7EFzPhqz3XlhS7vPOoMDaQnQMn+9o5ICR9CPr/6bw8HrFkzhMSxuA3gRfiJVvs7geYrSeawGJjZoZQKCOglQ==} + /@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 @@ -6125,22 +6094,22 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/parser': 5.38.1_eslint@8.24.0 - '@typescript-eslint/scope-manager': 5.38.1 - '@typescript-eslint/type-utils': 5.38.1_eslint@8.24.0 - '@typescript-eslint/utils': 5.38.1_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.1_eslint@8.24.0: - resolution: {integrity: sha512-LDqxZBVFFQnQRz9rUZJhLmox+Ep5kdUmLatLQnCRR6523YV+XhRjfYzStQ4MheFA8kMAfUlclHSbu+RKdRwQKw==} + /@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 @@ -6149,25 +6118,25 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.38.1 - '@typescript-eslint/types': 5.38.1 - '@typescript-eslint/typescript-estree': 5.38.1 + '@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.1: - resolution: {integrity: sha512-BfRDq5RidVU3RbqApKmS7RFMtkyWMM50qWnDAkKgQiezRtLKsoyRKIvz1Ok5ilRWeD9IuHvaidaLxvGx/2eqTQ==} + /@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.1 - '@typescript-eslint/visitor-keys': 5.38.1 + '@typescript-eslint/types': 5.39.0 + '@typescript-eslint/visitor-keys': 5.39.0 dev: true - /@typescript-eslint/type-utils/5.38.1_eslint@8.24.0: - resolution: {integrity: sha512-UU3j43TM66gYtzo15ivK2ZFoDFKKP0k03MItzLdq0zV92CeGCXRfXlfQX5ILdd4/DSpHkSjIgLLLh1NtkOJOAw==} + /@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: '*' @@ -6176,8 +6145,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.38.1 - '@typescript-eslint/utils': 5.38.1_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 @@ -6185,13 +6154,13 @@ packages: - supports-color dev: true - /@typescript-eslint/types/5.38.1: - resolution: {integrity: sha512-QTW1iHq1Tffp9lNfbfPm4WJabbvpyaehQ0SrvVK2yfV79SytD9XDVxqiPvdrv2LK7DGSFo91TB2FgWanbJAZXg==} + /@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.1: - resolution: {integrity: sha512-99b5e/Enoe8fKMLdSuwrfH/C0EIbpUWmeEKHmQlGZb8msY33qn1KlkFww0z26o5Omx7EVjzVDCWEfrfCDHfE7g==} + /@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: '*' @@ -6199,27 +6168,27 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.38.1 - '@typescript-eslint/visitor-keys': 5.38.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 + semver: 7.3.8 tsutils: 3.21.0 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils/5.38.1_eslint@8.24.0: - resolution: {integrity: sha512-oIuUiVxPBsndrN81oP8tXnFa/+EcZ03qLqPDfSZ5xIJVm7A9V0rlkQwwBOAGtrdN70ZKDlKv+l1BeT4eSFxwXA==} + /@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.1 - '@typescript-eslint/types': 5.38.1 - '@typescript-eslint/typescript-estree': 5.38.1 + '@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 @@ -6228,11 +6197,11 @@ packages: - typescript dev: true - /@typescript-eslint/visitor-keys/5.38.1: - resolution: {integrity: sha512-bSHr1rRxXt54+j2n4k54p4fj8AHJ49VDWtjpImOpzQj4qjAiOpPni+V1Tyajh19Api1i844F757cur8wH3YvOA==} + /@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.1 + '@typescript-eslint/types': 5.39.0 eslint-visitor-keys: 3.3.0 dev: true @@ -6261,9 +6230,9 @@ packages: '@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.5 + magic-string: 0.26.6 react-refresh: 0.14.0 - vite: 3.1.4 + vite: 3.1.4_sass@1.55.0 transitivePeerDependencies: - supports-color @@ -6993,12 +6962,11 @@ packages: postcss: ^8.1.0 dependencies: browserslist: 4.21.4 - caniuse-lite: 1.0.30001414 + 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.17: resolution: {integrity: sha512-WrCGV9/b97Pa+jtwf5UGaRjgQIg7OK3D06GnoYoZNcG1Xb8Gt3EfuKjlhh9i/VtT16g6PYjZ69jdJ2g8FxSC4Q==} @@ -7008,7 +6976,7 @@ packages: postcss: ^8.1.0 dependencies: browserslist: 4.21.4 - caniuse-lite: 1.0.30001414 + caniuse-lite: 1.0.30001416 fraction.js: 4.2.0 normalize-range: 0.1.2 picocolors: 1.0.0 @@ -7021,7 +6989,7 @@ packages: hasBin: true dependencies: browserslist: 4.21.4 - caniuse-lite: 1.0.30001414 + caniuse-lite: 1.0.30001416 normalize-range: 0.1.2 num2fraction: 1.2.2 picocolors: 0.2.1 @@ -7119,7 +7087,7 @@ 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 @@ -7168,7 +7136,7 @@ packages: dependencies: '@babel/core': 7.19.3 '@babel/helper-define-polyfill-provider': 0.1.5_@babel+core@7.19.3 - core-js-compat: 3.25.3 + core-js-compat: 3.25.5 transitivePeerDependencies: - supports-color @@ -7179,7 +7147,7 @@ packages: dependencies: '@babel/core': 7.19.3 '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.19.3 - core-js-compat: 3.25.3 + core-js-compat: 3.25.5 transitivePeerDependencies: - supports-color @@ -7268,8 +7236,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==} @@ -7472,6 +7438,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==} @@ -7547,10 +7526,10 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001414 - electron-to-chromium: 1.4.269 + caniuse-lite: 1.0.30001416 + electron-to-chromium: 1.4.274 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==} @@ -7797,8 +7776,8 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - /caniuse-lite/1.0.30001414: - resolution: {integrity: sha512-t55jfSaWjCdocnFdKQoO+d2ct9C59UZg4dY3OnUlSZ447r8pUtIKdp0hpAzrGFultmTC+Us+KpKi4GZl/LXlFg==} + /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==} @@ -8047,6 +8026,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'} @@ -8262,7 +8250,7 @@ packages: 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: @@ -8337,6 +8325,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: @@ -8351,13 +8346,13 @@ packages: resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==} engines: {node: '>=0.10.0'} - /core-js-compat/3.25.3: - resolution: {integrity: sha512-xVtYpJQ5grszDHEUU9O7XbjjcZ0ccX3LgQsyqSvTnjX97ZqEgn9F5srmrwwwMtbKzDllyFPL+O+2OFMl1lU4TQ==} + /core-js-compat/3.25.5: + resolution: {integrity: sha512-ovcyhs2DEBUIE0MGEKHP4olCUW/XYte3Vroyxuh38rD1wAO4dHohsovUC4eAOuzFxE6b+RXvBU3UZ9o0YhUTkA==} dependencies: browserslist: 4.21.4 - /core-js-pure/3.25.3: - resolution: {integrity: sha512-T/7qvgv70MEvRkZ8p6BasLZmOVYKzOaWNBEHAU8FmveCJkl4nko2quqPQOmy6AJIp5MBanhz9no3A94NoRb0XA==} + /core-js-pure/3.25.5: + resolution: {integrity: sha512-oml3M22pHM+igfWHDfdLVq2ShWmjM2V4L+dQEBs0DWVIqEm9WHCwGAlZ6BmyBQGy5sFrJmcx+856D9lVKyGWYg==} requiresBuild: true dev: true @@ -8367,8 +8362,8 @@ packages: requiresBuild: true dev: true - /core-js/3.25.3: - resolution: {integrity: sha512-y1hvKXmPHvm5B7w4ln1S4uc9eV/O5+iFExSRUimnvIph11uaizFR8LFMdONN8hG3P2pipUfX4Y/fR8rAEtcHcQ==} + /core-js/3.25.5: + resolution: {integrity: sha512-nbm6eZSjm+ZuBQxCUPQKQCoUEfFOXjUZ8dTTyikyKaWrTYmAVbykQfwsKE5dBK88u3QCkCrzsx/PPlKfhsvgpw==} requiresBuild: true /core-util-is/1.0.3: @@ -8633,7 +8628,7 @@ packages: 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: @@ -8698,7 +8693,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 @@ -8715,7 +8710,7 @@ packages: 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: @@ -9011,7 +9006,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==} @@ -9256,8 +9250,8 @@ packages: jake: 10.8.5 dev: true - /electron-to-chromium/1.4.269: - resolution: {integrity: sha512-7mHFONwp7MNvdyto1v70fCwk28NJMFgsK79op+iYHzz1BLE8T66a1B2qW5alb8XgE0yi3FL3ZQjSYZpJpF6snw==} + /electron-to-chromium/1.4.274: + resolution: {integrity: sha512-Fgn7JZQzq85I81FpKUNxVLAzoghy8JZJ4NIue+YfUYBbu1AkpgzFvNwzF/ZNZH9ElkmJD0TSWu1F2gTpw/zZlg==} /elliptic/6.5.4: resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} @@ -9779,7 +9773,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 @@ -10565,7 +10559,7 @@ 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.4 webpack: 4.46.0 @@ -10595,7 +10589,7 @@ 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.4 webpack: 5.74.0 @@ -10925,7 +10919,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 @@ -11106,7 +11100,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==} @@ -11286,12 +11280,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: @@ -11349,7 +11337,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: @@ -12036,7 +12024,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==} @@ -12114,8 +12101,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 @@ -12184,7 +12171,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 @@ -12206,7 +12193,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.7.23 + '@types/node': 18.8.2 dev: true /jest-regex-util/26.0.0: @@ -12218,7 +12205,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 @@ -12227,7 +12214,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 @@ -12238,7 +12225,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 @@ -12247,7 +12234,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 @@ -12305,10 +12292,14 @@ packages: 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'} @@ -12519,7 +12510,7 @@ packages: dependencies: '@babel/runtime': 7.19.0 app-root-dir: 1.0.2 - core-js: 3.25.3 + core-js: 3.25.5 dotenv: 8.6.0 dotenv-expand: 5.1.0 @@ -12811,8 +12802,8 @@ packages: hasBin: true dev: true - /magic-string/0.26.5: - resolution: {integrity: sha512-yXUIYOOQnEHKHOftp5shMWpB9ImfgfDJpapa38j/qMtTj5QHWucvxP4lUtuRmHT9vAzvtpHkWKXW9xBwimXeNg==} + /magic-string/0.26.6: + resolution: {integrity: sha512-6d+3bFybzyQFJYSoRsl9ZC0wheze8M1LrQC7tNMRqXR4izUTDOLMd9BtSuExK9iAukFh+s5K0WAhc/dlQ+HKYA==} engines: {node: '>=12'} dependencies: sourcemap-codec: 1.4.8 @@ -12906,7 +12897,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: @@ -12917,11 +12908,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'} @@ -13070,6 +13068,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 @@ -13287,6 +13289,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} @@ -13356,11 +13364,11 @@ packages: resolution: {integrity: sha512-YdKcy2x0dDwOh+8BEuHvA+mnOKAhmMQDgKBOCUGaLpewdmsRYguYZSom3yA+/OrE61O/q+NMQANnun65xpI1Hw==} dev: true - /node-abi/3.25.0: - resolution: {integrity: sha512-p+0xx5ruIQ+8X57CRIMxbTZRT7tU0Tjn2C/aAK68AEMrbGsCo6IjnDdPNhEyyjWCT4bRtzomXchYd3sSgk3BJQ==} + /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: @@ -13607,6 +13615,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 @@ -14252,16 +14264,6 @@ packages: postcss: 7.0.39 dev: true - /postcss-import/14.1.0: - resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==} - engines: {node: '>=10.0.0'} - peerDependencies: - postcss: ^8.0.0 - dependencies: - postcss-value-parser: 4.2.0 - read-cache: 1.0.0 - resolve: 1.22.1 - /postcss-import/14.1.0_postcss@8.4.17: resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==} engines: {node: '>=10.0.0'} @@ -14273,14 +14275,6 @@ packages: read-cache: 1.0.0 resolve: 1.22.1 - /postcss-js/4.0.0: - 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-js/4.0.0_postcss@8.4.17: resolution: {integrity: sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==} engines: {node: ^12 || ^14 || >= 16} @@ -14290,21 +14284,6 @@ packages: camelcase-css: 2.0.1 postcss: 8.4.17 - /postcss-load-config/3.1.4: - 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 - yaml: 1.10.2 - /postcss-load-config/3.1.4_postcss@8.4.17: resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} engines: {node: '>= 10'} @@ -14333,7 +14312,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 @@ -14349,7 +14328,7 @@ 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.17: @@ -14362,7 +14341,7 @@ packages: cosmiconfig: 7.0.1 klona: 2.0.5 postcss: 8.4.17 - semver: 7.3.7 + semver: 7.3.8 dev: true /postcss-modules-extract-imports/2.0.0: @@ -14438,14 +14417,6 @@ packages: postcss: 8.4.17 dev: true - /postcss-nested/5.0.6: - 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.17: resolution: {integrity: sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==} engines: {node: '>=12.0'} @@ -14492,7 +14463,7 @@ packages: minimist: 1.2.6 mkdirp-classic: 0.5.3 napi-build-utils: 1.0.2 - node-abi: 3.25.0 + node-abi: 3.26.0 pump: 3.0.0 rc: 1.2.8 simple-get: 4.0.1 @@ -15084,12 +15055,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: @@ -15097,11 +15067,11 @@ packages: react-native: optional: true dependencies: - '@tanstack/query-core': 4.8.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: @@ -15148,24 +15118,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 @@ -15245,19 +15217,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' @@ -15735,7 +15707,7 @@ packages: dependencies: open: 8.4.0 source-map: 0.7.4 - yargs: 17.5.1 + yargs: 17.6.0 dev: true /rollup/2.78.1: @@ -15952,6 +15924,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==} @@ -16100,7 +16080,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 @@ -16710,6 +16690,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'} @@ -16805,40 +16792,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 - 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.17 - 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.17: - 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 @@ -16981,7 +16934,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: @@ -17008,7 +16961,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 @@ -17022,8 +16975,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: @@ -17186,7 +17139,7 @@ packages: resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} engines: {node: '>=6.10'} - /ts-node/10.9.1_gbhfbbeqrol7fxixnzbkbuanxe: + /ts-node/10.9.1_p2zphemn5bk5inasc666rmprwi: resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -17205,7 +17158,7 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.3 - '@types/node': 18.7.23 + '@types/node': 18.8.2 acorn: 8.8.0 acorn-walk: 8.2.0 arg: 4.1.3 @@ -17249,295 +17202,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: @@ -17701,8 +17654,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 @@ -17832,6 +17785,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'} @@ -17861,8 +17821,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' @@ -17886,7 +17846,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 @@ -18277,8 +18237,8 @@ packages: - supports-color dev: true - /vite-plugin-ssr/0.4.38_vite@3.1.4: - 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: @@ -18301,9 +18261,10 @@ packages: vite: ^2.6.0 || 3 dependencies: '@rollup/pluginutils': 4.2.1 - '@svgr/core': 6.3.1 - vite: 3.1.4 + '@svgr/core': 6.4.0 + vite: 3.1.4_sass@1.55.0 transitivePeerDependencies: + - '@babel/core' - supports-color dev: true @@ -18798,11 +18759,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 @@ -18850,23 +18811,6 @@ packages: logalot: 2.1.0 dev: true - /zustand/4.0.0_immer@9.0.15+react@18.2.0: - resolution: {integrity: sha512-OrsfQTnRXF1LZ9/vR/IqN9ws5EXUhb149xmPjErZnUrkgxS/gAHGy2dPNIVkVvoxrVe1sIydn4JjF0dYHmGeeQ==} - engines: {node: '>=12.7.0'} - peerDependencies: - immer: '>=9.0' - react: '>=16.8' - peerDependenciesMeta: - immer: - optional: true - react: - optional: true - dependencies: - immer: 9.0.15 - react: 18.2.0 - use-sync-external-store: 1.2.0_react@18.2.0 - dev: false - /zustand/4.1.1_immer@9.0.15: resolution: {integrity: sha512-h4F3WMqsZgvvaE0n3lThx4MM81Ls9xebjvrABNzf5+jb3/03YjNTSgZXeyrvXDArMeV9untvWXRw1tY+ntPYbA==} engines: {node: '>=12.7.0'} @@ -18883,6 +18827,23 @@ packages: use-sync-external-store: 1.2.0 dev: false + /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' + react: '>=16.8' + peerDependenciesMeta: + immer: + optional: true + react: + optional: true + dependencies: + immer: 9.0.15 + react: 18.2.0 + use-sync-external-store: 1.2.0_react@18.2.0 + dev: false + /zwitch/1.0.5: resolution: {integrity: sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==} From 6462a18768f69e8de328a54f11804fd434a57ff5 Mon Sep 17 00:00:00 2001 From: Oscar Beaumont Date: Thu, 6 Oct 2022 21:07:46 +0800 Subject: [PATCH 10/16] Fix mobile + upgrade Expo + even newer rspc --- Cargo.lock | 27 +- Cargo.toml | 4 +- apps/mobile/ios/Podfile.lock | 606 ++-- .../ios/Spacedrive.xcodeproj/project.pbxproj | 6 +- apps/mobile/package.json | 61 +- apps/mobile/pnpm-lock.yaml | 2945 ++++++++--------- apps/mobile/rust/src/android.rs | 165 +- apps/mobile/rust/src/ios.rs | 127 +- apps/mobile/src/hooks/rspc.ts | 26 +- apps/mobile/src/navigation/TabNavigator.tsx | 4 +- apps/mobile/src/screens/Overview.tsx | 265 +- core/Cargo.toml | 2 + core/src/api/utils/library.rs | 153 +- 13 files changed, 2139 insertions(+), 2252 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 54618df8e..59debe611 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1877,8 +1877,7 @@ checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" [[package]] name = "httpz" version = "0.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "566824942ad0ee59fd23ded19025b37b51137eab4e467e48f7cab325a43efa50" +source = "git+https://github.com/oscartbeaumont/httpz.git#d3a36ba9b9d878399e851e8b5e88387868b3a2ce" dependencies = [ "async-tungstenite", "axum", @@ -2986,9 +2985,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-src" -version = "111.22.0+1.1.1q" +version = "300.0.9+3.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f31f0d509d1c1ae9cada2f9539ff8f37933831fd5098879e482aa687d659853" +checksum = "df52116687e2d276515a1cbf0b84d2fb646f519aebe65d2fa82f28c5d078f174" dependencies = [ "cc", ] @@ -2996,8 +2995,7 @@ dependencies = [ [[package]] name = "openssl-sys" version = "0.9.76" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5230151e44c0f05157effb743e8d517472843121cf9243e8b81393edb5acd9ce" +source = "git+https://github.com/spacedriveapp/rust-openssl?rev=92c3dec225a9e984884d5b30a517e5d44a24d03b#92c3dec225a9e984884d5b30a517e5d44a24d03b" dependencies = [ "autocfg", "cc", @@ -4102,8 +4100,7 @@ dependencies = [ [[package]] name = "rspc" version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712fc4e2fc79297d308fa4575f19f6967bf7610e3292446dfb392738aeab5239" +source = "git+https://github.com/oscartbeaumont/rspc?rev=08c19f5e485dfc6841c7e9877c80058402bf71d7#08c19f5e485dfc6841c7e9877c80058402bf71d7" dependencies = [ "async-stream", "futures", @@ -4272,6 +4269,7 @@ dependencies = [ "int-enum", "itertools", "once_cell", + "openssl-sys", "prisma-client-rust", "ring", "rmp", @@ -4717,8 +4715,7 @@ dependencies = [ [[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", @@ -4731,9 +4728,8 @@ dependencies = [ [[package]] name = "specta-macros" -version = "0.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5ad5db5dea9fa5816615d722b682781214fed875fe56c1bcd0a67ee9c477d84" +version = "0.0.4" +source = "git+https://github.com/oscartbeaumont/rspc?rev=08c19f5e485dfc6841c7e9877c80058402bf71d7#08c19f5e485dfc6841c7e9877c80058402bf71d7" dependencies = [ "Inflector", "proc-macro2", @@ -6403,8 +6399,3 @@ name = "xml-rs" version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2d7d3948613f75c98fd9328cfdcc45acc4d360655289d0a7d4ec931392200a3" - -[[patch.unused]] -name = "openssl-sys" -version = "0.9.75" -source = "git+https://github.com/spacedriveapp/rust-openssl#f49328d2fc62e5ade3a321eed75cf4b250bda8b7" diff --git a/Cargo.toml b/Cargo.toml index 7d179100b..2bb63b954 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -26,4 +26,6 @@ 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/apps/mobile/ios/Podfile.lock b/apps/mobile/ios/Podfile.lock index 5825a73f1..d22ee0886 100644 --- a/apps/mobile/ios/Podfile.lock +++ b/apps/mobile/ios/Podfile.lock @@ -7,337 +7,337 @@ 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): - ExpoModulesCore - React-Core - - FBLazyVector (0.69.4) - - FBReactNativeSpec (0.69.4): - - RCT-Folly (= 2021.06.28.00-v2) - - RCTRequired (= 0.69.4) - - RCTTypeSafety (= 0.69.4) - - React-Core (= 0.69.4) - - React-jsi (= 0.69.4) - - ReactCommon/turbomodule/core (= 0.69.4) + - FBLazyVector (0.70.2) + - FBReactNativeSpec (0.70.2): + - RCT-Folly (= 2021.07.22.00) + - RCTRequired (= 0.70.2) + - RCTTypeSafety (= 0.70.2) + - React-Core (= 0.70.2) + - React-jsi (= 0.70.2) + - ReactCommon/turbomodule/core (= 0.70.2) - fmt (6.2.1) - glog (0.3.5) - - hermes-engine (0.69.4) + - hermes-engine (0.70.2) - 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 - - RCT-Folly (2021.06.28.00-v2): + - RCT-Folly (2021.07.22.00): - boost - DoubleConversion - fmt (~> 6.2.1) - glog - - RCT-Folly/Default (= 2021.06.28.00-v2) - - RCT-Folly/Default (2021.06.28.00-v2): + - RCT-Folly/Default (= 2021.07.22.00) + - RCT-Folly/Default (2021.07.22.00): - boost - DoubleConversion - fmt (~> 6.2.1) - glog - - RCT-Folly/Futures (2021.06.28.00-v2): + - RCT-Folly/Futures (2021.07.22.00): - boost - DoubleConversion - fmt (~> 6.2.1) - glog - libevent - - RCTRequired (0.69.4) - - RCTTypeSafety (0.69.4): - - FBLazyVector (= 0.69.4) - - RCTRequired (= 0.69.4) - - React-Core (= 0.69.4) - - React (0.69.4): - - React-Core (= 0.69.4) - - React-Core/DevSupport (= 0.69.4) - - React-Core/RCTWebSocket (= 0.69.4) - - React-RCTActionSheet (= 0.69.4) - - React-RCTAnimation (= 0.69.4) - - React-RCTBlob (= 0.69.4) - - React-RCTImage (= 0.69.4) - - React-RCTLinking (= 0.69.4) - - React-RCTNetwork (= 0.69.4) - - React-RCTSettings (= 0.69.4) - - React-RCTText (= 0.69.4) - - React-RCTVibration (= 0.69.4) - - React-bridging (0.69.4): - - RCT-Folly (= 2021.06.28.00-v2) - - React-jsi (= 0.69.4) - - React-callinvoker (0.69.4) - - React-Codegen (0.69.4): - - FBReactNativeSpec (= 0.69.4) - - RCT-Folly (= 2021.06.28.00-v2) - - RCTRequired (= 0.69.4) - - RCTTypeSafety (= 0.69.4) - - React-Core (= 0.69.4) - - React-jsi (= 0.69.4) - - React-jsiexecutor (= 0.69.4) - - ReactCommon/turbomodule/core (= 0.69.4) - - React-Core (0.69.4): + - RCTRequired (0.70.2) + - RCTTypeSafety (0.70.2): + - FBLazyVector (= 0.70.2) + - RCTRequired (= 0.70.2) + - React-Core (= 0.70.2) + - React (0.70.2): + - React-Core (= 0.70.2) + - React-Core/DevSupport (= 0.70.2) + - React-Core/RCTWebSocket (= 0.70.2) + - React-RCTActionSheet (= 0.70.2) + - React-RCTAnimation (= 0.70.2) + - React-RCTBlob (= 0.70.2) + - React-RCTImage (= 0.70.2) + - React-RCTLinking (= 0.70.2) + - React-RCTNetwork (= 0.70.2) + - React-RCTSettings (= 0.70.2) + - React-RCTText (= 0.70.2) + - React-RCTVibration (= 0.70.2) + - React-bridging (0.70.2): + - RCT-Folly (= 2021.07.22.00) + - React-jsi (= 0.70.2) + - React-callinvoker (0.70.2) + - React-Codegen (0.70.2): + - FBReactNativeSpec (= 0.70.2) + - RCT-Folly (= 2021.07.22.00) + - RCTRequired (= 0.70.2) + - RCTTypeSafety (= 0.70.2) + - React-Core (= 0.70.2) + - React-jsi (= 0.70.2) + - React-jsiexecutor (= 0.70.2) + - ReactCommon/turbomodule/core (= 0.70.2) + - React-Core (0.70.2): - glog - - RCT-Folly (= 2021.06.28.00-v2) - - React-Core/Default (= 0.69.4) - - React-cxxreact (= 0.69.4) - - React-jsi (= 0.69.4) - - React-jsiexecutor (= 0.69.4) - - React-perflogger (= 0.69.4) + - RCT-Folly (= 2021.07.22.00) + - React-Core/Default (= 0.70.2) + - React-cxxreact (= 0.70.2) + - React-jsi (= 0.70.2) + - React-jsiexecutor (= 0.70.2) + - React-perflogger (= 0.70.2) - Yoga - - React-Core/CoreModulesHeaders (0.69.4): + - React-Core/CoreModulesHeaders (0.70.2): - glog - - RCT-Folly (= 2021.06.28.00-v2) + - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.69.4) - - React-jsi (= 0.69.4) - - React-jsiexecutor (= 0.69.4) - - React-perflogger (= 0.69.4) + - React-cxxreact (= 0.70.2) + - React-jsi (= 0.70.2) + - React-jsiexecutor (= 0.70.2) + - React-perflogger (= 0.70.2) - Yoga - - React-Core/Default (0.69.4): + - React-Core/Default (0.70.2): - glog - - RCT-Folly (= 2021.06.28.00-v2) - - React-cxxreact (= 0.69.4) - - React-jsi (= 0.69.4) - - React-jsiexecutor (= 0.69.4) - - React-perflogger (= 0.69.4) + - RCT-Folly (= 2021.07.22.00) + - React-cxxreact (= 0.70.2) + - React-jsi (= 0.70.2) + - React-jsiexecutor (= 0.70.2) + - React-perflogger (= 0.70.2) - Yoga - - React-Core/DevSupport (0.69.4): + - React-Core/DevSupport (0.70.2): - glog - - RCT-Folly (= 2021.06.28.00-v2) - - React-Core/Default (= 0.69.4) - - React-Core/RCTWebSocket (= 0.69.4) - - React-cxxreact (= 0.69.4) - - React-jsi (= 0.69.4) - - React-jsiexecutor (= 0.69.4) - - React-jsinspector (= 0.69.4) - - React-perflogger (= 0.69.4) + - RCT-Folly (= 2021.07.22.00) + - React-Core/Default (= 0.70.2) + - React-Core/RCTWebSocket (= 0.70.2) + - React-cxxreact (= 0.70.2) + - React-jsi (= 0.70.2) + - React-jsiexecutor (= 0.70.2) + - React-jsinspector (= 0.70.2) + - React-perflogger (= 0.70.2) - Yoga - - React-Core/RCTActionSheetHeaders (0.69.4): + - React-Core/RCTActionSheetHeaders (0.70.2): - glog - - RCT-Folly (= 2021.06.28.00-v2) + - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.69.4) - - React-jsi (= 0.69.4) - - React-jsiexecutor (= 0.69.4) - - React-perflogger (= 0.69.4) + - React-cxxreact (= 0.70.2) + - React-jsi (= 0.70.2) + - React-jsiexecutor (= 0.70.2) + - React-perflogger (= 0.70.2) - Yoga - - React-Core/RCTAnimationHeaders (0.69.4): + - React-Core/RCTAnimationHeaders (0.70.2): - glog - - RCT-Folly (= 2021.06.28.00-v2) + - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.69.4) - - React-jsi (= 0.69.4) - - React-jsiexecutor (= 0.69.4) - - React-perflogger (= 0.69.4) + - React-cxxreact (= 0.70.2) + - React-jsi (= 0.70.2) + - React-jsiexecutor (= 0.70.2) + - React-perflogger (= 0.70.2) - Yoga - - React-Core/RCTBlobHeaders (0.69.4): + - React-Core/RCTBlobHeaders (0.70.2): - glog - - RCT-Folly (= 2021.06.28.00-v2) + - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.69.4) - - React-jsi (= 0.69.4) - - React-jsiexecutor (= 0.69.4) - - React-perflogger (= 0.69.4) + - React-cxxreact (= 0.70.2) + - React-jsi (= 0.70.2) + - React-jsiexecutor (= 0.70.2) + - React-perflogger (= 0.70.2) - Yoga - - React-Core/RCTImageHeaders (0.69.4): + - React-Core/RCTImageHeaders (0.70.2): - glog - - RCT-Folly (= 2021.06.28.00-v2) + - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.69.4) - - React-jsi (= 0.69.4) - - React-jsiexecutor (= 0.69.4) - - React-perflogger (= 0.69.4) + - React-cxxreact (= 0.70.2) + - React-jsi (= 0.70.2) + - React-jsiexecutor (= 0.70.2) + - React-perflogger (= 0.70.2) - Yoga - - React-Core/RCTLinkingHeaders (0.69.4): + - React-Core/RCTLinkingHeaders (0.70.2): - glog - - RCT-Folly (= 2021.06.28.00-v2) + - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.69.4) - - React-jsi (= 0.69.4) - - React-jsiexecutor (= 0.69.4) - - React-perflogger (= 0.69.4) + - React-cxxreact (= 0.70.2) + - React-jsi (= 0.70.2) + - React-jsiexecutor (= 0.70.2) + - React-perflogger (= 0.70.2) - Yoga - - React-Core/RCTNetworkHeaders (0.69.4): + - React-Core/RCTNetworkHeaders (0.70.2): - glog - - RCT-Folly (= 2021.06.28.00-v2) + - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.69.4) - - React-jsi (= 0.69.4) - - React-jsiexecutor (= 0.69.4) - - React-perflogger (= 0.69.4) + - React-cxxreact (= 0.70.2) + - React-jsi (= 0.70.2) + - React-jsiexecutor (= 0.70.2) + - React-perflogger (= 0.70.2) - Yoga - - React-Core/RCTSettingsHeaders (0.69.4): + - React-Core/RCTSettingsHeaders (0.70.2): - glog - - RCT-Folly (= 2021.06.28.00-v2) + - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.69.4) - - React-jsi (= 0.69.4) - - React-jsiexecutor (= 0.69.4) - - React-perflogger (= 0.69.4) + - React-cxxreact (= 0.70.2) + - React-jsi (= 0.70.2) + - React-jsiexecutor (= 0.70.2) + - React-perflogger (= 0.70.2) - Yoga - - React-Core/RCTTextHeaders (0.69.4): + - React-Core/RCTTextHeaders (0.70.2): - glog - - RCT-Folly (= 2021.06.28.00-v2) + - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.69.4) - - React-jsi (= 0.69.4) - - React-jsiexecutor (= 0.69.4) - - React-perflogger (= 0.69.4) + - React-cxxreact (= 0.70.2) + - React-jsi (= 0.70.2) + - React-jsiexecutor (= 0.70.2) + - React-perflogger (= 0.70.2) - Yoga - - React-Core/RCTVibrationHeaders (0.69.4): + - React-Core/RCTVibrationHeaders (0.70.2): - glog - - RCT-Folly (= 2021.06.28.00-v2) + - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.69.4) - - React-jsi (= 0.69.4) - - React-jsiexecutor (= 0.69.4) - - React-perflogger (= 0.69.4) + - React-cxxreact (= 0.70.2) + - React-jsi (= 0.70.2) + - React-jsiexecutor (= 0.70.2) + - React-perflogger (= 0.70.2) - Yoga - - React-Core/RCTWebSocket (0.69.4): + - React-Core/RCTWebSocket (0.70.2): - glog - - RCT-Folly (= 2021.06.28.00-v2) - - React-Core/Default (= 0.69.4) - - React-cxxreact (= 0.69.4) - - React-jsi (= 0.69.4) - - React-jsiexecutor (= 0.69.4) - - React-perflogger (= 0.69.4) + - RCT-Folly (= 2021.07.22.00) + - React-Core/Default (= 0.70.2) + - React-cxxreact (= 0.70.2) + - React-jsi (= 0.70.2) + - React-jsiexecutor (= 0.70.2) + - React-perflogger (= 0.70.2) - Yoga - - React-CoreModules (0.69.4): - - RCT-Folly (= 2021.06.28.00-v2) - - RCTTypeSafety (= 0.69.4) - - React-Codegen (= 0.69.4) - - React-Core/CoreModulesHeaders (= 0.69.4) - - React-jsi (= 0.69.4) - - React-RCTImage (= 0.69.4) - - ReactCommon/turbomodule/core (= 0.69.4) - - React-cxxreact (0.69.4): + - React-CoreModules (0.70.2): + - RCT-Folly (= 2021.07.22.00) + - RCTTypeSafety (= 0.70.2) + - React-Codegen (= 0.70.2) + - React-Core/CoreModulesHeaders (= 0.70.2) + - React-jsi (= 0.70.2) + - React-RCTImage (= 0.70.2) + - ReactCommon/turbomodule/core (= 0.70.2) + - React-cxxreact (0.70.2): - boost (= 1.76.0) - DoubleConversion - glog - - RCT-Folly (= 2021.06.28.00-v2) - - React-callinvoker (= 0.69.4) - - React-jsi (= 0.69.4) - - React-jsinspector (= 0.69.4) - - React-logger (= 0.69.4) - - React-perflogger (= 0.69.4) - - React-runtimeexecutor (= 0.69.4) - - React-hermes (0.69.4): + - RCT-Folly (= 2021.07.22.00) + - React-callinvoker (= 0.70.2) + - React-jsi (= 0.70.2) + - React-jsinspector (= 0.70.2) + - React-logger (= 0.70.2) + - React-perflogger (= 0.70.2) + - React-runtimeexecutor (= 0.70.2) + - React-hermes (0.70.2): - DoubleConversion - glog - hermes-engine - - RCT-Folly (= 2021.06.28.00-v2) - - RCT-Folly/Futures (= 2021.06.28.00-v2) - - React-cxxreact (= 0.69.4) - - React-jsi (= 0.69.4) - - React-jsiexecutor (= 0.69.4) - - React-jsinspector (= 0.69.4) - - React-perflogger (= 0.69.4) - - React-jsi (0.69.4): + - RCT-Folly (= 2021.07.22.00) + - RCT-Folly/Futures (= 2021.07.22.00) + - React-cxxreact (= 0.70.2) + - React-jsi (= 0.70.2) + - React-jsiexecutor (= 0.70.2) + - React-jsinspector (= 0.70.2) + - React-perflogger (= 0.70.2) + - React-jsi (0.70.2): - boost (= 1.76.0) - DoubleConversion - glog - - RCT-Folly (= 2021.06.28.00-v2) - - React-jsi/Default (= 0.69.4) - - React-jsi/Default (0.69.4): + - RCT-Folly (= 2021.07.22.00) + - React-jsi/Default (= 0.70.2) + - React-jsi/Default (0.70.2): - boost (= 1.76.0) - DoubleConversion - glog - - RCT-Folly (= 2021.06.28.00-v2) - - React-jsiexecutor (0.69.4): + - RCT-Folly (= 2021.07.22.00) + - React-jsiexecutor (0.70.2): - DoubleConversion - glog - - RCT-Folly (= 2021.06.28.00-v2) - - React-cxxreact (= 0.69.4) - - React-jsi (= 0.69.4) - - React-perflogger (= 0.69.4) - - React-jsinspector (0.69.4) - - React-logger (0.69.4): + - RCT-Folly (= 2021.07.22.00) + - React-cxxreact (= 0.70.2) + - React-jsi (= 0.70.2) + - React-perflogger (= 0.70.2) + - React-jsinspector (0.70.2) + - React-logger (0.70.2): - glog - - react-native-safe-area-context (4.3.1): + - react-native-safe-area-context (4.4.1): - RCT-Folly - RCTRequired - RCTTypeSafety - - React + - React-Core - ReactCommon/turbomodule/core - - React-perflogger (0.69.4) - - React-RCTActionSheet (0.69.4): - - React-Core/RCTActionSheetHeaders (= 0.69.4) - - React-RCTAnimation (0.69.4): - - RCT-Folly (= 2021.06.28.00-v2) - - RCTTypeSafety (= 0.69.4) - - React-Codegen (= 0.69.4) - - React-Core/RCTAnimationHeaders (= 0.69.4) - - React-jsi (= 0.69.4) - - ReactCommon/turbomodule/core (= 0.69.4) - - React-RCTBlob (0.69.4): - - RCT-Folly (= 2021.06.28.00-v2) - - React-Codegen (= 0.69.4) - - React-Core/RCTBlobHeaders (= 0.69.4) - - React-Core/RCTWebSocket (= 0.69.4) - - React-jsi (= 0.69.4) - - React-RCTNetwork (= 0.69.4) - - ReactCommon/turbomodule/core (= 0.69.4) - - React-RCTImage (0.69.4): - - RCT-Folly (= 2021.06.28.00-v2) - - RCTTypeSafety (= 0.69.4) - - React-Codegen (= 0.69.4) - - React-Core/RCTImageHeaders (= 0.69.4) - - React-jsi (= 0.69.4) - - React-RCTNetwork (= 0.69.4) - - ReactCommon/turbomodule/core (= 0.69.4) - - React-RCTLinking (0.69.4): - - React-Codegen (= 0.69.4) - - React-Core/RCTLinkingHeaders (= 0.69.4) - - React-jsi (= 0.69.4) - - ReactCommon/turbomodule/core (= 0.69.4) - - React-RCTNetwork (0.69.4): - - RCT-Folly (= 2021.06.28.00-v2) - - RCTTypeSafety (= 0.69.4) - - React-Codegen (= 0.69.4) - - React-Core/RCTNetworkHeaders (= 0.69.4) - - React-jsi (= 0.69.4) - - ReactCommon/turbomodule/core (= 0.69.4) - - React-RCTSettings (0.69.4): - - RCT-Folly (= 2021.06.28.00-v2) - - RCTTypeSafety (= 0.69.4) - - React-Codegen (= 0.69.4) - - React-Core/RCTSettingsHeaders (= 0.69.4) - - React-jsi (= 0.69.4) - - ReactCommon/turbomodule/core (= 0.69.4) - - React-RCTText (0.69.4): - - React-Core/RCTTextHeaders (= 0.69.4) - - React-RCTVibration (0.69.4): - - RCT-Folly (= 2021.06.28.00-v2) - - React-Codegen (= 0.69.4) - - React-Core/RCTVibrationHeaders (= 0.69.4) - - React-jsi (= 0.69.4) - - ReactCommon/turbomodule/core (= 0.69.4) - - React-runtimeexecutor (0.69.4): - - React-jsi (= 0.69.4) - - ReactCommon/turbomodule/core (0.69.4): + - React-perflogger (0.70.2) + - React-RCTActionSheet (0.70.2): + - React-Core/RCTActionSheetHeaders (= 0.70.2) + - React-RCTAnimation (0.70.2): + - RCT-Folly (= 2021.07.22.00) + - RCTTypeSafety (= 0.70.2) + - React-Codegen (= 0.70.2) + - React-Core/RCTAnimationHeaders (= 0.70.2) + - React-jsi (= 0.70.2) + - ReactCommon/turbomodule/core (= 0.70.2) + - React-RCTBlob (0.70.2): + - RCT-Folly (= 2021.07.22.00) + - React-Codegen (= 0.70.2) + - React-Core/RCTBlobHeaders (= 0.70.2) + - React-Core/RCTWebSocket (= 0.70.2) + - React-jsi (= 0.70.2) + - React-RCTNetwork (= 0.70.2) + - ReactCommon/turbomodule/core (= 0.70.2) + - React-RCTImage (0.70.2): + - RCT-Folly (= 2021.07.22.00) + - RCTTypeSafety (= 0.70.2) + - React-Codegen (= 0.70.2) + - React-Core/RCTImageHeaders (= 0.70.2) + - React-jsi (= 0.70.2) + - React-RCTNetwork (= 0.70.2) + - ReactCommon/turbomodule/core (= 0.70.2) + - React-RCTLinking (0.70.2): + - React-Codegen (= 0.70.2) + - React-Core/RCTLinkingHeaders (= 0.70.2) + - React-jsi (= 0.70.2) + - ReactCommon/turbomodule/core (= 0.70.2) + - React-RCTNetwork (0.70.2): + - RCT-Folly (= 2021.07.22.00) + - RCTTypeSafety (= 0.70.2) + - React-Codegen (= 0.70.2) + - React-Core/RCTNetworkHeaders (= 0.70.2) + - React-jsi (= 0.70.2) + - ReactCommon/turbomodule/core (= 0.70.2) + - React-RCTSettings (0.70.2): + - RCT-Folly (= 2021.07.22.00) + - RCTTypeSafety (= 0.70.2) + - React-Codegen (= 0.70.2) + - React-Core/RCTSettingsHeaders (= 0.70.2) + - React-jsi (= 0.70.2) + - ReactCommon/turbomodule/core (= 0.70.2) + - React-RCTText (0.70.2): + - React-Core/RCTTextHeaders (= 0.70.2) + - React-RCTVibration (0.70.2): + - RCT-Folly (= 2021.07.22.00) + - React-Codegen (= 0.70.2) + - React-Core/RCTVibrationHeaders (= 0.70.2) + - React-jsi (= 0.70.2) + - ReactCommon/turbomodule/core (= 0.70.2) + - React-runtimeexecutor (0.70.2): + - React-jsi (= 0.70.2) + - ReactCommon/turbomodule/core (0.70.2): - DoubleConversion - glog - - RCT-Folly (= 2021.06.28.00-v2) - - React-bridging (= 0.69.4) - - React-callinvoker (= 0.69.4) - - React-Core (= 0.69.4) - - React-cxxreact (= 0.69.4) - - React-jsi (= 0.69.4) - - React-logger (= 0.69.4) - - React-perflogger (= 0.69.4) - - RNCAsyncStorage (1.17.7): + - RCT-Folly (= 2021.07.22.00) + - React-bridging (= 0.70.2) + - React-callinvoker (= 0.70.2) + - React-Core (= 0.70.2) + - React-cxxreact (= 0.70.2) + - React-jsi (= 0.70.2) + - React-logger (= 0.70.2) + - React-perflogger (= 0.70.2) + - RNCAsyncStorage (1.17.10): - React-Core - - RNCMaskedView (0.2.7): + - RNCMaskedView (0.2.8): - React-Core - - RNGestureHandler (2.5.0): + - RNGestureHandler (2.7.0): - React-Core - RNReanimated (2.10.0): - DoubleConversion @@ -366,24 +366,24 @@ PODS: - React-RCTText - ReactCommon/turbomodule/core - Yoga - - RNScreens (3.15.0): + - RNScreens (3.18.0): - React-Core - React-RCTImage - - RNSVG (13.0.0): + - RNSVG (13.3.0): - React-Core - Yoga (1.14.0) 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,54 +541,54 @@ 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 + FBLazyVector: 0507edc21c06f1650c591f0981c846445469373b + FBReactNativeSpec: 585ef61b9a394a9166de579a080a0df672054319 fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9 - glog: 3d02b25ca00c2d456734d0bcff864cbc62f6ae1a - hermes-engine: 761a544537e62df2a37189389b9d2654dc1f75af + glog: 04b94705f318337d7ead9e6d17c019bd9b1f6b1b + hermes-engine: f9312a2ea8036d03b63568ebf392314f4fa8b474 libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 - lottie-ios: 6bbc53eef6957e4744a50321507015fba72d8ca6 + lottie-ios: 9ae750cdc7820fecbd3c2f0cfc493038208fcdc4 lottie-react-native: b702fab740cdb952a8e2354713d3beda63ff97b0 - RCT-Folly: b9d9fe1fc70114b751c076104e52f3b1b5e5a95a - RCTRequired: bd9d2ab0fda10171fcbcf9ba61a7df4dc15a28f4 - RCTTypeSafety: e44e139bf6ec8042db396201834fc2372f6a21cd - React: 482cd1ba23c471be1aed3800180be2427418d7be - React-bridging: c2ea4fed6fe4ed27c12fd71e88b5d5d3da107fde - React-callinvoker: d4d1f98163fb5e35545e910415ef6c04796bb188 - React-Codegen: ff35fb9c7f6ec2ed34fb6de2e1099d88dfb25f2f - React-Core: 4d3443a45b67c71d74d7243ddde9569d1e4f4fad - React-CoreModules: 70be25399366b5632ab18ecf6fe444a8165a7bea - React-cxxreact: 822d3794fc0bf206f4691592f90e086dd4f92228 - React-hermes: 7f67b8363288258c3b0cd4aef5975cb7f0b9549a - React-jsi: ffa51cbc9a78cc156cf61f79ed52ecb76dc6013b - React-jsiexecutor: a27badbbdbc0ff781813370736a2d1c7261181d4 - React-jsinspector: 8a3d3f5dcd23a91e8c80b1bf0e96902cd1dca999 - React-logger: 1088859f145b8f6dd0d3ed051a647ef0e3e80fad - react-native-safe-area-context: 6c12e3859b6f27b25de4fee8201cfb858432d8de - React-perflogger: cb386fd44c97ec7f8199c04c12b22066b0f2e1e0 - React-RCTActionSheet: f803a85e46cf5b4066c2ac5e122447f918e9c6e5 - React-RCTAnimation: 19c80fa950ccce7f4db76a2a7f2cf79baae07fc7 - React-RCTBlob: f36ab97e2d515c36df14a1571e50056be80413d5 - React-RCTImage: 2c8f0a329a116248e82f8972ffe806e47c6d1cfa - React-RCTLinking: 670f0223075aff33be3b89714f1da4f5343fc4af - React-RCTNetwork: 09385b73f4ff1f46bd5d749540fb33f69a7e5908 - React-RCTSettings: 33b12d3ac7a1f2eba069ec7bd1b84345263b3bbe - React-RCTText: a1a3ea902403bd9ae4cf6f7960551dc1d25711b5 - React-RCTVibration: 9adb4a3cbb598d1bbd46a05256f445e4b8c70603 - React-runtimeexecutor: 61ee22a8cdf8b6bb2a7fb7b4ba2cc763e5285196 - ReactCommon: 8f67bd7e0a6afade0f20718f859dc8c2275f2e83 - RNCAsyncStorage: d81ee5c3db1060afd49ea7045ad460eff82d2b7d - RNCMaskedView: cb9670ea9239998340eaab21df13fa12a1f9de15 - RNGestureHandler: bad495418bcbd3ab47017a38d93d290ebd406f50 - RNReanimated: 7faa787e8d4493fbc95fab2ad331fa7625828cfa - RNScreens: 4a1af06327774490d97342c00aee0c2bafb497b7 - RNSVG: 42a0c731b11179ebbd27a3eeeafa7201ebb476ff - Yoga: ff994563b2fd98c982ca58e8cd9db2cdaf4dda74 + RCT-Folly: 0080d0a6ebf2577475bda044aa59e2ca1f909cda + RCTRequired: d4033a367d0bfd1f23f67b501f8cdabf9afe617e + RCTTypeSafety: b112b2ccc59309a65284280c0a53baf1ce4b5860 + React: 04474547a4729eef1fb378ca42f302f4b3219eb8 + React-bridging: 1c8695b292b4a9baaca3960f6166d9766e20492d + React-callinvoker: 4d91e2db7773ee3fcea2d3a5c6beb52a5bfd4d71 + React-Codegen: 33356335c6f3b0869cb4434055fdec219139f635 + React-Core: 634b8aa20e1dad445425ee9581f4719bcfd1b19b + React-CoreModules: 746825283de4b54dcb4fd88703ff516297a5f60d + React-cxxreact: f8d2686d98b5ffed1b1de3aa62e1f81db4903153 + React-hermes: 4e9f5f9cfff42a23e7d6d8083e6c8a3f6f4926ee + React-jsi: 198b9b3e0a85e68cb6898265400fd8bf34cacda4 + React-jsiexecutor: 53bd208e5c27939c6e6365528393445a596a9a2b + React-jsinspector: 26c42646ab0bb69e29e837e23754fe7121eeaf94 + React-logger: 1bfd109a0ffa4c0989bbfac0c2d8c4abe4637faa + react-native-safe-area-context: 99b24a0c5acd0d5dcac2b1a7f18c49ea317be99a + React-perflogger: 6009895616a455781293950bbd63d53cfc7ffbc5 + React-RCTActionSheet: 5e90aa5712af18bfc86c2c6d97d4dbe0e5451c1d + React-RCTAnimation: 50c44d6501f8bfb2fe885e544501f8798b4ff3d6 + React-RCTBlob: 3cc08e7112dd7b77faf3fa481ba22ca2bba5f20a + React-RCTImage: ca8335860b5f64c383ad27f52a28d85089d49b7a + React-RCTLinking: 297cd91bdbf427efc861fc7943e6d683e61860fa + React-RCTNetwork: 8a197bff6f1dc5353484507a4cdcd47e9356316f + React-RCTSettings: d3db1f1e61a5ad8deb50f44f5cb6c7c3ef32b3ac + React-RCTText: c2c05ab3dbfb1cf5855b14802f392148970e48da + React-RCTVibration: 89e2cbea456ac5ec623943661d00e4dc45fe74b9 + React-runtimeexecutor: 80065f60af4f4b05603661070c8622bb3740bf16 + ReactCommon: 1209130f460e4aa9d255ddc75fa0a827ebf93dfb + RNCAsyncStorage: 0c357f3156fcb16c8589ede67cc036330b6698ca + RNCMaskedView: bc0170f389056201c82a55e242e5d90070e18e5a + RNGestureHandler: 7673697e7c0e9391adefae4faa087442bc04af33 + RNReanimated: 60e291d42c77752a0f6d6f358387bdf225a87c6e + RNScreens: f3230dd008a7d0ce5c0a8bc78ff12cf2315bda24 + RNSVG: 1869ad9534459f24caaa0416a4764548c2aeedad + Yoga: 043f8eb97345d0171f27fead4d1849cacf0472a5 PODFILE CHECKSUM: b77befb1871220c1a94408eeae0857d78b685698 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/package.json b/apps/mobile/package.json index 97ae939b7..3f676c2f3 100644 --- a/apps/mobile/package.json +++ b/apps/mobile/package.json @@ -10,60 +10,63 @@ "lint": "eslint src/**/*.{ts,tsx} && tsc --noEmit" }, "dependencies": { - "@gorhom/bottom-sheet": "^4.4.3", - "@react-native-async-storage/async-storage": "~1.17.3", - "@react-native-masked-view/masked-view": "0.2.7", - "@react-navigation/bottom-tabs": "^6.3.3", - "@react-navigation/drawer": "^6.4.4", - "@react-navigation/native": "^6.0.12", - "@react-navigation/stack": "^6.2.3", + "@gorhom/bottom-sheet": "^4.4.5", + "@react-native-async-storage/async-storage": "~1.17.10", + "@react-native-masked-view/masked-view": "0.2.8", + "@react-navigation/bottom-tabs": "^6.4.0", + "@react-navigation/drawer": "^6.5.0", + "@react-navigation/native": "^6.0.13", + "@react-navigation/stack": "^6.3.2", "@rspc/client": "^0.1.2", "@rspc/react": "^0.1.2", "@sd/assets": "file:../../packages/assets", - "@tanstack/react-query": "^4.2.3", + "@tanstack/react-query": "^4.10.1", "byte-size": "^8.1.0", "class-variance-authority": "^0.2.3", + "clsx": "^1.2.1", "dayjs": "^1.11.5", - "expo": "~46.0.10", + "expo": "~46.0.15", "expo-linking": "~3.2.2", "expo-splash-screen": "~0.16.2", "expo-status-bar": "~1.4.0", "immer": "^9.0.15", "intl": "^1.2.5", "lottie-react-native": "^5.1.4", - "moti": "^0.18.0", + "moti": "^0.20.0", "phosphor-react-native": "^1.1.2", - "react": "18.0.0", - "react-native": "0.69.4", - "react-native-gesture-handler": "~2.5.0", - "react-native-heroicons": "^2.2.0", + "react": "18.2.0", + "react-loading-skeleton": "^3.1.0", + "react-native": "0.70.2", + "react-native-gesture-handler": "~2.7.0", + "react-native-heroicons": "^3.2.0", "react-native-reanimated": "~2.10.0", - "react-native-safe-area-context": "4.3.1", - "react-native-screens": "~3.15.0", - "react-native-svg": "13.0.0", + "react-native-safe-area-context": "4.4.1", + "react-native-screens": "~3.18.0", + "react-native-svg": "13.3.0", "twrnc": "^3.4.0", "use-count-up": "^3.0.1", "valtio": "^1.7.0", - "valtio-persist": "^1.0.2" + "valtio-persist": "^1.0.2", + "zustand": "^4.1.1" }, "devDependencies": { - "@babel/core": "^7.18.6", - "@babel/runtime": "^7.18.9", - "@rnx-kit/metro-config": "^1.2.37", + "@babel/core": "^7.19.3", + "@babel/runtime": "^7.19.0", + "@rnx-kit/metro-config": "^1.3.1", "@rnx-kit/metro-resolver-symlinks": "^0.1.21", - "@types/react": "~18.0.0", - "@types/react-native": "~0.69.1", - "@typescript-eslint/eslint-plugin": "^5.30.7", - "@typescript-eslint/parser": "^5.30.7", + "@types/react": "~18.0.21", + "@types/react-native": "~0.70.4", + "@typescript-eslint/eslint-plugin": "^5.39.0", + "@typescript-eslint/parser": "^5.39.0", "babel-plugin-module-resolver": "^4.1.0", - "eslint": "^8.21.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", "eslint-plugin-react-native": "^4.0.0", - "metro-minify-terser": "^0.72.1", + "metro-minify-terser": "^0.73.0", "react-native-svg-transformer": "^1.0.0", - "typescript": "^4.7.4" + "typescript": "^4.8.4" }, "private": true } diff --git a/apps/mobile/pnpm-lock.yaml b/apps/mobile/pnpm-lock.yaml index fd4ed81a5..9106e63e3 100644 --- a/apps/mobile/pnpm-lock.yaml +++ b/apps/mobile/pnpm-lock.yaml @@ -4,112 +4,118 @@ importers: .: specifiers: - '@babel/core': ^7.18.6 - '@babel/runtime': ^7.18.9 - '@gorhom/bottom-sheet': ^4.4.3 - '@react-native-async-storage/async-storage': ~1.17.3 - '@react-native-masked-view/masked-view': 0.2.7 - '@react-navigation/bottom-tabs': ^6.3.3 - '@react-navigation/drawer': ^6.4.4 - '@react-navigation/native': ^6.0.12 - '@react-navigation/stack': ^6.2.3 - '@rnx-kit/metro-config': ^1.2.37 + '@babel/core': ^7.19.3 + '@babel/runtime': ^7.19.0 + '@gorhom/bottom-sheet': ^4.4.5 + '@react-native-async-storage/async-storage': ~1.17.10 + '@react-native-masked-view/masked-view': 0.2.8 + '@react-navigation/bottom-tabs': ^6.4.0 + '@react-navigation/drawer': ^6.5.0 + '@react-navigation/native': ^6.0.13 + '@react-navigation/stack': ^6.3.2 + '@rnx-kit/metro-config': ^1.3.1 '@rnx-kit/metro-resolver-symlinks': ^0.1.21 '@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 - '@types/react-native': ~0.69.1 - '@typescript-eslint/eslint-plugin': ^5.30.7 - '@typescript-eslint/parser': ^5.30.7 + '@tanstack/react-query': ^4.10.1 + '@types/react': ~18.0.21 + '@types/react-native': ~0.70.4 + '@typescript-eslint/eslint-plugin': ^5.39.0 + '@typescript-eslint/parser': ^5.39.0 babel-plugin-module-resolver: ^4.1.0 byte-size: ^8.1.0 class-variance-authority: ^0.2.3 + clsx: ^1.2.1 dayjs: ^1.11.5 - eslint: ^8.21.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 eslint-plugin-react-native: ^4.0.0 - expo: ~46.0.10 + expo: ~46.0.15 expo-linking: ~3.2.2 expo-splash-screen: ~0.16.2 expo-status-bar: ~1.4.0 immer: ^9.0.15 intl: ^1.2.5 lottie-react-native: ^5.1.4 - metro-minify-terser: ^0.72.1 - moti: ^0.18.0 + metro-minify-terser: ^0.73.0 + moti: ^0.20.0 phosphor-react-native: ^1.1.2 - react: 18.0.0 - react-native: 0.69.4 - react-native-gesture-handler: ~2.5.0 - react-native-heroicons: ^2.2.0 + react: 18.2.0 + react-loading-skeleton: ^3.1.0 + react-native: 0.70.2 + react-native-gesture-handler: ~2.7.0 + react-native-heroicons: ^3.2.0 react-native-reanimated: ~2.10.0 - react-native-safe-area-context: 4.3.1 - react-native-screens: ~3.15.0 - react-native-svg: 13.0.0 + react-native-safe-area-context: 4.4.1 + react-native-screens: ~3.18.0 + react-native-svg: 13.3.0 react-native-svg-transformer: ^1.0.0 twrnc: ^3.4.0 - typescript: ^4.7.4 + typescript: ^4.8.4 use-count-up: ^3.0.1 valtio: ^1.7.0 valtio-persist: ^1.0.2 + zustand: ^4.1.1 dependencies: - '@gorhom/bottom-sheet': 4.4.3_vlgoh3gg3ptp2ic2mlqzb2jwsy - '@react-native-async-storage/async-storage': 1.17.7_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 + '@gorhom/bottom-sheet': 4.4.5_kxcxrbi3qrduaf3pxvz4xbiazq + '@react-native-async-storage/async-storage': 1.17.10_react-native@0.70.2 + '@react-native-masked-view/masked-view': 0.2.8_6zkxg335dae66szwidefhu4unm + '@react-navigation/bottom-tabs': 6.4.0_4p5d5kkwpeivrtldcfe4x42eze + '@react-navigation/drawer': 6.5.0_uzroadbe3zhgx7l6w6dyv735ai + '@react-navigation/native': 6.0.13_6zkxg335dae66szwidefhu4unm + '@react-navigation/stack': 6.3.2_lntn3nnre3nbfgyyo3i5ztk2m4 '@rspc/client': 0.1.2 - '@rspc/react': 0.1.2_qxlhziqfutyqts5zm22lyyqixy + '@rspc/react': 0.1.2_ccuuwrkoo5lqohzgsfxrnkoque '@sd/assets': file:../../packages/assets - '@tanstack/react-query': 4.2.3_jk6ntyzimkrv4hwdmdgaaf5yaa + '@tanstack/react-query': 4.10.1_6zkxg335dae66szwidefhu4unm byte-size: 8.1.0 - class-variance-authority: 0.2.3_typescript@4.7.4 + class-variance-authority: 0.2.3_typescript@4.8.4 + clsx: 1.2.1 dayjs: 1.11.5 - 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 + 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 - lottie-react-native: 5.1.4_jk6ntyzimkrv4hwdmdgaaf5yaa - moti: 0.18.0_react@18.0.0 - phosphor-react-native: 1.1.2_ipumakbosk2s7ylysjmrulvctq - react: 18.0.0 - 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-safe-area-context: 4.3.1_jk6ntyzimkrv4hwdmdgaaf5yaa - react-native-screens: 3.15.0_jk6ntyzimkrv4hwdmdgaaf5yaa - react-native-svg: 13.0.0_jk6ntyzimkrv4hwdmdgaaf5yaa - twrnc: 3.4.0_react-native@0.69.4 - use-count-up: 3.0.1_react@18.0.0 - valtio: 1.7.0_react@18.0.0 + lottie-react-native: 5.1.4_6zkxg335dae66szwidefhu4unm + moti: 0.20.0_wlqc7i7ttqmckwruccztyvblxe + phosphor-react-native: 1.1.2_ljw63j2nddzn4oyfrbp4jo7qjy + react: 18.2.0 + react-loading-skeleton: 3.1.0_react@18.2.0 + react-native: 0.70.2_react@18.2.0 + react-native-gesture-handler: 2.7.0_6zkxg335dae66szwidefhu4unm + react-native-heroicons: 3.2.0_dvg3rdocew64lmuysagcnd25pe + react-native-reanimated: 2.10.0_4doumwegtq755c4phl66gqlczu + react-native-safe-area-context: 4.4.1_6zkxg335dae66szwidefhu4unm + react-native-screens: 3.18.0_6zkxg335dae66szwidefhu4unm + react-native-svg: 13.3.0_6zkxg335dae66szwidefhu4unm + twrnc: 3.4.0_react-native@0.70.2 + use-count-up: 3.0.1_react@18.2.0 + valtio: 1.7.0_react@18.2.0 valtio-persist: 1.0.2_valtio@1.7.0 + zustand: 4.1.1_immer@9.0.15+react@18.2.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_4doumwegtq755c4phl66gqlczu '@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.70.4 + '@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.73.0 + react-native-svg-transformer: 1.0.0_fll77qb3ogjnwfmaiycfysecn4 + typescript: 4.8.4 packages: @@ -118,7 +124,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 +138,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 +164,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 +247,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 +293,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 +329,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 +380,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 +1372,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 +1420,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 +1447,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 +1474,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 +1539,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 +1564,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 +1584,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 +1651,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 +1661,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 +1782,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_kxcxrbi3qrduaf3pxvz4xbiazq: + 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_6zkxg335dae66szwidefhu4unm invariant: 2.2.4 - nanoid: 3.3.4 - react: 18.0.0 - 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: 18.2.0 + react-native: 0.70.2_react@18.2.0 + react-native-gesture-handler: 2.7.0_6zkxg335dae66szwidefhu4unm + react-native-reanimated: 2.10.0_4doumwegtq755c4phl66gqlczu dev: false - /@gorhom/portal/1.0.13_jk6ntyzimkrv4hwdmdgaaf5yaa: - resolution: {integrity: sha512-ViClKPkyGnj8HVMW45OGQSnGbWBVh8i3tgMOkGqpm6Cv0WVcDfUL7SER6zyGQy8Wdoj3GUDpAJFMqVOxpmRpzw==} + /@gorhom/portal/1.0.14_6zkxg335dae66szwidefhu4unm: + resolution: {integrity: sha512-MXyL4xvCjmgaORr/rtryDNFy3kU4qUbKlwtQqqsygd0xX3mhKjOLn6mQK8wfu0RkoE0pBE0nAasRoHua+/QZ7A==} peerDependencies: react: '*' react-native: '*' dependencies: nanoid: 3.3.4 - react: 18.0.0 - react-native: 0.69.4_react@18.0.0 + react: 18.2.0 + react-native: 0.70.2_react@18.2.0 dev: false /@graphql-typed-document-node/core/3.1.1_graphql@15.8.0: @@ -1896,8 +1825,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 +1840,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 +1861,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 +1871,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 +1888,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,80 +1908,55 @@ 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==} + /@motionone/animation/10.14.0: + resolution: {integrity: sha512-h+1sdyBP8vbxEBW5gPFDnj+m2DCqdlAuf2g6Iafb1lcMnqjsRXWlPw1AXgvUMXmreyhqmPbJqoNfIKdytampRQ==} dependencies: - '@motify/core': 0.18.0_react@18.0.0 - transitivePeerDependencies: - - react - - react-dom - dev: false - - /@motify/core/0.18.0_react@18.0.0: - resolution: {integrity: sha512-8C4xnC5dZ+S/NEx5wIsHAccofffSOzo7M6lKYR8Ty0QA/XtfwNRL9jQBQafj0pon4h2XP7u2NcJ4lc0ANOsx3A==} - dependencies: - framer-motion: 6.5.1_react@18.0.0 - transitivePeerDependencies: - - react - - react-dom - dev: false - - /@motionone/animation/10.13.1: - resolution: {integrity: sha512-dxQ+1wWxL6iFHDy1uv6hhcPjIdOg36eDT56jN4LI7Z5HZRyLpq8x1t7JFQclo/IEIb+6Bk4atmyinGFdXVECuA==} - 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 +1983,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,49 +1994,49 @@ 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.70.2: + 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_react@18.0.0 + react-native: 0.70.2_react@18.2.0 dev: false - /@react-native-community/cli-clean/8.0.4: - resolution: {integrity: sha512-IwS1M1NHg6+qL8PThZYMSIMYbZ6Zbx+lIck9PLBskbosFo24M3lCOflOl++Bggjakp6mR+sRXxLMexid/GeOsQ==} + /@react-native-community/cli-clean/9.1.0: + resolution: {integrity: sha512-3HznNw8EBQtLsVyV8b8+h76M9EeJcJgYn5wZVGQ5mghAOhqnSWVbwRvpDdb8ITXaiTIXFGNOxXnGKMXsu0CYTw==} dependencies: - '@react-native-community/cli-tools': 8.0.4 + '@react-native-community/cli-tools': 9.1.0 chalk: 4.1.2 execa: 1.0.0 prompts: 2.4.2 transitivePeerDependencies: - encoding - /@react-native-community/cli-config/8.0.4: - resolution: {integrity: sha512-0vcrIETka1Tr0blr0AjVkoP/1yynvarJQXi8Yry/XB3BLenrkUFxolqqA3Ff55KFQ7t1IzAuFtfuVZs25LvyDQ==} + /@react-native-community/cli-config/9.1.0: + resolution: {integrity: sha512-6G9d5weedQ6EMz37ZYXrFHCU2DG3yqvdLs4Jo2383cSxal+oO+kggaTgqLBKoMETz/S80KsMeC/l+MoRjc1pzw==} dependencies: - '@react-native-community/cli-tools': 8.0.4 + '@react-native-community/cli-tools': 9.1.0 cosmiconfig: 5.2.1 deepmerge: 3.3.0 glob: 7.2.3 - joi: 17.6.0 + joi: 17.6.2 transitivePeerDependencies: - encoding - /@react-native-community/cli-debugger-ui/8.0.0: - resolution: {integrity: sha512-u2jq06GZwZ9sRERzd9FIgpW6yv4YOW4zz7Ym/B8eSzviLmy3yI/8mxJtvlGW+J8lBsfMcQoqJpqI6Rl1nZy9yQ==} + /@react-native-community/cli-debugger-ui/9.0.0: + resolution: {integrity: sha512-7hH05ZwU9Tp0yS6xJW0bqcZPVt0YCK7gwj7gnRu1jDNN2kughf6Lg0Ys29rAvtZ7VO1PK5c1O+zs7yFnylQDUA==} dependencies: serve-static: 1.15.0 transitivePeerDependencies: - supports-color - /@react-native-community/cli-doctor/8.0.4: - resolution: {integrity: sha512-Blw/66qwoEoKrtwn3O9iTtXbt4YWlwqNse5BJeRDzlSdutWTX4PgJu/34gyvOHGysNlrf+GYkeyqqxI/y0s07A==} + /@react-native-community/cli-doctor/9.1.2: + resolution: {integrity: sha512-BmacbikyaxR4s54kq17LE0bBK7g8bcjc679ee36DqkX+Xij2VHHynLzTpuDJ8y6iHI2v13vauEMjnh4j612u5w==} dependencies: - '@react-native-community/cli-config': 8.0.4 - '@react-native-community/cli-platform-ios': 8.0.4 - '@react-native-community/cli-tools': 8.0.4 + '@react-native-community/cli-config': 9.1.0 + '@react-native-community/cli-platform-ios': 9.1.2 + '@react-native-community/cli-tools': 9.1.0 chalk: 4.1.2 command-exists: 1.2.9 envinfo: 7.8.1 @@ -2144,58 +2053,53 @@ packages: transitivePeerDependencies: - encoding - /@react-native-community/cli-hermes/8.0.5: - resolution: {integrity: sha512-Zm0wM6SfgYAEX1kfJ1QBvTayabvh79GzmjHyuSnEROVNPbl4PeCG4WFbwy489tGwOP9Qx9fMT5tRIFCD8bp6/g==} + /@react-native-community/cli-hermes/9.1.0: + resolution: {integrity: sha512-Ly4dnlRZZ7FckFfSWnaD5BxszuEe9/WcJ6A7srW5UobqnnmEznDv1IY0oBTq1ggnmzIquM9dJQZ0UbcZeQjkoA==} dependencies: - '@react-native-community/cli-platform-android': 8.0.5 - '@react-native-community/cli-tools': 8.0.4 + '@react-native-community/cli-platform-android': 9.1.0 + '@react-native-community/cli-tools': 9.1.0 chalk: 4.1.2 hermes-profile-transformer: 0.0.6 ip: 1.1.8 transitivePeerDependencies: - encoding - /@react-native-community/cli-platform-android/8.0.5: - resolution: {integrity: sha512-z1YNE4T1lG5o9acoQR1GBvf7mq6Tzayqo/za5sHVSOJAC9SZOuVN/gg/nkBa9a8n5U7qOMFXfwhTMNqA474gXA==} + /@react-native-community/cli-platform-android/9.1.0: + resolution: {integrity: sha512-OZ/Krq0wH6T7LuAvwFdJYe47RrHG8IOcoab47H4QQdYGTmJgTS3SlVkr6gn79pZyBGyp7xVizD30QJrIIyDjnw==} dependencies: - '@react-native-community/cli-tools': 8.0.4 + '@react-native-community/cli-tools': 9.1.0 chalk: 4.1.2 execa: 1.0.0 fs-extra: 8.1.0 glob: 7.2.3 - jetifier: 1.6.8 - lodash: 4.17.21 logkitty: 0.7.1 slash: 3.0.0 transitivePeerDependencies: - encoding - /@react-native-community/cli-platform-ios/8.0.4: - resolution: {integrity: sha512-7Jdptedfg/J0Xo2rQbJ4jmo+PMYOiIiRcNDCSI5dBcNkQfSq4MMYUnKQx5DdZHgrfxE0O1vE4iNmJdd4wePz8w==} + /@react-native-community/cli-platform-ios/9.1.2: + resolution: {integrity: sha512-XpgA9ymm76yjvtYPByqFF1LP7eM/lH5K3zpkZkV9MJLStOIo3mrzN2ywRDZ/xVOheh5LafS4YMmrjIajf11oIQ==} dependencies: - '@react-native-community/cli-tools': 8.0.4 + '@react-native-community/cli-tools': 9.1.0 chalk: 4.1.2 execa: 1.0.0 glob: 7.2.3 - js-yaml: 3.14.1 - lodash: 4.17.21 ora: 5.4.1 - plist: 3.0.6 transitivePeerDependencies: - encoding - /@react-native-community/cli-plugin-metro/8.0.4: - resolution: {integrity: sha512-UWzY1eMcEr/6262R2+d0Is5M3L/7Y/xXSDIFMoc5Rv5Wucl3hJM/TxHXmByvHpuJf6fJAfqOskyt4bZCvbI+wQ==} + /@react-native-community/cli-plugin-metro/9.1.3: + resolution: {integrity: sha512-eLZiGIMybNwkbfKRd8wfNP1u5pnsGYLD3YHlNQyRlfS7AMG7NCQN8bk2uWWJJmWAv632KFLConwJGcLhk6ZNMQ==} dependencies: - '@react-native-community/cli-server-api': 8.0.4 - '@react-native-community/cli-tools': 8.0.4 + '@react-native-community/cli-server-api': 9.1.0 + '@react-native-community/cli-tools': 9.1.0 chalk: 4.1.2 - metro: 0.70.3 - metro-config: 0.70.3 - metro-core: 0.70.3 - metro-react-native-babel-transformer: 0.70.3 - metro-resolver: 0.70.3 - metro-runtime: 0.70.3 + metro: 0.72.3 + metro-config: 0.72.3 + metro-core: 0.72.3 + metro-react-native-babel-transformer: 0.72.3 + metro-resolver: 0.72.3 + metro-runtime: 0.72.3 readline: 1.3.0 transitivePeerDependencies: - bufferutil @@ -2203,11 +2107,11 @@ packages: - supports-color - utf-8-validate - /@react-native-community/cli-server-api/8.0.4: - resolution: {integrity: sha512-Orr14njx1E70CVrUA8bFdl+mrnbuXUjf1Rhhm0RxUadFpvkHuOi5dh8Bryj2MKtf8eZrpEwZ7tuQPhJEULW16A==} + /@react-native-community/cli-server-api/9.1.0: + resolution: {integrity: sha512-Xf3hUqUc99hVmWOsmfNqUQ+sxhut9MIHlINzlo7Azxlmg9v9U/vtwJVJSIPD6iwPzvaPH1qeshzwy/r0GUR7fg==} dependencies: - '@react-native-community/cli-debugger-ui': 8.0.0 - '@react-native-community/cli-tools': 8.0.4 + '@react-native-community/cli-debugger-ui': 9.0.0 + '@react-native-community/cli-tools': 9.1.0 compression: 1.7.4 connect: 3.7.0 errorhandler: 1.5.1 @@ -2221,13 +2125,12 @@ packages: - supports-color - utf-8-validate - /@react-native-community/cli-tools/8.0.4: - resolution: {integrity: sha512-ePN9lGxh6LRFiotyddEkSmuqpQhnq2iw9oiXYr4EFWpIEy0yCigTuSTiDF68+c8M9B+7bTwkRpz/rMPC4ViO5Q==} + /@react-native-community/cli-tools/9.1.0: + resolution: {integrity: sha512-07Z1hyy4cYty84P9cGq+Xf8Vb0S/0ffxLVdVQEMmLjU71sC9YTUv1anJdZyt6f9uUPvA9+e/YIXw5Bu0rvuXIw==} dependencies: appdirsjs: 1.2.7 chalk: 4.1.2 find-up: 5.0.0 - lodash: 4.17.21 mime: 2.6.0 node-fetch: 2.6.7 open: 6.4.0 @@ -2237,38 +2140,32 @@ packages: transitivePeerDependencies: - encoding - /@react-native-community/cli-types/8.0.0: - resolution: {integrity: sha512-1lZS1PEvMlFaN3Se1ksyoFWzMjk+YfKi490GgsqKJln9gvFm8tqVPdnXttI5Uf2DQf3BMse8Bk8dNH4oV6Ewow==} + /@react-native-community/cli-types/9.1.0: + resolution: {integrity: sha512-KDybF9XHvafLEILsbiKwz5Iobd+gxRaPyn4zSaAerBxedug4er5VUWa8Szy+2GeYKZzMh/gsb1o9lCToUwdT/g==} dependencies: - joi: 17.6.0 + joi: 17.6.2 - /@react-native-community/cli/8.0.5_react-native@0.69.4: - resolution: {integrity: sha512-X0AMNK+sKDJQX8eQRkqgddJsZPWlHgLryX7O9usj78UFEK8VqVYtpv08piWecfAhC2mZU4/Lww4bKu9uJ1rdyQ==} - engines: {node: '>=12'} + /@react-native-community/cli/9.1.3: + resolution: {integrity: sha512-dfiBxNvqSwxkMduH0eAEJNS+LBbwxm1rOlTO7bN+FZvUwZNCCgIYrixfRo+ifqDUv8N5AbpQB5umnLbs0AjPaA==} + engines: {node: '>=14'} 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-debugger-ui': 8.0.0 - '@react-native-community/cli-doctor': 8.0.4 - '@react-native-community/cli-hermes': 8.0.5 - '@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 + '@react-native-community/cli-clean': 9.1.0 + '@react-native-community/cli-config': 9.1.0 + '@react-native-community/cli-debugger-ui': 9.0.0 + '@react-native-community/cli-doctor': 9.1.2 + '@react-native-community/cli-hermes': 9.1.0 + '@react-native-community/cli-plugin-metro': 9.1.3 + '@react-native-community/cli-server-api': 9.1.0 + '@react-native-community/cli-tools': 9.1.0 + '@react-native-community/cli-types': 9.1.0 chalk: 4.1.2 - commander: 2.20.3 + commander: 9.4.1 execa: 1.0.0 find-up: 4.1.0 fs-extra: 8.1.0 graceful-fs: 4.2.10 - leven: 3.1.0 - lodash: 4.17.21 - minimist: 1.2.6 prompts: 2.4.2 - react-native: 0.69.4_react@18.0.0 semver: 6.3.0 transitivePeerDependencies: - bufferutil @@ -2276,14 +2173,14 @@ packages: - supports-color - utf-8-validate - /@react-native-masked-view/masked-view/0.2.7_jk6ntyzimkrv4hwdmdgaaf5yaa: - resolution: {integrity: sha512-ME+egr2l25rkcIJjFoXQUWWlfkJMY2KHdhf/df2ZXbVdVx5HIeTPpJpjKTZOPttLFtmrtHpzsqK1/dmu8F755g==} + /@react-native-masked-view/masked-view/0.2.8_6zkxg335dae66szwidefhu4unm: + resolution: {integrity: sha512-+1holBPDF1yi/y0uc1WB6lA5tSNHhM7PpTMapT3ypvSnKQ9+C6sy/zfjxNxRA/llBQ1Ci6f94EaK56UCKs5lTA==} peerDependencies: react: '>=16' react-native: '>=0.57' dependencies: - react: 18.0.0 - react-native: 0.69.4_react@18.0.0 + react: 18.2.0 + react-native: 0.70.2_react@18.2.0 dev: false /@react-native/assets/1.0.0: @@ -2295,8 +2192,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_4p5d5kkwpeivrtldcfe4x42eze: + resolution: {integrity: sha512-90CapiXjiWudbCiki9e6fOr/CECQRguIxv5OD7IBfbAMGX5GGiJpX8aqiHAz2DxpAz31v4JZcUr945+lFhXBfA==} peerDependencies: '@react-navigation/native': ^6.0.0 react: '*' @@ -2304,32 +2201,32 @@ 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_p2n2lmrpb76slc4uqk6cadzk5e + '@react-navigation/native': 6.0.13_6zkxg335dae66szwidefhu4unm color: 4.2.3 - react: 18.0.0 - 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 + react: 18.2.0 + react-native: 0.70.2_react@18.2.0 + react-native-safe-area-context: 4.4.1_6zkxg335dae66szwidefhu4unm + react-native-screens: 3.18.0_6zkxg335dae66szwidefhu4unm 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.2.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 - react: 18.0.0 + react: 18.2.0 react-is: 16.13.1 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_uzroadbe3zhgx7l6w6dyv735ai: + resolution: {integrity: sha512-ma3qPjAfbwF07xd1w1gaWdcvYWmT4F+Z098q2J7XGbHw8yTGQYiNTnD1NMKerXwxM24vui2tMuFHA54F1rIvHQ==} peerDependencies: '@react-navigation/native': ^6.0.0 react: '*' @@ -2339,54 +2236,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_p2n2lmrpb76slc4uqk6cadzk5e + '@react-navigation/native': 6.0.13_6zkxg335dae66szwidefhu4unm color: 4.2.3 - react: 18.0.0 - 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-safe-area-context: 4.3.1_jk6ntyzimkrv4hwdmdgaaf5yaa - react-native-screens: 3.15.0_jk6ntyzimkrv4hwdmdgaaf5yaa + react: 18.2.0 + react-native: 0.70.2_react@18.2.0 + react-native-gesture-handler: 2.7.0_6zkxg335dae66szwidefhu4unm + react-native-reanimated: 2.10.0_4doumwegtq755c4phl66gqlczu + react-native-safe-area-context: 4.4.1_6zkxg335dae66szwidefhu4unm + react-native-screens: 3.18.0_6zkxg335dae66szwidefhu4unm 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_p2n2lmrpb76slc4uqk6cadzk5e: + 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: 18.0.0 - react-native: 0.69.4_react@18.0.0 - react-native-safe-area-context: 4.3.1_jk6ntyzimkrv4hwdmdgaaf5yaa + '@react-navigation/native': 6.0.13_6zkxg335dae66szwidefhu4unm + react: 18.2.0 + react-native: 0.70.2_react@18.2.0 + react-native-safe-area-context: 4.4.1_6zkxg335dae66szwidefhu4unm 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_6zkxg335dae66szwidefhu4unm: + 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.2.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_react@18.0.0 + react: 18.2.0 + react-native: 0.70.2_react@18.2.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_lntn3nnre3nbfgyyo3i5ztk2m4: + resolution: {integrity: sha512-wb8koMp4OTrG5geOqEFPDatTyl8dsSyRBHN4h0wzgNT29V/JjkS3LYwkGLLfUmMfeLXFyIfEPILAjYLFmnk3dA==} peerDependencies: '@react-navigation/native': ^6.0.0 react: '*' @@ -2395,19 +2292,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_p2n2lmrpb76slc4uqk6cadzk5e + '@react-navigation/native': 6.0.13_6zkxg335dae66szwidefhu4unm color: 4.2.3 - react: 18.0.0 - 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 + react: 18.2.0 + react-native: 0.70.2_react@18.2.0 + react-native-gesture-handler: 2.7.0_6zkxg335dae66szwidefhu4unm + react-native-safe-area-context: 4.4.1_6zkxg335dae66szwidefhu4unm + react-native-screens: 3.18.0_6zkxg335dae66szwidefhu4unm 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: '*' @@ -2415,24 +2312,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_4doumwegtq755c4phl66gqlczu: + 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_react@18.0.0 + react: 18.2.0 + react-native: 0.70.2_react@18.2.0 transitivePeerDependencies: - '@babel/core' - '@babel/plugin-transform-typescript' @@ -2471,7 +2375,7 @@ 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 @@ -2480,15 +2384,15 @@ packages: resolution: {integrity: sha512-MfgSZkrqVzzqCN4GU3LKhfy4qG+PS1LpEz/MMays6rtz5EFNJIvEVMA5Ooc+DH8KLe5h4/3bf4dfyEs7czhA2w==} dev: false - /@rspc/react/0.1.2_qxlhziqfutyqts5zm22lyyqixy: + /@rspc/react/0.1.2_ccuuwrkoo5lqohzgsfxrnkoque: 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.1.2 - '@tanstack/react-query': 4.2.3_jk6ntyzimkrv4hwdmdgaaf5yaa - react: 18.0.0 + '@tanstack/react-query': 4.10.1_6zkxg335dae66szwidefhu4unm + react: 18.2.0 dev: false /@segment/loosely-validate-event/2.0.0: @@ -2509,147 +2413,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_6zkxg335dae66szwidefhu4unm: + 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 @@ -2660,11 +2566,10 @@ packages: react-native: optional: true dependencies: - '@tanstack/query-core': 4.2.3 - '@types/use-sync-external-store': 0.0.3 - react: 18.0.0 - react-native: 0.69.4_react@18.0.0 - use-sync-external-store: 1.2.0_react@18.0.0 + '@tanstack/query-core': 4.10.1 + react: 18.2.0 + react-native: 0.70.2_react@18.2.0 + use-sync-external-store: 1.2.0_react@18.2.0 dev: false /@trysound/sax/0.2.0: @@ -2672,11 +2577,6 @@ packages: engines: {node: '>=10.13.0'} dev: true - /@types/graceful-fs/4.1.5: - resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} - dependencies: - '@types/node': 18.6.4 - /@types/hammerjs/2.0.41: resolution: {integrity: sha512-ewXv/ceBaJprikMcxCmWU1FKyMAQ2X7a9Gtmzw8fcg2kIePI1crERDM818W+XYrxqdBBOdlf2rm137bU+BltCA==} dev: false @@ -2702,8 +2602,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==} @@ -2717,28 +2617,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.70.4: + resolution: {integrity: sha512-z5tKfblHLG6jts2AQcioDw4N+F2EzflO9n495yNyqyMYRkSIVTLX64MHBeqMp5wfOY5mshy0GsOgnFSXrXKQSg==} 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==} @@ -2752,8 +2648,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 @@ -2763,24 +2659,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 @@ -2789,26 +2684,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: '*' @@ -2817,22 +2712,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: '*' @@ -2840,41 +2736,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 @@ -2909,10 +2805,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==} @@ -3067,8 +2959,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 @@ -3086,7 +2978,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 @@ -3127,22 +3019,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 @@ -3150,7 +3042,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==} @@ -3162,36 +3054,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 @@ -3202,12 +3094,12 @@ 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 @@ -3216,38 +3108,38 @@ packages: - 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 @@ -3368,15 +3260,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==} @@ -3469,7 +3361,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==} @@ -3505,8 +3397,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==} @@ -3550,8 +3442,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==} @@ -3562,7 +3454,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' @@ -3570,7 +3462,7 @@ packages: typescript: optional: true dependencies: - typescript: 4.7.4 + typescript: 4.8.4 dev: false /clean-stack/2.2.0: @@ -3619,6 +3511,11 @@ packages: engines: {node: '>=0.8'} dev: false + /clsx/1.2.1: + resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} + engines: {node: '>=6'} + dev: false + /collection-visit/1.0.0: resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==} engines: {node: '>=0.10.0'} @@ -3676,6 +3573,7 @@ packages: /commander/2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + dev: true /commander/4.1.1: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} @@ -3691,6 +3589,10 @@ packages: resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} engines: {node: '>= 10'} + /commander/9.4.1: + resolution: {integrity: sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==} + engines: {node: ^12.20.0 || >=14} + /commondir/1.0.1: resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} @@ -3753,18 +3655,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==} @@ -3873,8 +3767,8 @@ 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: @@ -4080,7 +3974,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==} @@ -4116,8 +4010,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==} @@ -4143,8 +4037,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: @@ -4178,21 +4072,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 @@ -4200,8 +4094,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 @@ -4217,7 +4112,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 @@ -4237,42 +4132,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 @@ -4280,7 +4175,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 @@ -4310,13 +4205,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 @@ -4330,14 +4225,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 @@ -4345,15 +4241,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 @@ -4362,6 +4257,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 @@ -4373,13 +4269,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 @@ -4458,20 +4353,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 @@ -4481,62 +4376,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 @@ -4551,26 +4446,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 @@ -4581,23 +4476,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 @@ -4606,7 +4501,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 @@ -4645,8 +4540,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 @@ -4668,8 +4563,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 @@ -4824,7 +4719,7 @@ packages: dependencies: map-cache: 0.2.2 - /framer-motion/6.5.1_react@18.0.0: + /framer-motion/6.5.1_react@18.2.0: resolution: {integrity: sha512-o1BGqqposwi7cgDrtg0dNONhkmPsUFDaLcKXigzuTFC5x58mE8iyTazxSudFzmT6MEyJKfjjU8ItoMe3W+3fiw==} peerDependencies: react: '>=16.8 || ^17.0.0 || ^18.0.0' @@ -4834,7 +4729,7 @@ packages: framesync: 6.0.1 hey-listen: 1.0.8 popmotion: 11.0.3 - react: 18.0.0 + react: 18.2.0 style-value-types: 5.0.0 tslib: 2.4.0 optionalDependencies: @@ -4917,14 +4812,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 @@ -4937,8 +4828,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 @@ -4960,7 +4851,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: @@ -5033,7 +4924,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 @@ -5075,7 +4966,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==} @@ -5121,16 +5012,13 @@ packages: dependencies: function-bind: 1.1.1 - /hermes-engine/0.11.0: - resolution: {integrity: sha512-7aMUlZja2IyLYAcZ69NBnwJAR5ZOYlSllj0oMpx08a8HzxHOys0eKCzfphrf6D0vX1JGO1QQvVsQKe6TkYherw==} + /hermes-estree/0.8.0: + resolution: {integrity: sha512-W6JDAOLZ5pMPMjEiQGLCXSSV7pIBEgRR5zGkxgmzGSXHOxqV5dC/M1Zevqpbm9TZDE5tu358qZf8Vkzmsc+u7Q==} - /hermes-estree/0.6.0: - resolution: {integrity: sha512-2YTGzJCkhdmT6VuNprWjXnvTvw/3iPNw804oc7yknvQpNKo+vJGZmtvLLCghOZf0OwzKaNAzeIMp71zQbNl09w==} - - /hermes-parser/0.6.0: - resolution: {integrity: sha512-Vf58jBZca2+QBLR9h7B7mdg8oFz2g5ILz1iVouZ5DOrOrAfBmPfJjdjDT8jrO0f+iJ4/hSRrQHqHIjSnTaLUDQ==} + /hermes-parser/0.8.0: + resolution: {integrity: sha512-yZKalg1fTYG5eOiToLUaw69rQfZq/fi+/NtEXRU7N87K/XobNRhRWorh80oSge2lWUiZfTgUvRJH+XgZWrhoqA==} dependencies: - hermes-estree: 0.6.0 + hermes-estree: 0.8.0 /hermes-profile-transformer/0.0.6: resolution: {integrity: sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ==} @@ -5256,7 +5144,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 @@ -5326,8 +5214,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 @@ -5569,25 +5457,6 @@ packages: resolution: {integrity: sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==} engines: {node: '>= 10.14.2'} - /jest-haste-map/27.5.1: - resolution: {integrity: sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/types': 27.5.1 - '@types/graceful-fs': 4.1.5 - '@types/node': 18.6.4 - anymatch: 3.1.2 - fb-watchman: 2.0.1 - graceful-fs: 4.2.10 - jest-regex-util: 27.5.1 - jest-serializer: 27.5.1 - jest-util: 27.5.1 - jest-worker: 27.5.1 - micromatch: 4.0.5 - walker: 1.0.8 - optionalDependencies: - fsevents: 2.3.2 - /jest-regex-util/27.5.1: resolution: {integrity: sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -5596,7 +5465,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: @@ -5604,9 +5473,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 @@ -5625,20 +5494,16 @@ 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 - /jetifier/1.6.8: - resolution: {integrity: sha512-3Zi16h6L5tXDRQJTb221cnRoVG9/9OvreLdLU2/ZjRv/GILL+2Cemt0IKvkowwkDpvouAU1DQPOJ7qaiHeIdrw==} - hasBin: true - /jimp-compact/0.16.1: 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 @@ -5650,6 +5515,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==} @@ -5675,16 +5544,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 @@ -5774,7 +5643,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: @@ -5861,6 +5730,7 @@ packages: /lodash/4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + dev: false /log-symbols/2.2.0: resolution: {integrity: sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==} @@ -5890,7 +5760,7 @@ packages: dependencies: js-tokens: 4.0.0 - /lottie-react-native/5.1.4_jk6ntyzimkrv4hwdmdgaaf5yaa: + /lottie-react-native/5.1.4_6zkxg335dae66szwidefhu4unm: resolution: {integrity: sha512-Lu6mSG92Wck+vXEX6gfj/9ciqqoz0tJQZqgX0SumGvX/oZu4MbKO/oLApyHdy2V9Rb7qvwF9whOtitADxTswPA==} peerDependencies: lottie-ios: ^3.4.0 @@ -5902,9 +5772,9 @@ packages: optional: true dependencies: invariant: 2.2.4 - react: 18.0.0 - react-native: 0.69.4_react@18.0.0 - react-native-safe-modules: 1.0.3_react-native@0.69.4 + react: 18.2.0 + react-native: 0.70.2_react@18.2.0 + react-native-safe-modules: 1.0.3_react-native@0.70.2 dev: false /lru-cache/6.0.0: @@ -5992,52 +5862,71 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - /metro-babel-transformer/0.70.3: - resolution: {integrity: sha512-bWhZRMn+mIOR/s3BDpFevWScz9sV8FGktVfMlF1eJBLoX24itHDbXvTktKBYi38PWIKcHedh6THSFpJogfuwNA==} + /metro-babel-transformer/0.72.3: + resolution: {integrity: sha512-PTOR2zww0vJbWeeM3qN90WKENxCLzv9xrwWaNtwVlhcV8/diNdNe82sE1xIxLFI6OQuAVwNMv1Y7VsO2I7Ejrw==} dependencies: - '@babel/core': 7.18.10 - hermes-parser: 0.6.0 - metro-source-map: 0.70.3 + '@babel/core': 7.19.3 + hermes-parser: 0.8.0 + metro-source-map: 0.72.3 nullthrows: 1.1.1 transitivePeerDependencies: - supports-color - /metro-cache-key/0.70.3: - resolution: {integrity: sha512-0zpw+IcpM3hmGd5sKMdxNv3sbOIUYnMUvx1/yaM6vNRReSPmOLX0bP8fYf3CGgk8NEreZ1OHbVsuw7bdKt40Mw==} + /metro-cache-key/0.72.3: + resolution: {integrity: sha512-kQzmF5s3qMlzqkQcDwDxrOaVxJ2Bh6WRXWdzPnnhsq9LcD3B3cYqQbRBS+3tSuXmathb4gsOdhWslOuIsYS8Rg==} - /metro-cache/0.70.3: - resolution: {integrity: sha512-iCix/+z812fUqa6KlOxaTkY6LQQDoXIe/VljXkGIvpygSCmYyhjQpfQVZEVVPezFmUBYXNdabdQ6cYx6JX3yMg==} + /metro-cache/0.72.3: + resolution: {integrity: sha512-++eyZzwkXvijWRV3CkDbueaXXGlVzH9GA52QWqTgAOgSHYp5jWaDwLQ8qpsMkQzpwSyIF4LLK9aI3eA7Xa132A==} dependencies: - metro-core: 0.70.3 + metro-core: 0.72.3 rimraf: 2.7.1 - /metro-config/0.70.3: - resolution: {integrity: sha512-SSCDjSTygoCgzoj61DdrBeJzZDRwQxUEfcgc6t6coxWSExXNR4mOngz0q4SAam49Bmjq9J2Jft6qUKnUTPrRgA==} + /metro-config/0.72.3: + resolution: {integrity: sha512-VEsAIVDkrIhgCByq8HKTWMBjJG6RlYwWSu1Gnv3PpHa0IyTjKJtB7wC02rbTjSaemcr82scldf2R+h6ygMEvsw==} dependencies: cosmiconfig: 5.2.1 jest-validate: 26.6.2 - metro: 0.70.3 - metro-cache: 0.70.3 - metro-core: 0.70.3 - metro-runtime: 0.70.3 + metro: 0.72.3 + metro-cache: 0.72.3 + metro-core: 0.72.3 + metro-runtime: 0.72.3 transitivePeerDependencies: - bufferutil - encoding - supports-color - utf-8-validate - /metro-core/0.70.3: - resolution: {integrity: sha512-NzfHB/w5R7yLaOeU1tzPTbBzCRsYSvpKJkLMP0yudszKZzIAZqNdjoEJ9GZ688Wi0ynZxcU0BxukXh4my80ZBw==} + /metro-core/0.72.3: + resolution: {integrity: sha512-KuYWBMmLB4+LxSMcZ1dmWabVExNCjZe3KysgoECAIV+wyIc2r4xANq15GhS94xYvX1+RqZrxU1pa0jQ5OK+/6A==} dependencies: - jest-haste-map: 27.5.1 lodash.throttle: 4.1.1 - metro-resolver: 0.70.3 + metro-resolver: 0.72.3 - /metro-hermes-compiler/0.70.3: - resolution: {integrity: sha512-W6WttLi4E72JL/NyteQ84uxYOFMibe0PUr9aBKuJxxfCq6QRnJKOVcNY0NLW0He2tneXGk+8ZsNz8c0flEvYqg==} + /metro-file-map/0.72.3: + resolution: {integrity: sha512-LhuRnuZ2i2uxkpFsz1XCDIQSixxBkBG7oICAFyLyEMDGbcfeY6/NexphfLdJLTghkaoJR5ARFMiIxUg9fIY/pA==} + dependencies: + abort-controller: 3.0.0 + anymatch: 3.1.2 + debug: 2.6.9 + fb-watchman: 2.0.2 + graceful-fs: 4.2.10 + invariant: 2.2.4 + jest-regex-util: 27.5.1 + jest-serializer: 27.5.1 + jest-util: 27.5.1 + jest-worker: 27.5.1 + micromatch: 4.0.5 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.2 + transitivePeerDependencies: + - supports-color - /metro-inspector-proxy/0.70.3: - resolution: {integrity: sha512-qQoNdPGrmyoJSWYkxSDpTaAI8xyqVdNDVVj9KRm1PG8niSuYmrCCFGLLFsMvkVYwsCWUGHoGBx0UoAzVp14ejw==} + /metro-hermes-compiler/0.72.3: + resolution: {integrity: sha512-QWDQASMiXNW3j8uIQbzIzCdGYv5PpAX/ZiF4/lTWqKRWuhlkP4auhVY4eqdAKj5syPx45ggpjkVE0p8hAPDZYg==} + + /metro-inspector-proxy/0.72.3: + resolution: {integrity: sha512-UPFkaq2k93RaOi+eqqt7UUmqy2ywCkuxJLasQ55+xavTUS+TQSyeTnTczaYn+YKw+izLTLllGcvqnQcZiWYhGw==} hasBin: true dependencies: connect: 3.7.0 @@ -6049,106 +5938,153 @@ packages: - supports-color - utf-8-validate - /metro-minify-terser/0.72.1: - resolution: {integrity: sha512-1zr49362u7IG9HfutP18/oXxg3FiJHusCBOyDJL3nOkEvNhN6r6sfi0hNvMh5ac9U01qogYC5CfU9Thx57N3Sw==} + /metro-minify-terser/0.73.0: + resolution: {integrity: sha512-gDLAxK1adJAs/bFZMtYv5GQHs2i2+QymfS7d9dm5PVYGHp4m3QyqHHhCELfPE0iztpqcRWycv+0ce1/RqlVv5Q==} dependencies: - terser: 5.15.0 + terser: 5.15.1 dev: true - /metro-minify-uglify/0.70.3: - resolution: {integrity: sha512-oHyjV9WDqOlDE1FPtvs6tIjjeY/oP1PNUPYL1wqyYtqvjN+zzAOrcbsAAL1sv+WARaeiMsWkF2bwtNo+Hghoog==} + /metro-minify-uglify/0.72.3: + resolution: {integrity: sha512-dPXqtMI8TQcj0g7ZrdhC8X3mx3m3rtjtMuHKGIiEXH9CMBvrET8IwrgujQw2rkPcXiSiX8vFDbGMIlfxefDsKA==} dependencies: uglify-es: 3.3.9 /metro-react-native-babel-preset/0.70.3: resolution: {integrity: sha512-4Nxc1zEiHEu+GTdEMEsHnRgfaBkg8f/Td3+FcQ8NTSvs+xL3LBrQy6N07idWSQZHIdGFf+tTHvRfSIWLD8u8Tg==} 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 + dev: false + + /metro-react-native-babel-preset/0.72.3: + resolution: {integrity: sha512-uJx9y/1NIqoYTp6ZW1osJ7U5ZrXGAJbOQ/Qzl05BdGYvN1S7Qmbzid6xOirgK0EIT0pJKEEh1s8qbassYZe4cw==} + dependencies: + '@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: - resolution: {integrity: sha512-WKBU6S/G50j9cfmFM4k4oRYprd8u3qjleD4so1E2zbTNILg+gYla7ZFGCAvi2G0ZcqS2XuGCR375c2hF6VVvwg==} + /metro-react-native-babel-transformer/0.72.3: + resolution: {integrity: sha512-Ogst/M6ujYrl/+9mpEWqE3zF7l2mTuftDTy3L8wZYwX1pWUQWQpfU1aJBeWiLxt1XlIq+uriRjKzKoRoIK57EA==} dependencies: - '@babel/core': 7.18.10 - babel-preset-fbjs: 3.4.0_@babel+core@7.18.10 - hermes-parser: 0.6.0 - metro-babel-transformer: 0.70.3 - metro-react-native-babel-preset: 0.70.3 - metro-source-map: 0.70.3 + '@babel/core': 7.19.3 + babel-preset-fbjs: 3.4.0_@babel+core@7.19.3 + hermes-parser: 0.8.0 + metro-babel-transformer: 0.72.3 + metro-react-native-babel-preset: 0.72.3 + metro-source-map: 0.72.3 nullthrows: 1.1.1 transitivePeerDependencies: - supports-color - /metro-resolver/0.70.3: - resolution: {integrity: sha512-5Pc5S/Gs4RlLbziuIWtvtFd9GRoILlaRC8RZDVq5JZWcWHywKy/PjNmOBNhpyvtRlzpJfy/ssIfLhu8zINt1Mw==} + /metro-resolver/0.72.3: + resolution: {integrity: sha512-wu9zSMGdxpKmfECE7FtCdpfC+vrWGTdVr57lDA0piKhZV6VN6acZIvqQ1yZKtS2WfKsngncv5VbB8Y5eHRQP3w==} dependencies: absolute-path: 0.0.0 - /metro-runtime/0.70.3: - resolution: {integrity: sha512-22xU7UdXZacniTIDZgN2EYtmfau2pPyh97Dcs+cWrLcJYgfMKjWBtesnDcUAQy3PHekDYvBdJZkoQUeskYTM+w==} + /metro-runtime/0.72.3: + resolution: {integrity: sha512-3MhvDKfxMg2u7dmTdpFOfdR71NgNNo4tzAyJumDVQKwnHYHN44f2QFZQqpPBEmqhWlojNeOxsqFsjYgeyMx6VA==} dependencies: - '@babel/runtime': 7.18.9 + '@babel/runtime': 7.19.0 + react-refresh: 0.4.3 - /metro-source-map/0.70.3: - resolution: {integrity: sha512-zsYtZGrwRbbGEFHtmMqqeCH9K9aTGNVPsurMOWCUeQA3VGyVGXPGtLMC+CdAM9jLpUyg6jw2xh0esxi+tYH7Uw==} + /metro-source-map/0.72.3: + resolution: {integrity: sha512-eNtpjbjxSheXu/jYCIDrbNEKzMGOvYW6/ePYpRM7gDdEagUOqKOCsi3St8NJIQJzZCsxD2JZ2pYOiomUSkT1yQ==} 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 + metro-symbolicate: 0.72.3 nullthrows: 1.1.1 - ob1: 0.70.3 + ob1: 0.72.3 source-map: 0.5.7 vlq: 1.0.1 transitivePeerDependencies: - supports-color - /metro-symbolicate/0.70.3: - resolution: {integrity: sha512-JTYkF1dpeDUssQ84juE1ycnhHki2ylJBBdJE1JHtfu5oC+z1ElDbBdPHq90Uvt8HbRov/ZAnxvv7Zy6asS+WCA==} + /metro-symbolicate/0.72.3: + resolution: {integrity: sha512-eXG0NX2PJzJ/jTG4q5yyYeN2dr1cUqUaY7worBB0SP5bRWRc3besfb+rXwfh49wTFiL5qR0oOawkU4ZiD4eHXw==} engines: {node: '>=8.3'} hasBin: true dependencies: invariant: 2.2.4 - metro-source-map: 0.70.3 + metro-source-map: 0.72.3 nullthrows: 1.1.1 source-map: 0.5.7 through2: 2.0.5 @@ -6156,32 +6092,32 @@ packages: transitivePeerDependencies: - supports-color - /metro-transform-plugins/0.70.3: - resolution: {integrity: sha512-dQRIJoTkWZN2IVS2KzgS1hs7ZdHDX3fS3esfifPkqFAEwHiLctCf0EsPgIknp0AjMLvmGWfSLJigdRB/dc0ASw==} + /metro-transform-plugins/0.72.3: + resolution: {integrity: sha512-D+TcUvCKZbRua1+qujE0wV1onZvslW6cVTs7dLCyC2pv20lNHjFr1GtW01jN2fyKR2PcRyMjDCppFd9VwDKnSg==} 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 - /metro-transform-worker/0.70.3: - resolution: {integrity: sha512-MtVVsnHhhBOp9GRLCdAb2mD1dTCsIzT4+m34KMRdBDCEbDIb90YafT5prpU8qbj5uKd0o2FOQdrJ5iy5zQilHw==} + /metro-transform-worker/0.72.3: + resolution: {integrity: sha512-WsuWj9H7i6cHuJuy+BgbWht9DK5FOgJxHLGAyULD5FJdTG9rSMFaHDO5WfC0OwQU5h4w6cPT40iDuEGksM7+YQ==} 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 - metro: 0.70.3 - metro-babel-transformer: 0.70.3 - metro-cache: 0.70.3 - metro-cache-key: 0.70.3 - metro-hermes-compiler: 0.70.3 - metro-source-map: 0.70.3 - metro-transform-plugins: 0.70.3 + '@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.72.3 + metro-babel-transformer: 0.72.3 + metro-cache: 0.72.3 + metro-cache-key: 0.72.3 + metro-hermes-compiler: 0.72.3 + metro-source-map: 0.72.3 + metro-transform-plugins: 0.72.3 nullthrows: 1.1.1 transitivePeerDependencies: - bufferutil @@ -6189,17 +6125,17 @@ packages: - supports-color - utf-8-validate - /metro/0.70.3: - resolution: {integrity: sha512-uEWS7xg8oTetQDABYNtsyeUjdLhH3KAvLFpaFFoJqUpOk2A3iygszdqmjobFl6W4zrvKDJS+XxdMR1roYvUhTw==} + /metro/0.72.3: + resolution: {integrity: sha512-Hb3xTvPqex8kJ1hutQNZhQadUKUwmns/Du9GikmWKBFrkiG3k3xstGAyO5t5rN9JSUEzQT6y9SWzSSOGogUKIg==} 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 @@ -6211,27 +6147,27 @@ packages: error-stack-parser: 2.1.4 fs-extra: 1.0.0 graceful-fs: 4.2.10 - hermes-parser: 0.6.0 + hermes-parser: 0.8.0 image-size: 0.6.3 invariant: 2.2.4 - jest-haste-map: 27.5.1 jest-worker: 27.5.1 lodash.throttle: 4.1.1 - metro-babel-transformer: 0.70.3 - metro-cache: 0.70.3 - metro-cache-key: 0.70.3 - metro-config: 0.70.3 - metro-core: 0.70.3 - 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 - metro-resolver: 0.70.3 - metro-runtime: 0.70.3 - metro-source-map: 0.70.3 - metro-symbolicate: 0.70.3 - metro-transform-plugins: 0.70.3 - metro-transform-worker: 0.70.3 + metro-babel-transformer: 0.72.3 + metro-cache: 0.72.3 + metro-cache-key: 0.72.3 + metro-config: 0.72.3 + metro-core: 0.72.3 + metro-file-map: 0.72.3 + metro-hermes-compiler: 0.72.3 + metro-inspector-proxy: 0.72.3 + metro-minify-uglify: 0.72.3 + metro-react-native-babel-preset: 0.72.3 + metro-resolver: 0.72.3 + metro-runtime: 0.72.3 + metro-source-map: 0.72.3 + metro-symbolicate: 0.72.3 + metro-transform-plugins: 0.72.3 + metro-transform-worker: 0.72.3 mime-types: 2.1.35 node-fetch: 2.6.7 nullthrows: 1.1.1 @@ -6368,11 +6304,13 @@ packages: hasBin: true dev: false - /moti/0.18.0_react@18.0.0: - resolution: {integrity: sha512-/OJYET+TkLA+LTCE6hYeCaHYDv4IIRVDLfFmA7WrcocfS0PSj99VwUb48HZ40GAwrr0atkGDBRizdj5q5sFn3Q==} + /moti/0.20.0_wlqc7i7ttqmckwruccztyvblxe: + resolution: {integrity: sha512-ZogZ+2a1Qx86akSu/0/rDPWf5IxF1PIW+O8GuxdAiy4TajxQRn/yLcTP7NfpHfWPSJtoaFm4AvdXwOBoykWkBw==} + peerDependencies: + react-native-reanimated: '*' dependencies: - '@motify/components': 0.18.0_react@18.0.0 - '@motify/core': 0.18.0_react@18.0.0 + framer-motion: 6.5.1_react@18.2.0 + react-native-reanimated: 2.10.0_4doumwegtq755c4phl66gqlczu transitivePeerDependencies: - react - react-dom @@ -6494,12 +6432,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: @@ -6523,8 +6455,8 @@ packages: /nullthrows/1.1.1: resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} - /ob1/0.70.3: - resolution: {integrity: sha512-Vy9GGhuXgDRY01QA6kdhToPd8AkLdLpX9GjH5kpqluVqTu70mgOm7tpGoJDZGaNbr9nJlJgnipqHJQRPORixIQ==} + /ob1/0.72.3: + resolution: {integrity: sha512-OnVto25Sj7Ghp0vVm2THsngdze3tVq0LOg9LUHsAVXMecpqOP0Y8zaATW8M9gEgs2lNEAcCqV0P/hlmOPhVRvg==} /object-assign/4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} @@ -6556,8 +6488,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 @@ -6571,7 +6503,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: @@ -6580,14 +6512,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: @@ -6602,7 +6534,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: @@ -6784,10 +6716,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'} @@ -6839,17 +6767,17 @@ packages: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} - /phosphor-react-native/1.1.2_ipumakbosk2s7ylysjmrulvctq: + /phosphor-react-native/1.1.2_ljw63j2nddzn4oyfrbp4jo7qjy: resolution: {integrity: sha512-uWYDG4S70JP89jmXljCA0K6/0mjQDHH8GVHFwF+dmbdYkALIE84jMMSemkFtjdsazB1j+xDBJcGaKN3PdEC8uQ==} peerDependencies: react: '*' react-native: '*' react-native-svg: '*' dependencies: - caniuse-lite: 1.0.30001374 - react: 18.0.0 - react-native: 0.69.4_react@18.0.0 - react-native-svg: 13.0.0_jk6ntyzimkrv4hwdmdgaaf5yaa + caniuse-lite: 1.0.30001416 + react: 18.2.0 + react-native: 0.70.2_react@18.2.0 + react-native-svg: 13.3.0_6zkxg335dae66szwidefhu4unm dev: false /picocolors/1.0.0: @@ -6897,6 +6825,7 @@ packages: dependencies: base64-js: 1.5.1 xmlbuilder: 15.1.1 + dev: false /pngjs/3.4.0: resolution: {integrity: sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==} @@ -6921,29 +6850,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: @@ -6956,17 +6885,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 @@ -6982,8 +6911,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 @@ -7033,8 +6962,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 @@ -7139,13 +7068,13 @@ packages: - bufferutil - utf-8-validate - /react-freeze/1.0.3_react@18.0.0: + /react-freeze/1.0.3_react@18.2.0: resolution: {integrity: sha512-ZnXwLQnGzrDpHBHiC56TXFXvmolPeMjTn1UOm610M4EXGzbEDR7oOIyS2ZiItgbs6eZc4oU/a0hpk8PrcKvv5g==} engines: {node: '>=10'} peerDependencies: react: '>=17.0.0' dependencies: - react: 18.0.0 + react: 18.2.0 dev: false /react-is/16.13.1: @@ -7154,10 +7083,21 @@ 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-loading-skeleton/3.1.0_react@18.2.0: + resolution: {integrity: sha512-j1U1CWWs68nBPOg7tkQqnlFcAMFF6oEK6MgqAo15f8A5p7mjH6xyKn2gHbkcimpwfO0VQXqxAswnSYVr8lWzjw==} + peerDependencies: + react: '>=16.8.0' dependencies: - '@babel/parser': 7.18.11 + react: 18.2.0 + dev: false + + /react-native-codegen/0.70.5: + resolution: {integrity: sha512-vXqgCWWIWlzsCtwD6hbmwmCleGNJYm+n4xO9VMfzzlF3xt9gjC7/USSMTf/YZlCK/hDwQU412QrNS6A9OH+mag==} + dependencies: + '@babel/parser': 7.19.3 flow-parser: 0.121.0 jscodeshift: 0.13.1 nullthrows: 1.1.1 @@ -7165,8 +7105,8 @@ packages: - '@babel/preset-env' - supports-color - /react-native-gesture-handler/2.5.0_jk6ntyzimkrv4hwdmdgaaf5yaa: - resolution: {integrity: sha512-djZdcprFf08PZC332D+AeG5wcGeAPhzfCJtB3otUgOgTlvjVXmg/SLFdPJSpzLBqkRAmrC77tM79QgKbuLxkfw==} + /react-native-gesture-handler/2.7.0_6zkxg335dae66szwidefhu4unm: + resolution: {integrity: sha512-0jr3FNm2R3gv/v6XTtENgjv0fewD6LEct8EWmXw/oHw36M3YiIIpxnW57thL+0YiKwyLBXN0QHL4JZbs/heW2Q==} peerDependencies: react: '*' react-native: '*' @@ -7176,129 +7116,113 @@ packages: invariant: 2.2.4 lodash: 4.17.21 prop-types: 15.8.1 - react: 18.0.0 - react-native: 0.69.4_react@18.0.0 + react: 18.2.0 + react-native: 0.70.2_react@18.2.0 dev: false - /react-native-gradle-plugin/0.0.7: - resolution: {integrity: sha512-+4JpbIx42zGTONhBTIXSyfyHICHC29VTvhkkoUOJAh/XHPEixpuBduYgf6Y4y9wsN1ARlQhBBoptTvXvAFQf5g==} + /react-native-gradle-plugin/0.70.3: + resolution: {integrity: sha512-oOanj84fJEXUg9FoEAQomA8ISG+DVIrTZ3qF7m69VQUJyOGYyDZmPqKcjvRku4KXlEH6hWO9i4ACLzNBh8gC0A==} - /react-native-heroicons/2.2.0_wxlif5cfng7xfd3uerlw46xcs4: - resolution: {integrity: sha512-eOtuO6m8xgiq+q3RX47V9pc2OVrXo7a/DJmrHZBKs3GYFqrRidQqLgEYNRT4JwC+nDBHbflf3hpaBoPRXDFQzA==} + /react-native-heroicons/3.2.0_dvg3rdocew64lmuysagcnd25pe: + resolution: {integrity: sha512-M5jlhReLBALrmeKIjH1qgF3OCNphfw8xKpRlHpX8OH4zgsC3L6+Lt+c4/hNxSbxUIN2+s8XC0eK/NZLku14IzA==} peerDependencies: react: '>=16.8' react-native-svg: '>=9' dependencies: - react: 18.0.0 - react-native-svg: 13.0.0_jk6ntyzimkrv4hwdmdgaaf5yaa + react: 18.2.0 + react-native-svg: 13.3.0_6zkxg335dae66szwidefhu4unm dev: false - /react-native-reanimated/2.10.0_s4gdcbt2zwshcgkhtvkmdoj3my: + /react-native-reanimated/2.10.0_4doumwegtq755c4phl66gqlczu: 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_react@18.0.0 + react: 18.2.0 + react-native: 0.70.2_react@18.2.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_react@18.0.0 - 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==} + /react-native-safe-area-context/4.4.1_6zkxg335dae66szwidefhu4unm: + resolution: {integrity: sha512-N9XTjiuD73ZpVlejHrUWIFZc+6Z14co1K/p1IFMkImU7+avD69F3y+lhkqA2hN/+vljdZrBSiOwXPkuo43nFQA==} peerDependencies: react: '*' react-native: '*' dependencies: - react: 18.0.0 - react-native: 0.69.4_react@18.0.0 + react: 18.2.0 + react-native: 0.70.2_react@18.2.0 dev: false - /react-native-safe-modules/1.0.3_react-native@0.69.4: + /react-native-safe-modules/1.0.3_react-native@0.70.2: resolution: {integrity: sha512-DUxti4Z+AgJ/ZsO5U7p3uSCUBko8JT8GvFlCeOXk9bMd+4qjpoDvMYpfbixXKgL88M+HwmU/KI1YFN6gsQZyBA==} peerDependencies: react-native: '*' dependencies: dedent: 0.6.0 - react-native: 0.69.4_react@18.0.0 + react-native: 0.70.2_react@18.2.0 dev: false - /react-native-screens/3.15.0_jk6ntyzimkrv4hwdmdgaaf5yaa: - resolution: {integrity: sha512-ezC5TibsUYyqPuuHpZoM3iEl6bRzCVBMJeGaFkn7xznuOt1VwkZVub0BvafIEYR/+AQC/RjxzMSQPs1qal0+wA==} + /react-native-screens/3.18.0_6zkxg335dae66szwidefhu4unm: + resolution: {integrity: sha512-ndnz5JPLMLq/ThCYQzAOT65x6B4bdKFH1GKckUdbxKrwINGItPRSUiAoVI7YYyOQOa4VYL4hF37rrx+AjgjtRg==} peerDependencies: react: '*' react-native: '*' dependencies: - react: 18.0.0 - react-freeze: 1.0.3_react@18.0.0 - react-native: 0.69.4_react@18.0.0 - warn-once: 0.1.0 + react: 18.2.0 + react-freeze: 1.0.3_react@18.2.0 + react-native: 0.70.2_react@18.2.0 + warn-once: 0.1.1 dev: false - /react-native-svg-transformer/1.0.0_slyhrj4rhac6kym2xxm3raxghe: + /react-native-svg-transformer/1.0.0_fll77qb3ogjnwfmaiycfysecn4: 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_react@18.0.0 - react-native-svg: 13.0.0_jk6ntyzimkrv4hwdmdgaaf5yaa + react-native: 0.70.2_react@18.2.0 + react-native-svg: 13.3.0_6zkxg335dae66szwidefhu4unm transitivePeerDependencies: + - '@babel/core' - supports-color dev: true - /react-native-svg/13.0.0_jk6ntyzimkrv4hwdmdgaaf5yaa: - resolution: {integrity: sha512-CkWB8BYGjvmGiLqqJRHfTH8/Q5tJyhltUYCmi20sqOCbjfTR5dkQUUafV0oUOhvK2lS+zuB9Dpf1Beo92rls5Q==} + /react-native-svg/13.3.0_6zkxg335dae66szwidefhu4unm: + resolution: {integrity: sha512-Xr6+sTt8ioCRypCbIDMgfmc4l2s/7H8l7FfPoMZ8qMf0dVx8ZVCHRsQlrdmwgVKLJwKSAiwj7Tqqz8NPSEpwDw==} peerDependencies: react: '*' react-native: '*' dependencies: css-select: 5.1.0 css-tree: 1.1.3 - react: 18.0.0 - react-native: 0.69.4_react@18.0.0 + react: 18.2.0 + react-native: 0.70.2_react@18.2.0 - /react-native/0.69.4_react@18.0.0: - resolution: {integrity: sha512-rqNMialM/T4pHRKWqTIpOxA65B/9kUjtnepxwJqvsdCeMP9Q2YdSx4VASFR9RoEFYcPRU41yGf6EKrChNfns3g==} + /react-native/0.70.2_react@18.2.0: + resolution: {integrity: sha512-c0Usl1Lc4pApDI66wpHwX8SGBUqXouQ8Z8Q9gX4jBjnmO5E8Vmlv6IM0CWDqbX/tn+aKNHCBLqV5phnCqusGbw==} engines: {node: '>=14'} hasBin: true peerDependencies: - react: 18.0.0 + react: 18.1.0 dependencies: '@jest/create-cache-key-function': 27.5.1 - '@react-native-community/cli': 8.0.5_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': 9.1.3 + '@react-native-community/cli-platform-android': 9.1.0 + '@react-native-community/cli-platform-ios': 9.1.2 '@react-native/assets': 1.0.0 '@react-native/normalize-color': 2.0.0 '@react-native/polyfills': 2.0.0 @@ -7306,27 +7230,26 @@ packages: anser: 1.4.10 base64-js: 1.5.1 event-target-shim: 5.0.1 - hermes-engine: 0.11.0 invariant: 2.2.4 jsc-android: 250230.2.1 memoize-one: 5.2.1 - metro-react-native-babel-transformer: 0.70.3 - metro-runtime: 0.70.3 - metro-source-map: 0.70.3 + metro-react-native-babel-transformer: 0.72.3 + metro-runtime: 0.72.3 + metro-source-map: 0.72.3 mkdirp: 0.5.6 nullthrows: 1.1.1 pretty-format: 26.6.2 - promise: 8.1.0 - react: 18.0.0 + promise: 8.2.0 + react: 18.2.0 react-devtools-core: 4.24.0 - react-native-codegen: 0.69.1 - react-native-gradle-plugin: 0.0.7 + react-native-codegen: 0.70.5 + react-native-gradle-plugin: 0.70.3 react-refresh: 0.4.3 - react-shallow-renderer: 16.15.0_react@18.0.0 + react-shallow-renderer: 16.15.0_react@18.2.0 regenerator-runtime: 0.13.9 - scheduler: 0.21.0 + scheduler: 0.22.0 stacktrace-parser: 0.1.10 - use-sync-external-store: 1.2.0_react@18.0.0 + use-sync-external-store: 1.2.0_react@18.2.0 whatwg-fetch: 3.6.2 ws: 6.2.2 transitivePeerDependencies: @@ -7340,17 +7263,17 @@ packages: resolution: {integrity: sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA==} engines: {node: '>=0.10.0'} - /react-shallow-renderer/16.15.0_react@18.0.0: + /react-shallow-renderer/16.15.0_react@18.2.0: resolution: {integrity: sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==} peerDependencies: react: ^16.0.0 || ^17.0.0 || ^18.0.0 dependencies: object-assign: 4.1.1 - react: 18.0.0 - react-is: 17.0.2 + react: 18.2.0 + react-is: 18.2.0 - /react/18.0.0: - resolution: {integrity: sha512-x+VL6wbT4JRVPm7EGxXhZ8w8LTROaxPXOqhlGyVSrv0sB1jkyFGgXxJ8LVoPRLvPR6/CIZGFmfzqUa2NYeMr2A==} + /react/18.2.0: + resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} engines: {node: '>=0.10.0'} dependencies: loose-envify: 1.4.0 @@ -7407,8 +7330,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 @@ -7422,7 +7345,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: @@ -7446,22 +7369,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 @@ -7617,6 +7540,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: @@ -7630,8 +7561,8 @@ packages: resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} dev: false - /scheduler/0.21.0: - resolution: {integrity: sha512-1r87x5fz9MXqswA2ERLo0EbOAU74DpIUO090gIasYTqlVoJeMcl+Z1Rg7WHz+qtPujhS/hGIt9kxZOYBV3faRQ==} + /scheduler/0.22.0: + resolution: {integrity: sha512-6QAm1BgQI88NPYymgGQLCZgvep4FyePDWFpXVK+zNSUgHwlqpJy8VEh8Et0KxTACS4VWwMousBElAZOH9nkkoQ==} dependencies: loose-envify: 1.4.0 @@ -7643,18 +7574,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: @@ -7760,7 +7687,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: @@ -7949,8 +7876,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 @@ -7962,7 +7889,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: @@ -7970,7 +7897,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: @@ -8025,8 +7952,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: @@ -8067,8 +7994,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 @@ -8079,10 +8006,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 @@ -8101,8 +8024,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: @@ -8112,18 +8035,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 @@ -8197,11 +8120,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: @@ -8308,23 +8231,23 @@ 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: + /twrnc/3.4.0_react-native@0.70.2: resolution: {integrity: sha512-zJzueyC+LUphbrUEyeVmbR7VfAFObq2mr6ALfMytusHxzHJnOMCdxsw2GCTD67nThP1V22QFp9CZ/DulcZMl1g==} peerDependencies: react-native: '>=0.63.0' dependencies: - react-native: 0.69.4_react@18.0.0 - tailwindcss: 3.1.7 + react-native: 0.70.2_react@18.2.0 + tailwindcss: 3.1.8 transitivePeerDependencies: - ts-node dev: false @@ -8373,8 +8296,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 @@ -8409,14 +8332,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: @@ -8479,13 +8402,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 @@ -8510,33 +8433,33 @@ packages: requires-port: 1.0.0 dev: false - /use-count-up/3.0.1_react@18.0.0: + /use-count-up/3.0.1_react@18.2.0: resolution: {integrity: sha512-jlVsXJYje6jh+xwQaCEYrwHoB+nRyillNEmr21bhe9kw7tpRzyrSq9jQs9UOlo+8hCFkuOmjUihL3IjEK/piVg==} peerDependencies: react: '>=16.8.0' dependencies: - react: 18.0.0 - use-elapsed-time: 3.0.2_react@18.0.0 + react: 18.2.0 + use-elapsed-time: 3.0.2_react@18.2.0 dev: false - /use-elapsed-time/3.0.2_react@18.0.0: + /use-elapsed-time/3.0.2_react@18.2.0: resolution: {integrity: sha512-2EY9lJ5DWbAvT8wWiEp6Ztnl46DjXz2j78uhWbXaz/bg3OfpbgVucCAlcN8Bih6hTJfFTdVYX9L6ySMn5py/wQ==} peerDependencies: react: '>=16.8.0' dependencies: - react: 18.0.0 + react: 18.2.0 dev: false /use-latest-callback/0.1.5: resolution: {integrity: sha512-HtHatS2U4/h32NlkhupDsPlrbiD27gSH5swBdtXbCAlc6pfOFzaj0FehW/FO12rx8j2Vy4/lJScCiJyM01E+bQ==} dev: false - /use-sync-external-store/1.2.0_react@18.0.0: + /use-sync-external-store/1.2.0_react@18.2.0: resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - react: 18.0.0 + react: 18.2.0 /use/3.1.1: resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==} @@ -8565,10 +8488,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 @@ -8585,10 +8504,10 @@ packages: valtio: ^1.2.5 dependencies: lodash: 4.17.21 - valtio: 1.7.0_react@18.0.0 + valtio: 1.7.0_react@18.2.0 dev: false - /valtio/1.7.0_react@18.0.0: + /valtio/1.7.0_react@18.2.0: resolution: {integrity: sha512-3Tnix66EERwMcrl1rfB3ylcewOcL5L/GiPmC3FlVNreQzqf2jufEeqlNmgnLgSGchkEmH3WYVtS+x6Qw4r+yzQ==} engines: {node: '>=12.7.0'} peerDependencies: @@ -8613,8 +8532,8 @@ packages: optional: true dependencies: proxy-compare: 2.3.0 - react: 18.0.0 - use-sync-external-store: 1.2.0_react@18.0.0 + react: 18.2.0 + use-sync-external-store: 1.2.0_react@18.2.0 dev: false /vary/1.1.2: @@ -8629,10 +8548,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 @@ -8778,6 +8693,7 @@ packages: /xmlbuilder/15.1.1: resolution: {integrity: sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==} engines: {node: '>=8.0'} + dev: false /xtend/4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} @@ -8820,6 +8736,23 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} + /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' + react: '>=16.8' + peerDependenciesMeta: + immer: + optional: true + react: + optional: true + dependencies: + immer: 9.0.15 + react: 18.2.0 + use-sync-external-store: 1.2.0_react@18.2.0 + dev: false + file:../../packages/assets: resolution: {directory: ../../packages/assets, type: directory} name: '@sd/assets' diff --git a/apps/mobile/rust/src/android.rs b/apps/mobile/rust/src/android.rs index 9e45f3599..b66239023 100644 --- a/apps/mobile/rust/src/android.rs +++ b/apps/mobile/rust/src/android.rs @@ -1,3 +1,5 @@ +use std::panic; + use crate::{EVENT_SENDER, NODE, RUNTIME, SUBSCRIPTIONS}; use jni::objects::{JClass, JObject, JString}; use jni::JNIEnv; @@ -10,34 +12,45 @@ 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] @@ -45,46 +58,76 @@ pub extern "system" fn Java_com_spacedrive_app_SDCore_handleCoreMsg( env: JNIEnv, class: JClass, query: JString, - _callback: JObject, + 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 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(); - 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.unwrap(); - node.replace(new_node.clone()); - new_node + env.call_method( + &callback, + "resolve", + "(Ljava/lang/Object;)V", + &[env + .new_string(serde_json::to_vec(&resp).unwrap()) + .expect("Couldn't create java string!") + .into()], + ) + .unwrap(); + } + _ => unreachable!(), } - }; - - handle_json_rpc( - node.get_request_context(), - request, - &router, - &mut Sender::ResponseChannel(&mut EVENT_SENDER.get().unwrap().clone()), - &mut SubscriptionMap::Mutex(&SUBSCRIPTIONS), - ) - .await; + }); }); + + 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/src/hooks/rspc.ts b/apps/mobile/src/hooks/rspc.ts index 613ea1390..774f03b7c 100644 --- a/apps/mobile/src/hooks/rspc.ts +++ b/apps/mobile/src/hooks/rspc.ts @@ -14,28 +14,28 @@ 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 { - 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: string, input: any): Promise { - const body = JSON.parse( + const resp = JSON.parse( await SDCore.sd_core_msg( JSON.stringify({ + id: null, method: operation, params: { path: key, @@ -44,11 +44,13 @@ export class ReactNativeTransport implements Transport { }) ) ); + + 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 body.result; + return body.data; } else if (body.type !== 'none') { throw new Error(`RSPC ReactNative doRequest received invalid body type '${body?.type}'`); } diff --git a/apps/mobile/src/navigation/TabNavigator.tsx b/apps/mobile/src/navigation/TabNavigator.tsx index d8760a9ed..ecc2f6628 100644 --- a/apps/mobile/src/navigation/TabNavigator.tsx +++ b/apps/mobile/src/navigation/TabNavigator.tsx @@ -1,7 +1,7 @@ import { BottomTabScreenProps, createBottomTabNavigator } from '@react-navigation/bottom-tabs'; import { CompositeScreenProps, NavigatorScreenParams } from '@react-navigation/native'; import { CirclesFour, Folder, Planet } from 'phosphor-react-native'; -import { PhotographIcon } from 'react-native-heroicons/outline'; +import { PhotoIcon } from 'react-native-heroicons/outline'; import tw from '~/lib/tailwind'; import type { HomeDrawerScreenProps } from './DrawerNavigator'; @@ -65,7 +65,7 @@ export default function TabNavigator() { component={PhotosStack} options={{ tabBarIcon: ({ focused }) => ( - + ), tabBarLabel: 'Photos' }} diff --git a/apps/mobile/src/screens/Overview.tsx b/apps/mobile/src/screens/Overview.tsx index fffec0059..05666fe54 100644 --- a/apps/mobile/src/screens/Overview.tsx +++ b/apps/mobile/src/screens/Overview.tsx @@ -1,214 +1,65 @@ -import { ExclamationCircleIcon, PlusIcon } from '@heroicons/react/24/solid'; -import { useBridgeQuery, useLibraryQuery, usePlatform } from '@sd/client'; -import { Statistics } from '@sd/client'; -import { Button, Input } from '@sd/ui'; -import byteSize from 'byte-size'; -import clsx from 'clsx'; -import { useEffect } from 'react'; -import Skeleton from 'react-loading-skeleton'; -import 'react-loading-skeleton/dist/skeleton.css'; -import create from 'zustand'; +import React from 'react'; +import { FlatList, View } from 'react-native'; +import Device from '~/components/device/Device'; +import VirtualizedListWrapper from '~/components/layout/VirtualizedListWrapper'; +import OverviewStats from '~/containers/OverviewStats'; +import tw from '~/lib/tailwind'; +import { OverviewStackScreenProps } from '~/navigation/tabs/OverviewStack'; -import { Device } from '../components/device/Device'; -import Dialog from '../components/layout/Dialog'; -import useCounter from '../hooks/useCounter'; - -interface StatItemProps { - title: string; - bytes: string; - isLoading: boolean; -} - -const StatItemNames: Partial> = { - total_bytes_capacity: 'Total capacity', - preview_media_bytes: 'Preview media', - library_db_size: 'Index size', - total_bytes_free: 'Free space' +const placeholderOverviewStats = { + id: 1, + total_bytes_capacity: '8093333345230', + preview_media_bytes: '2304387532', + library_db_size: '83345230', + total_file_count: 20342345, + total_bytes_free: '89734502034', + total_bytes_used: '8093333345230', + total_unique_bytes: '9347397', + date_captured: '2020-01-01' }; -type OverviewStats = Partial>; -type OverviewState = { - overviewStats: OverviewStats; - setOverviewStat: (name: keyof OverviewStats, newValue: string) => void; - setOverviewStats: (stats: OverviewStats) => void; -}; - -export const useOverviewState = create((set) => ({ - overviewStats: {}, - setOverviewStat: (name, newValue) => - set((state) => ({ - ...state, - overviewStats: { - ...state.overviewStats, - [name]: newValue - } - })), - setOverviewStats: (stats) => - set((state) => ({ - ...state, - overviewStats: stats - })) -})); - -const StatItem: React.FC = (props) => { - const { title, bytes = '0', isLoading } = props; - - // const appProps = useContext(AppPropsContext); - - const size = byteSize(+bytes); - - const count = useCounter({ - name: title, - end: +size.value - }); +const placeholderDevices: any = [ + { + name: "James' iPhone 12", + size: '47.9GB', + locations: [], + type: 'phone' + }, + { + name: "James' MacBook Pro", + size: '1TB', + locations: [], + type: 'laptop' + }, + { + name: "James' Toaster", + size: '1PB', + locations: [], + type: 'desktop' + }, + { + name: 'Spacedrive Server', + size: '5GB', + locations: [], + type: 'server' + } +]; +export default function OverviewScreen({ navigation }: OverviewStackScreenProps<'Overview'>) { return ( -
- {title} - - {isLoading && ( -
- -
- )} -
- {count} - {size.unit} -
-
-
- ); -}; - -export default function OverviewScreen() { - const platform = usePlatform(); - const { data: libraryStatistics, isLoading: isStatisticsLoading } = useLibraryQuery([ - 'library.getStatistics' - ]); - const { data: nodeState } = useBridgeQuery(['getNode']); - - const { overviewStats, setOverviewStats } = useOverviewState(); - - // get app props from context - useEffect(() => { - if (platform.demoMode === true) { - if (!Object.entries(overviewStats).length) - setOverviewStats({ - total_bytes_capacity: '8093333345230', - preview_media_bytes: '2304387532', - library_db_size: '83345230', - total_file_count: '20342345', - total_bytes_free: '89734502034', - total_bytes_used: '8093333345230', - total_unique_bytes: '9347397' - }); - } else { - const newStatistics: OverviewStats = { - total_bytes_capacity: '0', - preview_media_bytes: '0', - library_db_size: '0', - total_file_count: '0', - total_bytes_free: '0', - total_bytes_used: '0', - total_unique_bytes: '0' - }; - - Object.entries((libraryStatistics as Statistics) || {}).forEach(([key, value]) => { - newStatistics[key as keyof Statistics] = `${value}`; - }); - - setOverviewStats(newStatistics); - } - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [platform, libraryStatistics]); - - // useEffect(() => { - // setTimeout(() => { - // setOverviewStat('total_bytes_capacity', '4093333345230'); - // }, 2000); - // }, [overviewStats]); - - const displayableStatItems = Object.keys(StatItemNames) as unknown as keyof typeof StatItemNames; - - return ( -
-
- {/* PAGE */} -
- {/* STAT HEADER */} -
- {/* STAT CONTAINER */} -
- {Object.entries(overviewStats).map(([key, value]) => { - if (!displayableStatItems.includes(key)) return null; - - return ( - - ); - })} -
- -
-
-
- {}} - ctaLabel="Connect" - trigger={ - - } - > -
-
- - This Device - - -
-
- - Enter a device code - - -
-
-
-
-
-
-
- - - -
-
- Note: This is a pre-alpha build of Spacedrive, many features are yet to be - functional. -
-
-
-
+ + + {/* Stats */} + + {/* Devices */} + index.toString()} + renderItem={({ item }) => ( + + )} + /> + + ); } diff --git a/core/Cargo.toml b/core/Cargo.toml index 6a8e4db2b..32157f382 100644 --- a/core/Cargo.toml +++ b/core/Cargo.toml @@ -62,6 +62,8 @@ globset = { version = "^0.4.9", features = ["serde1"] } 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/utils/library.rs b/core/src/api/utils/library.rs index f776f4967..aff888476 100644 --- a/core/src/api/utils/library.rs +++ b/core/src/api/utils/library.rs @@ -1,7 +1,12 @@ +use std::sync::Arc; + use futures::{Future, Stream}; use rspc::{ - internal::{specta, BuiltProcedureBuilder, MiddlewareBuilderLike, UnbuiltProcedureBuilder}, - ErrorCode, RequestLayer, SerializeMarker, Type, + internal::{ + specta, BuiltProcedureBuilder, MiddlewareBuilderLike, RequestResult, + UnbuiltProcedureBuilder, + }, + ErrorCode, Type, }; use serde::{de::DeserializeOwned, Deserialize, Serialize}; use uuid::Uuid; @@ -17,38 +22,47 @@ pub(crate) struct LibraryArgs { // 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, - builder: fn(UnbuiltProcedureBuilder) -> BuiltProcedureBuilder, + builder: impl FnOnce( + UnbuiltProcedureBuilder, + ) -> BuiltProcedureBuilder, ) -> Self where - TArg: DeserializeOwned + specta::Type + Send + 'static, - TResult: Future> + Send + 'static, - T: RequestLayer + Serialize + specta::Type + Send, - TResolver: Fn(Ctx, TArg, LibraryContext) -> TResult + Send + Sync + 'static; + 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, - builder: fn(UnbuiltProcedureBuilder) -> BuiltProcedureBuilder, + builder: impl FnOnce( + UnbuiltProcedureBuilder, + ) -> BuiltProcedureBuilder, ) -> Self where - TArg: DeserializeOwned + specta::Type + Send + 'static, - TResult: Future> + Send + 'static, - T: RequestLayer + Serialize + specta::Type + Send, - TResolver: Fn(Ctx, TArg, LibraryContext) -> TResult + Send + Sync + 'static; + 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( self, key: &'static str, - builder: fn(UnbuiltProcedureBuilder) -> BuiltProcedureBuilder, + builder: impl Fn(UnbuiltProcedureBuilder) -> BuiltProcedureBuilder, ) -> Self where TArg: DeserializeOwned + specta::Type + 'static, - TStream: Stream + Sync + Send + 'static, + TStream: Stream + Send + Sync + 'static, TResult: Serialize + specta::Type, - // TODO: This should take the 'LibraryContext' not 'Uuid' TResolver: Fn(Ctx, TArg, Uuid) -> TStream + Send + Sync + 'static; } @@ -57,62 +71,88 @@ impl LibraryRequest for rspc::RouterBuilder where TMiddleware: MiddlewareBuilderLike + Send + 'static, { - fn library_query( + fn library_query( self, key: &'static str, - builder: fn(UnbuiltProcedureBuilder) -> BuiltProcedureBuilder, + 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: RequestLayer + Serialize + specta::Type + Send, - TResolver: Fn(Ctx, TArg, LibraryContext) -> TResult + Send + Sync + 'static, { self.query(key, move |t| { - t(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(), - ) - })?; + let resolver = Arc::new(builder(UnbuiltProcedureBuilder::new(t.data())).resolver); - let resolver = builder(UnbuiltProcedureBuilder::default()).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, - builder: fn(UnbuiltProcedureBuilder) -> BuiltProcedureBuilder, + 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: RequestLayer + Serialize + specta::Type + Send, - TResolver: Fn(Ctx, TArg, LibraryContext) -> TResult + Send + Sync + 'static, { self.mutation(key, move |t| { - t(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(), - ) - })?; + let resolver = Arc::new(builder(UnbuiltProcedureBuilder::new(t.data())).resolver); - let resolver = builder(UnbuiltProcedureBuilder::default()).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?) + } }) }) } @@ -120,15 +160,17 @@ where fn library_subscription( self, key: &'static str, - builder: fn(UnbuiltProcedureBuilder) -> BuiltProcedureBuilder, + builder: impl Fn(UnbuiltProcedureBuilder) -> BuiltProcedureBuilder, ) -> Self where TArg: DeserializeOwned + specta::Type + 'static, - TStream: Stream + Sync + Send + 'static, + TStream: Stream + Send + Sync + 'static, TResult: Serialize + specta::Type, TResolver: Fn(Ctx, TArg, Uuid) -> TStream + Send + Sync + 'static, { self.subscription(key, |t| { + let resolver = Arc::new(builder(UnbuiltProcedureBuilder::new(t.data())).resolver); + t(move |ctx, arg: LibraryArgs| { // TODO(@Oscar): Upstream rspc work to allow this to work // let library = ctx @@ -142,7 +184,6 @@ where // ) // })?; - let resolver = builder(UnbuiltProcedureBuilder::default()).resolver; resolver(ctx, arg.arg, arg.library_id) }) }) From 90644be566bdb4c07bb681202085751ca06e3a60 Mon Sep 17 00:00:00 2001 From: Oscar Beaumont Date: Fri, 7 Oct 2022 04:56:59 +0800 Subject: [PATCH 11/16] Expo committed cringe --- apps/desktop/src-tauri/.env.example | 1 - apps/mobile/android/app/build.gradle | 2 +- .../main/java/com/spacedrive/app/SDCore.java | 7 +- apps/mobile/ios/Podfile.lock | 554 ++++++------ apps/mobile/package.json | 63 +- apps/mobile/pnpm-lock.yaml | 853 +++++++++--------- apps/mobile/rust/src/android.rs | 23 +- apps/mobile/src/navigation/TabNavigator.tsx | 4 +- package.json | 1 + 9 files changed, 741 insertions(+), 767 deletions(-) delete mode 100644 apps/desktop/src-tauri/.env.example 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/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 d22ee0886..9c1fd60da 100644 --- a/apps/mobile/ios/Podfile.lock +++ b/apps/mobile/ios/Podfile.lock @@ -19,325 +19,325 @@ PODS: - EXSplashScreen (0.16.2): - ExpoModulesCore - React-Core - - FBLazyVector (0.70.2) - - FBReactNativeSpec (0.70.2): - - RCT-Folly (= 2021.07.22.00) - - RCTRequired (= 0.70.2) - - RCTTypeSafety (= 0.70.2) - - React-Core (= 0.70.2) - - React-jsi (= 0.70.2) - - ReactCommon/turbomodule/core (= 0.70.2) + - FBLazyVector (0.69.4) + - FBReactNativeSpec (0.69.4): + - RCT-Folly (= 2021.06.28.00-v2) + - RCTRequired (= 0.69.4) + - RCTTypeSafety (= 0.69.4) + - React-Core (= 0.69.4) + - React-jsi (= 0.69.4) + - ReactCommon/turbomodule/core (= 0.69.4) - fmt (6.2.1) - glog (0.3.5) - - hermes-engine (0.70.2) + - hermes-engine (0.69.4) - libevent (2.1.12) - lottie-ios (3.4.3) - lottie-react-native (5.1.4): - lottie-ios (~> 3.4.0) - React-Core - - RCT-Folly (2021.07.22.00): + - RCT-Folly (2021.06.28.00-v2): - boost - DoubleConversion - fmt (~> 6.2.1) - glog - - RCT-Folly/Default (= 2021.07.22.00) - - RCT-Folly/Default (2021.07.22.00): + - RCT-Folly/Default (= 2021.06.28.00-v2) + - RCT-Folly/Default (2021.06.28.00-v2): - boost - DoubleConversion - fmt (~> 6.2.1) - glog - - RCT-Folly/Futures (2021.07.22.00): + - RCT-Folly/Futures (2021.06.28.00-v2): - boost - DoubleConversion - fmt (~> 6.2.1) - glog - libevent - - RCTRequired (0.70.2) - - RCTTypeSafety (0.70.2): - - FBLazyVector (= 0.70.2) - - RCTRequired (= 0.70.2) - - React-Core (= 0.70.2) - - React (0.70.2): - - React-Core (= 0.70.2) - - React-Core/DevSupport (= 0.70.2) - - React-Core/RCTWebSocket (= 0.70.2) - - React-RCTActionSheet (= 0.70.2) - - React-RCTAnimation (= 0.70.2) - - React-RCTBlob (= 0.70.2) - - React-RCTImage (= 0.70.2) - - React-RCTLinking (= 0.70.2) - - React-RCTNetwork (= 0.70.2) - - React-RCTSettings (= 0.70.2) - - React-RCTText (= 0.70.2) - - React-RCTVibration (= 0.70.2) - - React-bridging (0.70.2): - - RCT-Folly (= 2021.07.22.00) - - React-jsi (= 0.70.2) - - React-callinvoker (0.70.2) - - React-Codegen (0.70.2): - - FBReactNativeSpec (= 0.70.2) - - RCT-Folly (= 2021.07.22.00) - - RCTRequired (= 0.70.2) - - RCTTypeSafety (= 0.70.2) - - React-Core (= 0.70.2) - - React-jsi (= 0.70.2) - - React-jsiexecutor (= 0.70.2) - - ReactCommon/turbomodule/core (= 0.70.2) - - React-Core (0.70.2): + - RCTRequired (0.69.4) + - RCTTypeSafety (0.69.4): + - FBLazyVector (= 0.69.4) + - RCTRequired (= 0.69.4) + - React-Core (= 0.69.4) + - React (0.69.4): + - React-Core (= 0.69.4) + - React-Core/DevSupport (= 0.69.4) + - React-Core/RCTWebSocket (= 0.69.4) + - React-RCTActionSheet (= 0.69.4) + - React-RCTAnimation (= 0.69.4) + - React-RCTBlob (= 0.69.4) + - React-RCTImage (= 0.69.4) + - React-RCTLinking (= 0.69.4) + - React-RCTNetwork (= 0.69.4) + - React-RCTSettings (= 0.69.4) + - React-RCTText (= 0.69.4) + - React-RCTVibration (= 0.69.4) + - React-bridging (0.69.4): + - RCT-Folly (= 2021.06.28.00-v2) + - React-jsi (= 0.69.4) + - React-callinvoker (0.69.4) + - React-Codegen (0.69.4): + - FBReactNativeSpec (= 0.69.4) + - RCT-Folly (= 2021.06.28.00-v2) + - RCTRequired (= 0.69.4) + - RCTTypeSafety (= 0.69.4) + - React-Core (= 0.69.4) + - React-jsi (= 0.69.4) + - React-jsiexecutor (= 0.69.4) + - ReactCommon/turbomodule/core (= 0.69.4) + - React-Core (0.69.4): - glog - - RCT-Folly (= 2021.07.22.00) - - React-Core/Default (= 0.70.2) - - React-cxxreact (= 0.70.2) - - React-jsi (= 0.70.2) - - React-jsiexecutor (= 0.70.2) - - React-perflogger (= 0.70.2) + - RCT-Folly (= 2021.06.28.00-v2) + - React-Core/Default (= 0.69.4) + - React-cxxreact (= 0.69.4) + - React-jsi (= 0.69.4) + - React-jsiexecutor (= 0.69.4) + - React-perflogger (= 0.69.4) - Yoga - - React-Core/CoreModulesHeaders (0.70.2): + - React-Core/CoreModulesHeaders (0.69.4): - glog - - RCT-Folly (= 2021.07.22.00) + - RCT-Folly (= 2021.06.28.00-v2) - React-Core/Default - - React-cxxreact (= 0.70.2) - - React-jsi (= 0.70.2) - - React-jsiexecutor (= 0.70.2) - - React-perflogger (= 0.70.2) + - React-cxxreact (= 0.69.4) + - React-jsi (= 0.69.4) + - React-jsiexecutor (= 0.69.4) + - React-perflogger (= 0.69.4) - Yoga - - React-Core/Default (0.70.2): + - React-Core/Default (0.69.4): - glog - - RCT-Folly (= 2021.07.22.00) - - React-cxxreact (= 0.70.2) - - React-jsi (= 0.70.2) - - React-jsiexecutor (= 0.70.2) - - React-perflogger (= 0.70.2) + - RCT-Folly (= 2021.06.28.00-v2) + - React-cxxreact (= 0.69.4) + - React-jsi (= 0.69.4) + - React-jsiexecutor (= 0.69.4) + - React-perflogger (= 0.69.4) - Yoga - - React-Core/DevSupport (0.70.2): + - React-Core/DevSupport (0.69.4): - glog - - RCT-Folly (= 2021.07.22.00) - - React-Core/Default (= 0.70.2) - - React-Core/RCTWebSocket (= 0.70.2) - - React-cxxreact (= 0.70.2) - - React-jsi (= 0.70.2) - - React-jsiexecutor (= 0.70.2) - - React-jsinspector (= 0.70.2) - - React-perflogger (= 0.70.2) + - RCT-Folly (= 2021.06.28.00-v2) + - React-Core/Default (= 0.69.4) + - React-Core/RCTWebSocket (= 0.69.4) + - React-cxxreact (= 0.69.4) + - React-jsi (= 0.69.4) + - React-jsiexecutor (= 0.69.4) + - React-jsinspector (= 0.69.4) + - React-perflogger (= 0.69.4) - Yoga - - React-Core/RCTActionSheetHeaders (0.70.2): + - React-Core/RCTActionSheetHeaders (0.69.4): - glog - - RCT-Folly (= 2021.07.22.00) + - RCT-Folly (= 2021.06.28.00-v2) - React-Core/Default - - React-cxxreact (= 0.70.2) - - React-jsi (= 0.70.2) - - React-jsiexecutor (= 0.70.2) - - React-perflogger (= 0.70.2) + - React-cxxreact (= 0.69.4) + - React-jsi (= 0.69.4) + - React-jsiexecutor (= 0.69.4) + - React-perflogger (= 0.69.4) - Yoga - - React-Core/RCTAnimationHeaders (0.70.2): + - React-Core/RCTAnimationHeaders (0.69.4): - glog - - RCT-Folly (= 2021.07.22.00) + - RCT-Folly (= 2021.06.28.00-v2) - React-Core/Default - - React-cxxreact (= 0.70.2) - - React-jsi (= 0.70.2) - - React-jsiexecutor (= 0.70.2) - - React-perflogger (= 0.70.2) + - React-cxxreact (= 0.69.4) + - React-jsi (= 0.69.4) + - React-jsiexecutor (= 0.69.4) + - React-perflogger (= 0.69.4) - Yoga - - React-Core/RCTBlobHeaders (0.70.2): + - React-Core/RCTBlobHeaders (0.69.4): - glog - - RCT-Folly (= 2021.07.22.00) + - RCT-Folly (= 2021.06.28.00-v2) - React-Core/Default - - React-cxxreact (= 0.70.2) - - React-jsi (= 0.70.2) - - React-jsiexecutor (= 0.70.2) - - React-perflogger (= 0.70.2) + - React-cxxreact (= 0.69.4) + - React-jsi (= 0.69.4) + - React-jsiexecutor (= 0.69.4) + - React-perflogger (= 0.69.4) - Yoga - - React-Core/RCTImageHeaders (0.70.2): + - React-Core/RCTImageHeaders (0.69.4): - glog - - RCT-Folly (= 2021.07.22.00) + - RCT-Folly (= 2021.06.28.00-v2) - React-Core/Default - - React-cxxreact (= 0.70.2) - - React-jsi (= 0.70.2) - - React-jsiexecutor (= 0.70.2) - - React-perflogger (= 0.70.2) + - React-cxxreact (= 0.69.4) + - React-jsi (= 0.69.4) + - React-jsiexecutor (= 0.69.4) + - React-perflogger (= 0.69.4) - Yoga - - React-Core/RCTLinkingHeaders (0.70.2): + - React-Core/RCTLinkingHeaders (0.69.4): - glog - - RCT-Folly (= 2021.07.22.00) + - RCT-Folly (= 2021.06.28.00-v2) - React-Core/Default - - React-cxxreact (= 0.70.2) - - React-jsi (= 0.70.2) - - React-jsiexecutor (= 0.70.2) - - React-perflogger (= 0.70.2) + - React-cxxreact (= 0.69.4) + - React-jsi (= 0.69.4) + - React-jsiexecutor (= 0.69.4) + - React-perflogger (= 0.69.4) - Yoga - - React-Core/RCTNetworkHeaders (0.70.2): + - React-Core/RCTNetworkHeaders (0.69.4): - glog - - RCT-Folly (= 2021.07.22.00) + - RCT-Folly (= 2021.06.28.00-v2) - React-Core/Default - - React-cxxreact (= 0.70.2) - - React-jsi (= 0.70.2) - - React-jsiexecutor (= 0.70.2) - - React-perflogger (= 0.70.2) + - React-cxxreact (= 0.69.4) + - React-jsi (= 0.69.4) + - React-jsiexecutor (= 0.69.4) + - React-perflogger (= 0.69.4) - Yoga - - React-Core/RCTSettingsHeaders (0.70.2): + - React-Core/RCTSettingsHeaders (0.69.4): - glog - - RCT-Folly (= 2021.07.22.00) + - RCT-Folly (= 2021.06.28.00-v2) - React-Core/Default - - React-cxxreact (= 0.70.2) - - React-jsi (= 0.70.2) - - React-jsiexecutor (= 0.70.2) - - React-perflogger (= 0.70.2) + - React-cxxreact (= 0.69.4) + - React-jsi (= 0.69.4) + - React-jsiexecutor (= 0.69.4) + - React-perflogger (= 0.69.4) - Yoga - - React-Core/RCTTextHeaders (0.70.2): + - React-Core/RCTTextHeaders (0.69.4): - glog - - RCT-Folly (= 2021.07.22.00) + - RCT-Folly (= 2021.06.28.00-v2) - React-Core/Default - - React-cxxreact (= 0.70.2) - - React-jsi (= 0.70.2) - - React-jsiexecutor (= 0.70.2) - - React-perflogger (= 0.70.2) + - React-cxxreact (= 0.69.4) + - React-jsi (= 0.69.4) + - React-jsiexecutor (= 0.69.4) + - React-perflogger (= 0.69.4) - Yoga - - React-Core/RCTVibrationHeaders (0.70.2): + - React-Core/RCTVibrationHeaders (0.69.4): - glog - - RCT-Folly (= 2021.07.22.00) + - RCT-Folly (= 2021.06.28.00-v2) - React-Core/Default - - React-cxxreact (= 0.70.2) - - React-jsi (= 0.70.2) - - React-jsiexecutor (= 0.70.2) - - React-perflogger (= 0.70.2) + - React-cxxreact (= 0.69.4) + - React-jsi (= 0.69.4) + - React-jsiexecutor (= 0.69.4) + - React-perflogger (= 0.69.4) - Yoga - - React-Core/RCTWebSocket (0.70.2): + - React-Core/RCTWebSocket (0.69.4): - glog - - RCT-Folly (= 2021.07.22.00) - - React-Core/Default (= 0.70.2) - - React-cxxreact (= 0.70.2) - - React-jsi (= 0.70.2) - - React-jsiexecutor (= 0.70.2) - - React-perflogger (= 0.70.2) + - RCT-Folly (= 2021.06.28.00-v2) + - React-Core/Default (= 0.69.4) + - React-cxxreact (= 0.69.4) + - React-jsi (= 0.69.4) + - React-jsiexecutor (= 0.69.4) + - React-perflogger (= 0.69.4) - Yoga - - React-CoreModules (0.70.2): - - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.70.2) - - React-Codegen (= 0.70.2) - - React-Core/CoreModulesHeaders (= 0.70.2) - - React-jsi (= 0.70.2) - - React-RCTImage (= 0.70.2) - - ReactCommon/turbomodule/core (= 0.70.2) - - React-cxxreact (0.70.2): + - React-CoreModules (0.69.4): + - RCT-Folly (= 2021.06.28.00-v2) + - RCTTypeSafety (= 0.69.4) + - React-Codegen (= 0.69.4) + - React-Core/CoreModulesHeaders (= 0.69.4) + - React-jsi (= 0.69.4) + - React-RCTImage (= 0.69.4) + - ReactCommon/turbomodule/core (= 0.69.4) + - React-cxxreact (0.69.4): - boost (= 1.76.0) - DoubleConversion - glog - - RCT-Folly (= 2021.07.22.00) - - React-callinvoker (= 0.70.2) - - React-jsi (= 0.70.2) - - React-jsinspector (= 0.70.2) - - React-logger (= 0.70.2) - - React-perflogger (= 0.70.2) - - React-runtimeexecutor (= 0.70.2) - - React-hermes (0.70.2): + - RCT-Folly (= 2021.06.28.00-v2) + - React-callinvoker (= 0.69.4) + - React-jsi (= 0.69.4) + - React-jsinspector (= 0.69.4) + - React-logger (= 0.69.4) + - React-perflogger (= 0.69.4) + - React-runtimeexecutor (= 0.69.4) + - React-hermes (0.69.4): - DoubleConversion - glog - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - RCT-Folly/Futures (= 2021.07.22.00) - - React-cxxreact (= 0.70.2) - - React-jsi (= 0.70.2) - - React-jsiexecutor (= 0.70.2) - - React-jsinspector (= 0.70.2) - - React-perflogger (= 0.70.2) - - React-jsi (0.70.2): + - RCT-Folly (= 2021.06.28.00-v2) + - RCT-Folly/Futures (= 2021.06.28.00-v2) + - React-cxxreact (= 0.69.4) + - React-jsi (= 0.69.4) + - React-jsiexecutor (= 0.69.4) + - React-jsinspector (= 0.69.4) + - React-perflogger (= 0.69.4) + - React-jsi (0.69.4): - boost (= 1.76.0) - DoubleConversion - glog - - RCT-Folly (= 2021.07.22.00) - - React-jsi/Default (= 0.70.2) - - React-jsi/Default (0.70.2): + - RCT-Folly (= 2021.06.28.00-v2) + - React-jsi/Default (= 0.69.4) + - React-jsi/Default (0.69.4): - boost (= 1.76.0) - DoubleConversion - glog - - RCT-Folly (= 2021.07.22.00) - - React-jsiexecutor (0.70.2): + - RCT-Folly (= 2021.06.28.00-v2) + - React-jsiexecutor (0.69.4): - DoubleConversion - glog - - RCT-Folly (= 2021.07.22.00) - - React-cxxreact (= 0.70.2) - - React-jsi (= 0.70.2) - - React-perflogger (= 0.70.2) - - React-jsinspector (0.70.2) - - React-logger (0.70.2): + - RCT-Folly (= 2021.06.28.00-v2) + - React-cxxreact (= 0.69.4) + - React-jsi (= 0.69.4) + - React-perflogger (= 0.69.4) + - React-jsinspector (0.69.4) + - React-logger (0.69.4): - glog - - react-native-safe-area-context (4.4.1): + - react-native-safe-area-context (4.3.1): - RCT-Folly - RCTRequired - RCTTypeSafety - - React-Core + - React - ReactCommon/turbomodule/core - - React-perflogger (0.70.2) - - React-RCTActionSheet (0.70.2): - - React-Core/RCTActionSheetHeaders (= 0.70.2) - - React-RCTAnimation (0.70.2): - - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.70.2) - - React-Codegen (= 0.70.2) - - React-Core/RCTAnimationHeaders (= 0.70.2) - - React-jsi (= 0.70.2) - - ReactCommon/turbomodule/core (= 0.70.2) - - React-RCTBlob (0.70.2): - - RCT-Folly (= 2021.07.22.00) - - React-Codegen (= 0.70.2) - - React-Core/RCTBlobHeaders (= 0.70.2) - - React-Core/RCTWebSocket (= 0.70.2) - - React-jsi (= 0.70.2) - - React-RCTNetwork (= 0.70.2) - - ReactCommon/turbomodule/core (= 0.70.2) - - React-RCTImage (0.70.2): - - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.70.2) - - React-Codegen (= 0.70.2) - - React-Core/RCTImageHeaders (= 0.70.2) - - React-jsi (= 0.70.2) - - React-RCTNetwork (= 0.70.2) - - ReactCommon/turbomodule/core (= 0.70.2) - - React-RCTLinking (0.70.2): - - React-Codegen (= 0.70.2) - - React-Core/RCTLinkingHeaders (= 0.70.2) - - React-jsi (= 0.70.2) - - ReactCommon/turbomodule/core (= 0.70.2) - - React-RCTNetwork (0.70.2): - - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.70.2) - - React-Codegen (= 0.70.2) - - React-Core/RCTNetworkHeaders (= 0.70.2) - - React-jsi (= 0.70.2) - - ReactCommon/turbomodule/core (= 0.70.2) - - React-RCTSettings (0.70.2): - - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.70.2) - - React-Codegen (= 0.70.2) - - React-Core/RCTSettingsHeaders (= 0.70.2) - - React-jsi (= 0.70.2) - - ReactCommon/turbomodule/core (= 0.70.2) - - React-RCTText (0.70.2): - - React-Core/RCTTextHeaders (= 0.70.2) - - React-RCTVibration (0.70.2): - - RCT-Folly (= 2021.07.22.00) - - React-Codegen (= 0.70.2) - - React-Core/RCTVibrationHeaders (= 0.70.2) - - React-jsi (= 0.70.2) - - ReactCommon/turbomodule/core (= 0.70.2) - - React-runtimeexecutor (0.70.2): - - React-jsi (= 0.70.2) - - ReactCommon/turbomodule/core (0.70.2): + - React-perflogger (0.69.4) + - React-RCTActionSheet (0.69.4): + - React-Core/RCTActionSheetHeaders (= 0.69.4) + - React-RCTAnimation (0.69.4): + - RCT-Folly (= 2021.06.28.00-v2) + - RCTTypeSafety (= 0.69.4) + - React-Codegen (= 0.69.4) + - React-Core/RCTAnimationHeaders (= 0.69.4) + - React-jsi (= 0.69.4) + - ReactCommon/turbomodule/core (= 0.69.4) + - React-RCTBlob (0.69.4): + - RCT-Folly (= 2021.06.28.00-v2) + - React-Codegen (= 0.69.4) + - React-Core/RCTBlobHeaders (= 0.69.4) + - React-Core/RCTWebSocket (= 0.69.4) + - React-jsi (= 0.69.4) + - React-RCTNetwork (= 0.69.4) + - ReactCommon/turbomodule/core (= 0.69.4) + - React-RCTImage (0.69.4): + - RCT-Folly (= 2021.06.28.00-v2) + - RCTTypeSafety (= 0.69.4) + - React-Codegen (= 0.69.4) + - React-Core/RCTImageHeaders (= 0.69.4) + - React-jsi (= 0.69.4) + - React-RCTNetwork (= 0.69.4) + - ReactCommon/turbomodule/core (= 0.69.4) + - React-RCTLinking (0.69.4): + - React-Codegen (= 0.69.4) + - React-Core/RCTLinkingHeaders (= 0.69.4) + - React-jsi (= 0.69.4) + - ReactCommon/turbomodule/core (= 0.69.4) + - React-RCTNetwork (0.69.4): + - RCT-Folly (= 2021.06.28.00-v2) + - RCTTypeSafety (= 0.69.4) + - React-Codegen (= 0.69.4) + - React-Core/RCTNetworkHeaders (= 0.69.4) + - React-jsi (= 0.69.4) + - ReactCommon/turbomodule/core (= 0.69.4) + - React-RCTSettings (0.69.4): + - RCT-Folly (= 2021.06.28.00-v2) + - RCTTypeSafety (= 0.69.4) + - React-Codegen (= 0.69.4) + - React-Core/RCTSettingsHeaders (= 0.69.4) + - React-jsi (= 0.69.4) + - ReactCommon/turbomodule/core (= 0.69.4) + - React-RCTText (0.69.4): + - React-Core/RCTTextHeaders (= 0.69.4) + - React-RCTVibration (0.69.4): + - RCT-Folly (= 2021.06.28.00-v2) + - React-Codegen (= 0.69.4) + - React-Core/RCTVibrationHeaders (= 0.69.4) + - React-jsi (= 0.69.4) + - ReactCommon/turbomodule/core (= 0.69.4) + - React-runtimeexecutor (0.69.4): + - React-jsi (= 0.69.4) + - ReactCommon/turbomodule/core (0.69.4): - DoubleConversion - glog - - RCT-Folly (= 2021.07.22.00) - - React-bridging (= 0.70.2) - - React-callinvoker (= 0.70.2) - - React-Core (= 0.70.2) - - React-cxxreact (= 0.70.2) - - React-jsi (= 0.70.2) - - React-logger (= 0.70.2) - - React-perflogger (= 0.70.2) + - RCT-Folly (= 2021.06.28.00-v2) + - React-bridging (= 0.69.4) + - React-callinvoker (= 0.69.4) + - React-Core (= 0.69.4) + - React-cxxreact (= 0.69.4) + - React-jsi (= 0.69.4) + - React-logger (= 0.69.4) + - React-perflogger (= 0.69.4) - RNCAsyncStorage (1.17.10): - React-Core - - RNCMaskedView (0.2.8): + - RNCMaskedView (0.2.7): - React-Core - - RNGestureHandler (2.7.0): + - RNGestureHandler (2.5.0): - React-Core - RNReanimated (2.10.0): - DoubleConversion @@ -366,10 +366,10 @@ PODS: - React-RCTText - ReactCommon/turbomodule/core - Yoga - - RNScreens (3.18.0): + - RNScreens (3.15.0): - React-Core - React-RCTImage - - RNSVG (13.3.0): + - RNSVG (13.0.0): - React-Core - Yoga (1.14.0) @@ -546,49 +546,49 @@ SPEC CHECKSUMS: ExpoKeepAwake: 0e8f18142e71bbf2c7f6aa66ebed249ba1420320 ExpoModulesCore: 2d60ec04c49641afb55fee3faac86fb108c68fe0 EXSplashScreen: 799bece80089219b2c989c1082d70f3b00995cda - FBLazyVector: 0507edc21c06f1650c591f0981c846445469373b - FBReactNativeSpec: 585ef61b9a394a9166de579a080a0df672054319 + FBLazyVector: c71b8c429a8af2aff1013934a7152e9d9d0c937d + FBReactNativeSpec: 3cc5cff7d792e74a875be91e56d6242335016f50 fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9 - glog: 04b94705f318337d7ead9e6d17c019bd9b1f6b1b - hermes-engine: f9312a2ea8036d03b63568ebf392314f4fa8b474 + glog: 3d02b25ca00c2d456734d0bcff864cbc62f6ae1a + hermes-engine: 761a544537e62df2a37189389b9d2654dc1f75af libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 lottie-ios: 9ae750cdc7820fecbd3c2f0cfc493038208fcdc4 lottie-react-native: b702fab740cdb952a8e2354713d3beda63ff97b0 - RCT-Folly: 0080d0a6ebf2577475bda044aa59e2ca1f909cda - RCTRequired: d4033a367d0bfd1f23f67b501f8cdabf9afe617e - RCTTypeSafety: b112b2ccc59309a65284280c0a53baf1ce4b5860 - React: 04474547a4729eef1fb378ca42f302f4b3219eb8 - React-bridging: 1c8695b292b4a9baaca3960f6166d9766e20492d - React-callinvoker: 4d91e2db7773ee3fcea2d3a5c6beb52a5bfd4d71 - React-Codegen: 33356335c6f3b0869cb4434055fdec219139f635 - React-Core: 634b8aa20e1dad445425ee9581f4719bcfd1b19b - React-CoreModules: 746825283de4b54dcb4fd88703ff516297a5f60d - React-cxxreact: f8d2686d98b5ffed1b1de3aa62e1f81db4903153 - React-hermes: 4e9f5f9cfff42a23e7d6d8083e6c8a3f6f4926ee - React-jsi: 198b9b3e0a85e68cb6898265400fd8bf34cacda4 - React-jsiexecutor: 53bd208e5c27939c6e6365528393445a596a9a2b - React-jsinspector: 26c42646ab0bb69e29e837e23754fe7121eeaf94 - React-logger: 1bfd109a0ffa4c0989bbfac0c2d8c4abe4637faa - react-native-safe-area-context: 99b24a0c5acd0d5dcac2b1a7f18c49ea317be99a - React-perflogger: 6009895616a455781293950bbd63d53cfc7ffbc5 - React-RCTActionSheet: 5e90aa5712af18bfc86c2c6d97d4dbe0e5451c1d - React-RCTAnimation: 50c44d6501f8bfb2fe885e544501f8798b4ff3d6 - React-RCTBlob: 3cc08e7112dd7b77faf3fa481ba22ca2bba5f20a - React-RCTImage: ca8335860b5f64c383ad27f52a28d85089d49b7a - React-RCTLinking: 297cd91bdbf427efc861fc7943e6d683e61860fa - React-RCTNetwork: 8a197bff6f1dc5353484507a4cdcd47e9356316f - React-RCTSettings: d3db1f1e61a5ad8deb50f44f5cb6c7c3ef32b3ac - React-RCTText: c2c05ab3dbfb1cf5855b14802f392148970e48da - React-RCTVibration: 89e2cbea456ac5ec623943661d00e4dc45fe74b9 - React-runtimeexecutor: 80065f60af4f4b05603661070c8622bb3740bf16 - ReactCommon: 1209130f460e4aa9d255ddc75fa0a827ebf93dfb + RCT-Folly: b9d9fe1fc70114b751c076104e52f3b1b5e5a95a + RCTRequired: bd9d2ab0fda10171fcbcf9ba61a7df4dc15a28f4 + RCTTypeSafety: e44e139bf6ec8042db396201834fc2372f6a21cd + React: 482cd1ba23c471be1aed3800180be2427418d7be + React-bridging: c2ea4fed6fe4ed27c12fd71e88b5d5d3da107fde + React-callinvoker: d4d1f98163fb5e35545e910415ef6c04796bb188 + React-Codegen: ff35fb9c7f6ec2ed34fb6de2e1099d88dfb25f2f + React-Core: 4d3443a45b67c71d74d7243ddde9569d1e4f4fad + React-CoreModules: 70be25399366b5632ab18ecf6fe444a8165a7bea + React-cxxreact: 822d3794fc0bf206f4691592f90e086dd4f92228 + React-hermes: 7f67b8363288258c3b0cd4aef5975cb7f0b9549a + React-jsi: ffa51cbc9a78cc156cf61f79ed52ecb76dc6013b + React-jsiexecutor: a27badbbdbc0ff781813370736a2d1c7261181d4 + React-jsinspector: 8a3d3f5dcd23a91e8c80b1bf0e96902cd1dca999 + React-logger: 1088859f145b8f6dd0d3ed051a647ef0e3e80fad + react-native-safe-area-context: 6c12e3859b6f27b25de4fee8201cfb858432d8de + React-perflogger: cb386fd44c97ec7f8199c04c12b22066b0f2e1e0 + React-RCTActionSheet: f803a85e46cf5b4066c2ac5e122447f918e9c6e5 + React-RCTAnimation: 19c80fa950ccce7f4db76a2a7f2cf79baae07fc7 + React-RCTBlob: f36ab97e2d515c36df14a1571e50056be80413d5 + React-RCTImage: 2c8f0a329a116248e82f8972ffe806e47c6d1cfa + React-RCTLinking: 670f0223075aff33be3b89714f1da4f5343fc4af + React-RCTNetwork: 09385b73f4ff1f46bd5d749540fb33f69a7e5908 + React-RCTSettings: 33b12d3ac7a1f2eba069ec7bd1b84345263b3bbe + React-RCTText: a1a3ea902403bd9ae4cf6f7960551dc1d25711b5 + React-RCTVibration: 9adb4a3cbb598d1bbd46a05256f445e4b8c70603 + React-runtimeexecutor: 61ee22a8cdf8b6bb2a7fb7b4ba2cc763e5285196 + ReactCommon: 8f67bd7e0a6afade0f20718f859dc8c2275f2e83 RNCAsyncStorage: 0c357f3156fcb16c8589ede67cc036330b6698ca - RNCMaskedView: bc0170f389056201c82a55e242e5d90070e18e5a - RNGestureHandler: 7673697e7c0e9391adefae4faa087442bc04af33 - RNReanimated: 60e291d42c77752a0f6d6f358387bdf225a87c6e - RNScreens: f3230dd008a7d0ce5c0a8bc78ff12cf2315bda24 - RNSVG: 1869ad9534459f24caaa0416a4764548c2aeedad - Yoga: 043f8eb97345d0171f27fead4d1849cacf0472a5 + RNCMaskedView: cb9670ea9239998340eaab21df13fa12a1f9de15 + RNGestureHandler: bad495418bcbd3ab47017a38d93d290ebd406f50 + RNReanimated: 7faa787e8d4493fbc95fab2ad331fa7625828cfa + RNScreens: 4a1af06327774490d97342c00aee0c2bafb497b7 + RNSVG: 42a0c731b11179ebbd27a3eeeafa7201ebb476ff + Yoga: ff994563b2fd98c982ca58e8cd9db2cdaf4dda74 PODFILE CHECKSUM: b77befb1871220c1a94408eeae0857d78b685698 diff --git a/apps/mobile/package.json b/apps/mobile/package.json index 3f676c2f3..49b065fb3 100644 --- a/apps/mobile/package.json +++ b/apps/mobile/package.json @@ -10,63 +10,60 @@ "lint": "eslint src/**/*.{ts,tsx} && tsc --noEmit" }, "dependencies": { - "@gorhom/bottom-sheet": "^4.4.5", - "@react-native-async-storage/async-storage": "~1.17.10", - "@react-native-masked-view/masked-view": "0.2.8", - "@react-navigation/bottom-tabs": "^6.4.0", - "@react-navigation/drawer": "^6.5.0", - "@react-navigation/native": "^6.0.13", - "@react-navigation/stack": "^6.3.2", + "@gorhom/bottom-sheet": "^4.4.3", + "@react-native-async-storage/async-storage": "~1.17.3", + "@react-native-masked-view/masked-view": "0.2.7", + "@react-navigation/bottom-tabs": "^6.3.3", + "@react-navigation/drawer": "^6.4.4", + "@react-navigation/native": "^6.0.12", + "@react-navigation/stack": "^6.2.3", "@rspc/client": "^0.1.2", "@rspc/react": "^0.1.2", "@sd/assets": "file:../../packages/assets", - "@tanstack/react-query": "^4.10.1", + "@tanstack/react-query": "^4.2.3", "byte-size": "^8.1.0", "class-variance-authority": "^0.2.3", - "clsx": "^1.2.1", - "dayjs": "^1.11.5", - "expo": "~46.0.15", + "date-fns": "^2.29.2", + "expo": "~46.0.10", "expo-linking": "~3.2.2", "expo-splash-screen": "~0.16.2", "expo-status-bar": "~1.4.0", "immer": "^9.0.15", "intl": "^1.2.5", "lottie-react-native": "^5.1.4", - "moti": "^0.20.0", + "moti": "^0.18.0", "phosphor-react-native": "^1.1.2", - "react": "18.2.0", - "react-loading-skeleton": "^3.1.0", - "react-native": "0.70.2", - "react-native-gesture-handler": "~2.7.0", - "react-native-heroicons": "^3.2.0", + "react": "18.0.0", + "react-native": "0.69.4", + "react-native-gesture-handler": "~2.5.0", + "react-native-heroicons": "^2.2.0", "react-native-reanimated": "~2.10.0", - "react-native-safe-area-context": "4.4.1", - "react-native-screens": "~3.18.0", - "react-native-svg": "13.3.0", + "react-native-safe-area-context": "4.3.1", + "react-native-screens": "~3.15.0", + "react-native-svg": "13.0.0", "twrnc": "^3.4.0", "use-count-up": "^3.0.1", "valtio": "^1.7.0", - "valtio-persist": "^1.0.2", - "zustand": "^4.1.1" + "valtio-persist": "^1.0.2" }, "devDependencies": { - "@babel/core": "^7.19.3", - "@babel/runtime": "^7.19.0", - "@rnx-kit/metro-config": "^1.3.1", + "@babel/core": "^7.18.6", + "@babel/runtime": "^7.18.9", + "@rnx-kit/metro-config": "^1.2.37", "@rnx-kit/metro-resolver-symlinks": "^0.1.21", - "@types/react": "~18.0.21", - "@types/react-native": "~0.70.4", - "@typescript-eslint/eslint-plugin": "^5.39.0", - "@typescript-eslint/parser": "^5.39.0", + "@types/react": "~18.0.0", + "@types/react-native": "~0.69.1", + "@typescript-eslint/eslint-plugin": "^5.30.7", + "@typescript-eslint/parser": "^5.30.7", "babel-plugin-module-resolver": "^4.1.0", - "eslint": "^8.24.0", + "eslint": "^8.21.0", "eslint-config-prettier": "^8.5.0", - "eslint-plugin-react": "^7.31.8", + "eslint-plugin-react": "^7.30.1", "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-react-native": "^4.0.0", - "metro-minify-terser": "^0.73.0", + "metro-minify-terser": "^0.72.1", "react-native-svg-transformer": "^1.0.0", - "typescript": "^4.8.4" + "typescript": "^4.7.4" }, "private": true } diff --git a/apps/mobile/pnpm-lock.yaml b/apps/mobile/pnpm-lock.yaml index 9106e63e3..f635ed63a 100644 --- a/apps/mobile/pnpm-lock.yaml +++ b/apps/mobile/pnpm-lock.yaml @@ -4,107 +4,101 @@ importers: .: specifiers: - '@babel/core': ^7.19.3 - '@babel/runtime': ^7.19.0 - '@gorhom/bottom-sheet': ^4.4.5 - '@react-native-async-storage/async-storage': ~1.17.10 - '@react-native-masked-view/masked-view': 0.2.8 - '@react-navigation/bottom-tabs': ^6.4.0 - '@react-navigation/drawer': ^6.5.0 - '@react-navigation/native': ^6.0.13 - '@react-navigation/stack': ^6.3.2 - '@rnx-kit/metro-config': ^1.3.1 + '@babel/core': ^7.18.6 + '@babel/runtime': ^7.18.9 + '@gorhom/bottom-sheet': ^4.4.3 + '@react-native-async-storage/async-storage': ~1.17.3 + '@react-native-masked-view/masked-view': 0.2.7 + '@react-navigation/bottom-tabs': ^6.3.3 + '@react-navigation/drawer': ^6.4.4 + '@react-navigation/native': ^6.0.12 + '@react-navigation/stack': ^6.2.3 + '@rnx-kit/metro-config': ^1.2.37 '@rnx-kit/metro-resolver-symlinks': ^0.1.21 '@rspc/client': ^0.1.2 '@rspc/react': ^0.1.2 '@sd/assets': file:../../packages/assets - '@tanstack/react-query': ^4.10.1 - '@types/react': ~18.0.21 - '@types/react-native': ~0.70.4 - '@typescript-eslint/eslint-plugin': ^5.39.0 - '@typescript-eslint/parser': ^5.39.0 + '@tanstack/react-query': ^4.2.3 + '@types/react': ~18.0.0 + '@types/react-native': ~0.69.1 + '@typescript-eslint/eslint-plugin': ^5.30.7 + '@typescript-eslint/parser': ^5.30.7 babel-plugin-module-resolver: ^4.1.0 byte-size: ^8.1.0 class-variance-authority: ^0.2.3 - clsx: ^1.2.1 - dayjs: ^1.11.5 - eslint: ^8.24.0 + date-fns: ^2.29.2 + eslint: ^8.21.0 eslint-config-prettier: ^8.5.0 - eslint-plugin-react: ^7.31.8 + eslint-plugin-react: ^7.30.1 eslint-plugin-react-hooks: ^4.6.0 eslint-plugin-react-native: ^4.0.0 - expo: ~46.0.15 + expo: ~46.0.10 expo-linking: ~3.2.2 expo-splash-screen: ~0.16.2 expo-status-bar: ~1.4.0 immer: ^9.0.15 intl: ^1.2.5 lottie-react-native: ^5.1.4 - metro-minify-terser: ^0.73.0 - moti: ^0.20.0 + metro-minify-terser: ^0.72.1 + moti: ^0.18.0 phosphor-react-native: ^1.1.2 - react: 18.2.0 - react-loading-skeleton: ^3.1.0 - react-native: 0.70.2 - react-native-gesture-handler: ~2.7.0 - react-native-heroicons: ^3.2.0 + react: 18.0.0 + react-native: 0.69.4 + react-native-gesture-handler: ~2.5.0 + react-native-heroicons: ^2.2.0 react-native-reanimated: ~2.10.0 - react-native-safe-area-context: 4.4.1 - react-native-screens: ~3.18.0 - react-native-svg: 13.3.0 + react-native-safe-area-context: 4.3.1 + react-native-screens: ~3.15.0 + react-native-svg: 13.0.0 react-native-svg-transformer: ^1.0.0 twrnc: ^3.4.0 - typescript: ^4.8.4 + typescript: ^4.7.4 use-count-up: ^3.0.1 valtio: ^1.7.0 valtio-persist: ^1.0.2 - zustand: ^4.1.1 dependencies: - '@gorhom/bottom-sheet': 4.4.5_kxcxrbi3qrduaf3pxvz4xbiazq - '@react-native-async-storage/async-storage': 1.17.10_react-native@0.70.2 - '@react-native-masked-view/masked-view': 0.2.8_6zkxg335dae66szwidefhu4unm - '@react-navigation/bottom-tabs': 6.4.0_4p5d5kkwpeivrtldcfe4x42eze - '@react-navigation/drawer': 6.5.0_uzroadbe3zhgx7l6w6dyv735ai - '@react-navigation/native': 6.0.13_6zkxg335dae66szwidefhu4unm - '@react-navigation/stack': 6.3.2_lntn3nnre3nbfgyyo3i5ztk2m4 + '@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.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_ccuuwrkoo5lqohzgsfxrnkoque + '@rspc/react': 0.1.2_42vf6jz3slhkhs3b6cxp5fqczu '@sd/assets': file:../../packages/assets - '@tanstack/react-query': 4.10.1_6zkxg335dae66szwidefhu4unm + '@tanstack/react-query': 4.10.1_jk6ntyzimkrv4hwdmdgaaf5yaa byte-size: 8.1.0 class-variance-authority: 0.2.3_typescript@4.8.4 - clsx: 1.2.1 - dayjs: 1.11.5 + 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 - lottie-react-native: 5.1.4_6zkxg335dae66szwidefhu4unm - moti: 0.20.0_wlqc7i7ttqmckwruccztyvblxe - phosphor-react-native: 1.1.2_ljw63j2nddzn4oyfrbp4jo7qjy - react: 18.2.0 - react-loading-skeleton: 3.1.0_react@18.2.0 - react-native: 0.70.2_react@18.2.0 - react-native-gesture-handler: 2.7.0_6zkxg335dae66szwidefhu4unm - react-native-heroicons: 3.2.0_dvg3rdocew64lmuysagcnd25pe - react-native-reanimated: 2.10.0_4doumwegtq755c4phl66gqlczu - react-native-safe-area-context: 4.4.1_6zkxg335dae66szwidefhu4unm - react-native-screens: 3.18.0_6zkxg335dae66szwidefhu4unm - react-native-svg: 13.3.0_6zkxg335dae66szwidefhu4unm - twrnc: 3.4.0_react-native@0.70.2 - use-count-up: 3.0.1_react@18.2.0 - valtio: 1.7.0_react@18.2.0 + lottie-react-native: 5.1.4_jk6ntyzimkrv4hwdmdgaaf5yaa + moti: 0.18.0_react@18.0.0 + phosphor-react-native: 1.1.2_ipumakbosk2s7ylysjmrulvctq + react: 18.0.0 + 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_ifayjdo6vuwky63y7hdw4ayxzu + react-native-safe-area-context: 4.3.1_jk6ntyzimkrv4hwdmdgaaf5yaa + react-native-screens: 3.15.0_jk6ntyzimkrv4hwdmdgaaf5yaa + react-native-svg: 13.0.0_jk6ntyzimkrv4hwdmdgaaf5yaa + twrnc: 3.4.0_react-native@0.69.4 + use-count-up: 3.0.1_react@18.0.0 + valtio: 1.7.0_react@18.0.0 valtio-persist: 1.0.2_valtio@1.7.0 - zustand: 4.1.1_immer@9.0.15+react@18.2.0 devDependencies: '@babel/core': 7.19.3 '@babel/runtime': 7.19.0 - '@rnx-kit/metro-config': 1.3.1_4doumwegtq755c4phl66gqlczu + '@rnx-kit/metro-config': 1.3.1_ifayjdo6vuwky63y7hdw4ayxzu '@rnx-kit/metro-resolver-symlinks': 0.1.21 '@types/react': 18.0.21 - '@types/react-native': 0.70.4 + '@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 @@ -113,8 +107,8 @@ importers: 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.73.0 - react-native-svg-transformer: 1.0.0_fll77qb3ogjnwfmaiycfysecn4 + metro-minify-terser: 0.72.3 + react-native-svg-transformer: 1.0.0_tnz3sx6ysqoq7sjxw372rvqnoq typescript: 4.8.4 packages: @@ -1782,7 +1776,7 @@ packages: resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} dev: false - /@gorhom/bottom-sheet/4.4.5_kxcxrbi3qrduaf3pxvz4xbiazq: + /@gorhom/bottom-sheet/4.4.5_vlgoh3gg3ptp2ic2mlqzb2jwsy: resolution: {integrity: sha512-Z5Z20wshLUB8lIdtMKoJaRnjd64wBR/q8EeVPThrg+skrcBwBPHfUwZJ2srB0rEszA/01ejSJy/ixyd7Ra7vUA==} peerDependencies: react: '*' @@ -1790,23 +1784,23 @@ packages: react-native-gesture-handler: '>=1.10.1' react-native-reanimated: '>=2.2.0' dependencies: - '@gorhom/portal': 1.0.14_6zkxg335dae66szwidefhu4unm + '@gorhom/portal': 1.0.14_jk6ntyzimkrv4hwdmdgaaf5yaa invariant: 2.2.4 - react: 18.2.0 - react-native: 0.70.2_react@18.2.0 - react-native-gesture-handler: 2.7.0_6zkxg335dae66szwidefhu4unm - react-native-reanimated: 2.10.0_4doumwegtq755c4phl66gqlczu + react: 18.0.0 + react-native: 0.69.4_react@18.0.0 + react-native-gesture-handler: 2.5.0_jk6ntyzimkrv4hwdmdgaaf5yaa + react-native-reanimated: 2.10.0_ifayjdo6vuwky63y7hdw4ayxzu dev: false - /@gorhom/portal/1.0.14_6zkxg335dae66szwidefhu4unm: + /@gorhom/portal/1.0.14_jk6ntyzimkrv4hwdmdgaaf5yaa: resolution: {integrity: sha512-MXyL4xvCjmgaORr/rtryDNFy3kU4qUbKlwtQqqsygd0xX3mhKjOLn6mQK8wfu0RkoE0pBE0nAasRoHua+/QZ7A==} peerDependencies: react: '*' react-native: '*' dependencies: nanoid: 3.3.4 - react: 18.2.0 - react-native: 0.70.2_react@18.2.0 + react: 18.0.0 + react-native: 0.69.4_react@18.0.0 dev: false /@graphql-typed-document-node/core/3.1.1_graphql@15.8.0: @@ -1914,6 +1908,24 @@ packages: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.4.14 + /@motify/components/0.18.0_react@18.0.0: + resolution: {integrity: sha512-1StICST4CKXvWwkkoKtt6Pml//gE2fPI99Byxa+TbrFw4KieATeCYBRjSKD0BghmFmoF+2mRM2uf9FRYfJCGtQ==} + dependencies: + '@motify/core': 0.18.0_react@18.0.0 + transitivePeerDependencies: + - react + - react-dom + dev: false + + /@motify/core/0.18.0_react@18.0.0: + resolution: {integrity: sha512-8C4xnC5dZ+S/NEx5wIsHAccofffSOzo7M6lKYR8Ty0QA/XtfwNRL9jQBQafj0pon4h2XP7u2NcJ4lc0ANOsx3A==} + dependencies: + framer-motion: 6.5.1_react@18.0.0 + transitivePeerDependencies: + - react + - react-dom + dev: false + /@motionone/animation/10.14.0: resolution: {integrity: sha512-h+1sdyBP8vbxEBW5gPFDnj+m2DCqdlAuf2g6Iafb1lcMnqjsRXWlPw1AXgvUMXmreyhqmPbJqoNfIKdytampRQ==} dependencies: @@ -1994,29 +2006,29 @@ packages: rimraf: 3.0.2 dev: false - /@react-native-async-storage/async-storage/1.17.10_react-native@0.70.2: + /@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.70 || 1000.0.0 dependencies: merge-options: 3.0.4 - react-native: 0.70.2_react@18.2.0 + react-native: 0.69.4_react@18.0.0 dev: false - /@react-native-community/cli-clean/9.1.0: - resolution: {integrity: sha512-3HznNw8EBQtLsVyV8b8+h76M9EeJcJgYn5wZVGQ5mghAOhqnSWVbwRvpDdb8ITXaiTIXFGNOxXnGKMXsu0CYTw==} + /@react-native-community/cli-clean/8.0.4: + resolution: {integrity: sha512-IwS1M1NHg6+qL8PThZYMSIMYbZ6Zbx+lIck9PLBskbosFo24M3lCOflOl++Bggjakp6mR+sRXxLMexid/GeOsQ==} dependencies: - '@react-native-community/cli-tools': 9.1.0 + '@react-native-community/cli-tools': 8.0.4 chalk: 4.1.2 execa: 1.0.0 prompts: 2.4.2 transitivePeerDependencies: - encoding - /@react-native-community/cli-config/9.1.0: - resolution: {integrity: sha512-6G9d5weedQ6EMz37ZYXrFHCU2DG3yqvdLs4Jo2383cSxal+oO+kggaTgqLBKoMETz/S80KsMeC/l+MoRjc1pzw==} + /@react-native-community/cli-config/8.0.6: + resolution: {integrity: sha512-mjVpVvdh8AviiO8xtqeX+BkjqE//NMDnISwsLWSJUfNCwTAPmdR8PGbhgP5O4hWHyJ3WkepTopl0ya7Tfi3ifw==} dependencies: - '@react-native-community/cli-tools': 9.1.0 + '@react-native-community/cli-tools': 8.0.4 cosmiconfig: 5.2.1 deepmerge: 3.3.0 glob: 7.2.3 @@ -2024,19 +2036,19 @@ packages: transitivePeerDependencies: - encoding - /@react-native-community/cli-debugger-ui/9.0.0: - resolution: {integrity: sha512-7hH05ZwU9Tp0yS6xJW0bqcZPVt0YCK7gwj7gnRu1jDNN2kughf6Lg0Ys29rAvtZ7VO1PK5c1O+zs7yFnylQDUA==} + /@react-native-community/cli-debugger-ui/8.0.0: + resolution: {integrity: sha512-u2jq06GZwZ9sRERzd9FIgpW6yv4YOW4zz7Ym/B8eSzviLmy3yI/8mxJtvlGW+J8lBsfMcQoqJpqI6Rl1nZy9yQ==} dependencies: serve-static: 1.15.0 transitivePeerDependencies: - supports-color - /@react-native-community/cli-doctor/9.1.2: - resolution: {integrity: sha512-BmacbikyaxR4s54kq17LE0bBK7g8bcjc679ee36DqkX+Xij2VHHynLzTpuDJ8y6iHI2v13vauEMjnh4j612u5w==} + /@react-native-community/cli-doctor/8.0.6: + resolution: {integrity: sha512-ZQqyT9mJMVeFEVIwj8rbDYGCA2xXjJfsQjWk2iTRZ1CFHfhPSUuUiG8r6mJmTinAP9t+wYcbbIYzNgdSUKnDMw==} dependencies: - '@react-native-community/cli-config': 9.1.0 - '@react-native-community/cli-platform-ios': 9.1.2 - '@react-native-community/cli-tools': 9.1.0 + '@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 envinfo: 7.8.1 @@ -2053,53 +2065,58 @@ packages: transitivePeerDependencies: - encoding - /@react-native-community/cli-hermes/9.1.0: - resolution: {integrity: sha512-Ly4dnlRZZ7FckFfSWnaD5BxszuEe9/WcJ6A7srW5UobqnnmEznDv1IY0oBTq1ggnmzIquM9dJQZ0UbcZeQjkoA==} + /@react-native-community/cli-hermes/8.0.5: + resolution: {integrity: sha512-Zm0wM6SfgYAEX1kfJ1QBvTayabvh79GzmjHyuSnEROVNPbl4PeCG4WFbwy489tGwOP9Qx9fMT5tRIFCD8bp6/g==} dependencies: - '@react-native-community/cli-platform-android': 9.1.0 - '@react-native-community/cli-tools': 9.1.0 + '@react-native-community/cli-platform-android': 8.0.5 + '@react-native-community/cli-tools': 8.0.4 chalk: 4.1.2 hermes-profile-transformer: 0.0.6 ip: 1.1.8 transitivePeerDependencies: - encoding - /@react-native-community/cli-platform-android/9.1.0: - resolution: {integrity: sha512-OZ/Krq0wH6T7LuAvwFdJYe47RrHG8IOcoab47H4QQdYGTmJgTS3SlVkr6gn79pZyBGyp7xVizD30QJrIIyDjnw==} + /@react-native-community/cli-platform-android/8.0.5: + resolution: {integrity: sha512-z1YNE4T1lG5o9acoQR1GBvf7mq6Tzayqo/za5sHVSOJAC9SZOuVN/gg/nkBa9a8n5U7qOMFXfwhTMNqA474gXA==} dependencies: - '@react-native-community/cli-tools': 9.1.0 + '@react-native-community/cli-tools': 8.0.4 chalk: 4.1.2 execa: 1.0.0 fs-extra: 8.1.0 glob: 7.2.3 + jetifier: 1.6.8 + lodash: 4.17.21 logkitty: 0.7.1 slash: 3.0.0 transitivePeerDependencies: - encoding - /@react-native-community/cli-platform-ios/9.1.2: - resolution: {integrity: sha512-XpgA9ymm76yjvtYPByqFF1LP7eM/lH5K3zpkZkV9MJLStOIo3mrzN2ywRDZ/xVOheh5LafS4YMmrjIajf11oIQ==} + /@react-native-community/cli-platform-ios/8.0.6: + resolution: {integrity: sha512-CMR6mu/LVx6JVfQRDL9uULsMirJT633bODn+IrYmrwSz250pnhON16We8eLPzxOZHyDjm7JPuSgHG3a/BPiRuQ==} dependencies: - '@react-native-community/cli-tools': 9.1.0 + '@react-native-community/cli-tools': 8.0.4 chalk: 4.1.2 execa: 1.0.0 glob: 7.2.3 + js-yaml: 3.14.1 + lodash: 4.17.21 ora: 5.4.1 + plist: 3.0.6 transitivePeerDependencies: - encoding - /@react-native-community/cli-plugin-metro/9.1.3: - resolution: {integrity: sha512-eLZiGIMybNwkbfKRd8wfNP1u5pnsGYLD3YHlNQyRlfS7AMG7NCQN8bk2uWWJJmWAv632KFLConwJGcLhk6ZNMQ==} + /@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': 9.1.0 - '@react-native-community/cli-tools': 9.1.0 + '@react-native-community/cli-server-api': 8.0.4 + '@react-native-community/cli-tools': 8.0.4 chalk: 4.1.2 - metro: 0.72.3 - metro-config: 0.72.3 - metro-core: 0.72.3 - metro-react-native-babel-transformer: 0.72.3 - metro-resolver: 0.72.3 - metro-runtime: 0.72.3 + metro: 0.70.3 + metro-config: 0.70.3 + metro-core: 0.70.3 + metro-react-native-babel-transformer: 0.70.3 + metro-resolver: 0.70.3 + metro-runtime: 0.70.3 readline: 1.3.0 transitivePeerDependencies: - bufferutil @@ -2107,11 +2124,11 @@ packages: - supports-color - utf-8-validate - /@react-native-community/cli-server-api/9.1.0: - resolution: {integrity: sha512-Xf3hUqUc99hVmWOsmfNqUQ+sxhut9MIHlINzlo7Azxlmg9v9U/vtwJVJSIPD6iwPzvaPH1qeshzwy/r0GUR7fg==} + /@react-native-community/cli-server-api/8.0.4: + resolution: {integrity: sha512-Orr14njx1E70CVrUA8bFdl+mrnbuXUjf1Rhhm0RxUadFpvkHuOi5dh8Bryj2MKtf8eZrpEwZ7tuQPhJEULW16A==} dependencies: - '@react-native-community/cli-debugger-ui': 9.0.0 - '@react-native-community/cli-tools': 9.1.0 + '@react-native-community/cli-debugger-ui': 8.0.0 + '@react-native-community/cli-tools': 8.0.4 compression: 1.7.4 connect: 3.7.0 errorhandler: 1.5.1 @@ -2125,12 +2142,13 @@ packages: - supports-color - utf-8-validate - /@react-native-community/cli-tools/9.1.0: - resolution: {integrity: sha512-07Z1hyy4cYty84P9cGq+Xf8Vb0S/0ffxLVdVQEMmLjU71sC9YTUv1anJdZyt6f9uUPvA9+e/YIXw5Bu0rvuXIw==} + /@react-native-community/cli-tools/8.0.4: + resolution: {integrity: sha512-ePN9lGxh6LRFiotyddEkSmuqpQhnq2iw9oiXYr4EFWpIEy0yCigTuSTiDF68+c8M9B+7bTwkRpz/rMPC4ViO5Q==} dependencies: appdirsjs: 1.2.7 chalk: 4.1.2 find-up: 5.0.0 + lodash: 4.17.21 mime: 2.6.0 node-fetch: 2.6.7 open: 6.4.0 @@ -2140,32 +2158,38 @@ packages: transitivePeerDependencies: - encoding - /@react-native-community/cli-types/9.1.0: - resolution: {integrity: sha512-KDybF9XHvafLEILsbiKwz5Iobd+gxRaPyn4zSaAerBxedug4er5VUWa8Szy+2GeYKZzMh/gsb1o9lCToUwdT/g==} + /@react-native-community/cli-types/8.0.0: + resolution: {integrity: sha512-1lZS1PEvMlFaN3Se1ksyoFWzMjk+YfKi490GgsqKJln9gvFm8tqVPdnXttI5Uf2DQf3BMse8Bk8dNH4oV6Ewow==} dependencies: joi: 17.6.2 - /@react-native-community/cli/9.1.3: - resolution: {integrity: sha512-dfiBxNvqSwxkMduH0eAEJNS+LBbwxm1rOlTO7bN+FZvUwZNCCgIYrixfRo+ifqDUv8N5AbpQB5umnLbs0AjPaA==} - engines: {node: '>=14'} + /@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': 9.1.0 - '@react-native-community/cli-config': 9.1.0 - '@react-native-community/cli-debugger-ui': 9.0.0 - '@react-native-community/cli-doctor': 9.1.2 - '@react-native-community/cli-hermes': 9.1.0 - '@react-native-community/cli-plugin-metro': 9.1.3 - '@react-native-community/cli-server-api': 9.1.0 - '@react-native-community/cli-tools': 9.1.0 - '@react-native-community/cli-types': 9.1.0 + '@react-native-community/cli-clean': 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.6 + '@react-native-community/cli-hermes': 8.0.5 + '@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 chalk: 4.1.2 - commander: 9.4.1 + commander: 2.20.3 execa: 1.0.0 find-up: 4.1.0 fs-extra: 8.1.0 graceful-fs: 4.2.10 + leven: 3.1.0 + lodash: 4.17.21 + minimist: 1.2.6 prompts: 2.4.2 + react-native: 0.69.4_react@18.0.0 semver: 6.3.0 transitivePeerDependencies: - bufferutil @@ -2173,14 +2197,14 @@ packages: - supports-color - utf-8-validate - /@react-native-masked-view/masked-view/0.2.8_6zkxg335dae66szwidefhu4unm: - resolution: {integrity: sha512-+1holBPDF1yi/y0uc1WB6lA5tSNHhM7PpTMapT3ypvSnKQ9+C6sy/zfjxNxRA/llBQ1Ci6f94EaK56UCKs5lTA==} + /@react-native-masked-view/masked-view/0.2.7_jk6ntyzimkrv4hwdmdgaaf5yaa: + resolution: {integrity: sha512-ME+egr2l25rkcIJjFoXQUWWlfkJMY2KHdhf/df2ZXbVdVx5HIeTPpJpjKTZOPttLFtmrtHpzsqK1/dmu8F755g==} peerDependencies: react: '>=16' react-native: '>=0.57' dependencies: - react: 18.2.0 - react-native: 0.70.2_react@18.2.0 + react: 18.0.0 + react-native: 0.69.4_react@18.0.0 dev: false /@react-native/assets/1.0.0: @@ -2192,7 +2216,7 @@ packages: /@react-native/polyfills/2.0.0: resolution: {integrity: sha512-K0aGNn1TjalKj+65D7ycc1//H9roAQ51GJVk5ZJQFb2teECGmzd86bYDC0aYdbRf7gtovescq4Zt6FR0tgXiHQ==} - /@react-navigation/bottom-tabs/6.4.0_4p5d5kkwpeivrtldcfe4x42eze: + /@react-navigation/bottom-tabs/6.4.0_6hd4c6zmgrilyj4zgihr4fzdu4: resolution: {integrity: sha512-90CapiXjiWudbCiki9e6fOr/CECQRguIxv5OD7IBfbAMGX5GGiJpX8aqiHAz2DxpAz31v4JZcUr945+lFhXBfA==} peerDependencies: '@react-navigation/native': ^6.0.0 @@ -2201,17 +2225,17 @@ packages: react-native-safe-area-context: '>= 3.0.0' react-native-screens: '>= 3.0.0' dependencies: - '@react-navigation/elements': 1.3.6_p2n2lmrpb76slc4uqk6cadzk5e - '@react-navigation/native': 6.0.13_6zkxg335dae66szwidefhu4unm + '@react-navigation/elements': 1.3.6_6f27umqsgv4rbuymln6ce53awe + '@react-navigation/native': 6.0.13_jk6ntyzimkrv4hwdmdgaaf5yaa color: 4.2.3 - react: 18.2.0 - react-native: 0.70.2_react@18.2.0 - react-native-safe-area-context: 4.4.1_6zkxg335dae66szwidefhu4unm - react-native-screens: 3.18.0_6zkxg335dae66szwidefhu4unm + react: 18.0.0 + 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.4.0_react@18.2.0: + /@react-navigation/core/6.4.0_react@18.0.0: resolution: {integrity: sha512-tpc0Ak/DiHfU3LlYaRmIY7vI4sM/Ru0xCet6runLUh9aABf4wiLgxyFJ5BtoWq6xFF8ymYEA/KWtDhetQ24YiA==} peerDependencies: react: '*' @@ -2220,12 +2244,12 @@ packages: escape-string-regexp: 4.0.0 nanoid: 3.3.4 query-string: 7.1.1 - react: 18.2.0 + react: 18.0.0 react-is: 16.13.1 use-latest-callback: 0.1.5 dev: false - /@react-navigation/drawer/6.5.0_uzroadbe3zhgx7l6w6dyv735ai: + /@react-navigation/drawer/6.5.0_jtm7wd7ntucmrdxtzwrxvojwfq: resolution: {integrity: sha512-ma3qPjAfbwF07xd1w1gaWdcvYWmT4F+Z098q2J7XGbHw8yTGQYiNTnD1NMKerXwxM24vui2tMuFHA54F1rIvHQ==} peerDependencies: '@react-navigation/native': ^6.0.0 @@ -2236,19 +2260,19 @@ packages: react-native-safe-area-context: '>= 3.0.0' react-native-screens: '>= 3.0.0' dependencies: - '@react-navigation/elements': 1.3.6_p2n2lmrpb76slc4uqk6cadzk5e - '@react-navigation/native': 6.0.13_6zkxg335dae66szwidefhu4unm + '@react-navigation/elements': 1.3.6_6f27umqsgv4rbuymln6ce53awe + '@react-navigation/native': 6.0.13_jk6ntyzimkrv4hwdmdgaaf5yaa color: 4.2.3 - react: 18.2.0 - react-native: 0.70.2_react@18.2.0 - react-native-gesture-handler: 2.7.0_6zkxg335dae66szwidefhu4unm - react-native-reanimated: 2.10.0_4doumwegtq755c4phl66gqlczu - react-native-safe-area-context: 4.4.1_6zkxg335dae66szwidefhu4unm - react-native-screens: 3.18.0_6zkxg335dae66szwidefhu4unm + react: 18.0.0 + react-native: 0.69.4_react@18.0.0 + react-native-gesture-handler: 2.5.0_jk6ntyzimkrv4hwdmdgaaf5yaa + 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.6_p2n2lmrpb76slc4uqk6cadzk5e: + /@react-navigation/elements/1.3.6_6f27umqsgv4rbuymln6ce53awe: resolution: {integrity: sha512-pNJ8R9JMga6SXOw6wGVN0tjmE6vegwPmJBL45SEMX2fqTfAk2ykDnlJHodRpHpAgsv0DaI8qX76z3A+aqKSU0w==} peerDependencies: '@react-navigation/native': ^6.0.0 @@ -2256,24 +2280,24 @@ packages: react-native: '*' react-native-safe-area-context: '>= 3.0.0' dependencies: - '@react-navigation/native': 6.0.13_6zkxg335dae66szwidefhu4unm - react: 18.2.0 - react-native: 0.70.2_react@18.2.0 - react-native-safe-area-context: 4.4.1_6zkxg335dae66szwidefhu4unm + '@react-navigation/native': 6.0.13_jk6ntyzimkrv4hwdmdgaaf5yaa + react: 18.0.0 + 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.13_6zkxg335dae66szwidefhu4unm: + /@react-navigation/native/6.0.13_jk6ntyzimkrv4hwdmdgaaf5yaa: resolution: {integrity: sha512-CwaJcAGbhv3p3ECablxBkw8QBCGDWXqVRwQ4QbelajNW623m3sNTC9dOF6kjp8au6Rg9B5e0KmeuY0xWbPk79A==} peerDependencies: react: '*' react-native: '*' dependencies: - '@react-navigation/core': 6.4.0_react@18.2.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.2.0 - react-native: 0.70.2_react@18.2.0 + react: 18.0.0 + react-native: 0.69.4_react@18.0.0 dev: false /@react-navigation/routers/6.1.3: @@ -2282,7 +2306,7 @@ packages: nanoid: 3.3.4 dev: false - /@react-navigation/stack/6.3.2_lntn3nnre3nbfgyyo3i5ztk2m4: + /@react-navigation/stack/6.3.2_ntymb6no7bst2puhvwy2ruexmm: resolution: {integrity: sha512-wb8koMp4OTrG5geOqEFPDatTyl8dsSyRBHN4h0wzgNT29V/JjkS3LYwkGLLfUmMfeLXFyIfEPILAjYLFmnk3dA==} peerDependencies: '@react-navigation/native': ^6.0.0 @@ -2292,14 +2316,14 @@ packages: react-native-safe-area-context: '>= 3.0.0' react-native-screens: '>= 3.0.0' dependencies: - '@react-navigation/elements': 1.3.6_p2n2lmrpb76slc4uqk6cadzk5e - '@react-navigation/native': 6.0.13_6zkxg335dae66szwidefhu4unm + '@react-navigation/elements': 1.3.6_6f27umqsgv4rbuymln6ce53awe + '@react-navigation/native': 6.0.13_jk6ntyzimkrv4hwdmdgaaf5yaa color: 4.2.3 - react: 18.2.0 - react-native: 0.70.2_react@18.2.0 - react-native-gesture-handler: 2.7.0_6zkxg335dae66szwidefhu4unm - react-native-safe-area-context: 4.4.1_6zkxg335dae66szwidefhu4unm - react-native-screens: 3.18.0_6zkxg335dae66szwidefhu4unm + react: 18.0.0 + 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 @@ -2324,7 +2348,7 @@ packages: chalk: 4.1.2 dev: true - /@rnx-kit/metro-config/1.3.1_4doumwegtq755c4phl66gqlczu: + /@rnx-kit/metro-config/1.3.1_ifayjdo6vuwky63y7hdw4ayxzu: resolution: {integrity: sha512-HB4zApKYmaduyxgDVKpmjk5yuwFhSTUB2yrhCWsV98N27UK7v8Z3eI2gESKYkozuNXPUfcJKORdwjqwfiefNPg==} peerDependencies: metro-config: '>=0.58.0' @@ -2335,8 +2359,8 @@ packages: '@rnx-kit/console': 1.0.11 '@rnx-kit/tools-node': 1.3.0 '@rnx-kit/tools-workspaces': 0.1.1 - react: 18.2.0 - react-native: 0.70.2_react@18.2.0 + react: 18.0.0 + react-native: 0.69.4_react@18.0.0 transitivePeerDependencies: - '@babel/core' - '@babel/plugin-transform-typescript' @@ -2384,15 +2408,15 @@ packages: resolution: {integrity: sha512-MfgSZkrqVzzqCN4GU3LKhfy4qG+PS1LpEz/MMays6rtz5EFNJIvEVMA5Ooc+DH8KLe5h4/3bf4dfyEs7czhA2w==} dev: false - /@rspc/react/0.1.2_ccuuwrkoo5lqohzgsfxrnkoque: + /@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.1.2 - '@tanstack/react-query': 4.10.1_6zkxg335dae66szwidefhu4unm - react: 18.2.0 + '@tanstack/react-query': 4.10.1_jk6ntyzimkrv4hwdmdgaaf5yaa + react: 18.0.0 dev: false /@segment/loosely-validate-event/2.0.0: @@ -2554,7 +2578,7 @@ packages: resolution: {integrity: sha512-UZRYzjgQSfYhQ+cJX0CspAbzutf8p93gR1xFjQuH3OYcb/7t3WnHkdb/qC9mbqrfWXN/JAbBTJlTU/XQHc5HbA==} dev: false - /@tanstack/react-query/4.10.1_6zkxg335dae66szwidefhu4unm: + /@tanstack/react-query/4.10.1_jk6ntyzimkrv4hwdmdgaaf5yaa: resolution: {integrity: sha512-6GaLYAsAu/4aX6HR4krpOej9qbKWXe0X0eccikpv5hAw4CoAAPG29Pydql1nTl9cYF2zd21unVm4yApklFY0AA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -2567,9 +2591,9 @@ packages: optional: true dependencies: '@tanstack/query-core': 4.10.1 - react: 18.2.0 - react-native: 0.70.2_react@18.2.0 - use-sync-external-store: 1.2.0_react@18.2.0 + react: 18.0.0 + react-native: 0.69.4_react@18.0.0 + use-sync-external-store: 1.2.0_react@18.0.0 dev: false /@trysound/sax/0.2.0: @@ -2577,6 +2601,11 @@ packages: engines: {node: '>=10.13.0'} dev: true + /@types/graceful-fs/4.1.5: + resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} + dependencies: + '@types/node': 18.8.2 + /@types/hammerjs/2.0.41: resolution: {integrity: sha512-ewXv/ceBaJprikMcxCmWU1FKyMAQ2X7a9Gtmzw8fcg2kIePI1crERDM818W+XYrxqdBBOdlf2rm137bU+BltCA==} dev: false @@ -2617,8 +2646,8 @@ packages: resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==} dev: false - /@types/react-native/0.70.4: - resolution: {integrity: sha512-z5tKfblHLG6jts2AQcioDw4N+F2EzflO9n495yNyqyMYRkSIVTLX64MHBeqMp5wfOY5mshy0GsOgnFSXrXKQSg==} + /@types/react-native/0.69.13: + resolution: {integrity: sha512-jEKIkqKjmYI7NeRssLrn/zRtFeI6S1FNe5p45OKbBxrQArXpF2lJelztFTEZKIv1PSfYKcAk5x6+1sdZFEFAkA==} dependencies: '@types/react': 18.0.21 dev: true @@ -3511,11 +3540,6 @@ packages: engines: {node: '>=0.8'} dev: false - /clsx/1.2.1: - resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} - engines: {node: '>=6'} - dev: false - /collection-visit/1.0.0: resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==} engines: {node: '>=0.10.0'} @@ -3573,7 +3597,6 @@ packages: /commander/2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - dev: true /commander/4.1.1: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} @@ -3589,10 +3612,6 @@ packages: resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} engines: {node: '>= 10'} - /commander/9.4.1: - resolution: {integrity: sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==} - engines: {node: ^12.20.0 || >=14} - /commondir/1.0.1: resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} @@ -3775,6 +3794,11 @@ packages: resolution: {integrity: sha512-+LSAiGFwQ9dRnRdOeaj7g47ZFJcOUPukAP8J3A3fuZ1g9Y44BG+P1sgApjLXTQPOzC4+7S9Wr8kXsfpINM4jpw==} dev: false + /date-fns/2.29.3: + resolution: {integrity: sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==} + engines: {node: '>=0.11'} + dev: false + /dayjs/1.11.5: resolution: {integrity: sha512-CAdX5Q3YW3Gclyo5Vpqkgpj8fSdLQcRuzfX6mC6Phy0nfJ0eGYOeS7m4mt2plDWLAtA4TqTakvbboHvUxfe4iA==} @@ -4719,7 +4743,7 @@ packages: dependencies: map-cache: 0.2.2 - /framer-motion/6.5.1_react@18.2.0: + /framer-motion/6.5.1_react@18.0.0: resolution: {integrity: sha512-o1BGqqposwi7cgDrtg0dNONhkmPsUFDaLcKXigzuTFC5x58mE8iyTazxSudFzmT6MEyJKfjjU8ItoMe3W+3fiw==} peerDependencies: react: '>=16.8 || ^17.0.0 || ^18.0.0' @@ -4729,7 +4753,7 @@ packages: framesync: 6.0.1 hey-listen: 1.0.8 popmotion: 11.0.3 - react: 18.2.0 + react: 18.0.0 style-value-types: 5.0.0 tslib: 2.4.0 optionalDependencies: @@ -5012,13 +5036,16 @@ packages: dependencies: function-bind: 1.1.1 - /hermes-estree/0.8.0: - resolution: {integrity: sha512-W6JDAOLZ5pMPMjEiQGLCXSSV7pIBEgRR5zGkxgmzGSXHOxqV5dC/M1Zevqpbm9TZDE5tu358qZf8Vkzmsc+u7Q==} + /hermes-engine/0.11.0: + resolution: {integrity: sha512-7aMUlZja2IyLYAcZ69NBnwJAR5ZOYlSllj0oMpx08a8HzxHOys0eKCzfphrf6D0vX1JGO1QQvVsQKe6TkYherw==} - /hermes-parser/0.8.0: - resolution: {integrity: sha512-yZKalg1fTYG5eOiToLUaw69rQfZq/fi+/NtEXRU7N87K/XobNRhRWorh80oSge2lWUiZfTgUvRJH+XgZWrhoqA==} + /hermes-estree/0.6.0: + resolution: {integrity: sha512-2YTGzJCkhdmT6VuNprWjXnvTvw/3iPNw804oc7yknvQpNKo+vJGZmtvLLCghOZf0OwzKaNAzeIMp71zQbNl09w==} + + /hermes-parser/0.6.0: + resolution: {integrity: sha512-Vf58jBZca2+QBLR9h7B7mdg8oFz2g5ILz1iVouZ5DOrOrAfBmPfJjdjDT8jrO0f+iJ4/hSRrQHqHIjSnTaLUDQ==} dependencies: - hermes-estree: 0.8.0 + hermes-estree: 0.6.0 /hermes-profile-transformer/0.0.6: resolution: {integrity: sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ==} @@ -5457,6 +5484,25 @@ packages: resolution: {integrity: sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==} engines: {node: '>= 10.14.2'} + /jest-haste-map/27.5.1: + resolution: {integrity: sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/types': 27.5.1 + '@types/graceful-fs': 4.1.5 + '@types/node': 18.8.2 + anymatch: 3.1.2 + fb-watchman: 2.0.2 + graceful-fs: 4.2.10 + jest-regex-util: 27.5.1 + jest-serializer: 27.5.1 + jest-util: 27.5.1 + jest-worker: 27.5.1 + micromatch: 4.0.5 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.2 + /jest-regex-util/27.5.1: resolution: {integrity: sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -5498,6 +5544,10 @@ packages: merge-stream: 2.0.0 supports-color: 8.1.1 + /jetifier/1.6.8: + resolution: {integrity: sha512-3Zi16h6L5tXDRQJTb221cnRoVG9/9OvreLdLU2/ZjRv/GILL+2Cemt0IKvkowwkDpvouAU1DQPOJ7qaiHeIdrw==} + hasBin: true + /jimp-compact/0.16.1: resolution: {integrity: sha512-dZ6Ra7u1G8c4Letq/B5EzAxj4tLFHL+cGtdpR+PVm4yzPDj+lCk+AbivWt1eOM+ikzkowtyV7qSqX6qr3t71Ww==} dev: false @@ -5730,7 +5780,6 @@ packages: /lodash/4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - dev: false /log-symbols/2.2.0: resolution: {integrity: sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==} @@ -5760,7 +5809,7 @@ packages: dependencies: js-tokens: 4.0.0 - /lottie-react-native/5.1.4_6zkxg335dae66szwidefhu4unm: + /lottie-react-native/5.1.4_jk6ntyzimkrv4hwdmdgaaf5yaa: resolution: {integrity: sha512-Lu6mSG92Wck+vXEX6gfj/9ciqqoz0tJQZqgX0SumGvX/oZu4MbKO/oLApyHdy2V9Rb7qvwF9whOtitADxTswPA==} peerDependencies: lottie-ios: ^3.4.0 @@ -5772,9 +5821,9 @@ packages: optional: true dependencies: invariant: 2.2.4 - react: 18.2.0 - react-native: 0.70.2_react@18.2.0 - react-native-safe-modules: 1.0.3_react-native@0.70.2 + react: 18.0.0 + react-native: 0.69.4_react@18.0.0 + react-native-safe-modules: 1.0.3_react-native@0.69.4 dev: false /lru-cache/6.0.0: @@ -5862,71 +5911,52 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - /metro-babel-transformer/0.72.3: - resolution: {integrity: sha512-PTOR2zww0vJbWeeM3qN90WKENxCLzv9xrwWaNtwVlhcV8/diNdNe82sE1xIxLFI6OQuAVwNMv1Y7VsO2I7Ejrw==} + /metro-babel-transformer/0.70.3: + resolution: {integrity: sha512-bWhZRMn+mIOR/s3BDpFevWScz9sV8FGktVfMlF1eJBLoX24itHDbXvTktKBYi38PWIKcHedh6THSFpJogfuwNA==} dependencies: '@babel/core': 7.19.3 - hermes-parser: 0.8.0 - metro-source-map: 0.72.3 + hermes-parser: 0.6.0 + metro-source-map: 0.70.3 nullthrows: 1.1.1 transitivePeerDependencies: - supports-color - /metro-cache-key/0.72.3: - resolution: {integrity: sha512-kQzmF5s3qMlzqkQcDwDxrOaVxJ2Bh6WRXWdzPnnhsq9LcD3B3cYqQbRBS+3tSuXmathb4gsOdhWslOuIsYS8Rg==} + /metro-cache-key/0.70.3: + resolution: {integrity: sha512-0zpw+IcpM3hmGd5sKMdxNv3sbOIUYnMUvx1/yaM6vNRReSPmOLX0bP8fYf3CGgk8NEreZ1OHbVsuw7bdKt40Mw==} - /metro-cache/0.72.3: - resolution: {integrity: sha512-++eyZzwkXvijWRV3CkDbueaXXGlVzH9GA52QWqTgAOgSHYp5jWaDwLQ8qpsMkQzpwSyIF4LLK9aI3eA7Xa132A==} + /metro-cache/0.70.3: + resolution: {integrity: sha512-iCix/+z812fUqa6KlOxaTkY6LQQDoXIe/VljXkGIvpygSCmYyhjQpfQVZEVVPezFmUBYXNdabdQ6cYx6JX3yMg==} dependencies: - metro-core: 0.72.3 + metro-core: 0.70.3 rimraf: 2.7.1 - /metro-config/0.72.3: - resolution: {integrity: sha512-VEsAIVDkrIhgCByq8HKTWMBjJG6RlYwWSu1Gnv3PpHa0IyTjKJtB7wC02rbTjSaemcr82scldf2R+h6ygMEvsw==} + /metro-config/0.70.3: + resolution: {integrity: sha512-SSCDjSTygoCgzoj61DdrBeJzZDRwQxUEfcgc6t6coxWSExXNR4mOngz0q4SAam49Bmjq9J2Jft6qUKnUTPrRgA==} dependencies: cosmiconfig: 5.2.1 jest-validate: 26.6.2 - metro: 0.72.3 - metro-cache: 0.72.3 - metro-core: 0.72.3 - metro-runtime: 0.72.3 + metro: 0.70.3 + metro-cache: 0.70.3 + metro-core: 0.70.3 + metro-runtime: 0.70.3 transitivePeerDependencies: - bufferutil - encoding - supports-color - utf-8-validate - /metro-core/0.72.3: - resolution: {integrity: sha512-KuYWBMmLB4+LxSMcZ1dmWabVExNCjZe3KysgoECAIV+wyIc2r4xANq15GhS94xYvX1+RqZrxU1pa0jQ5OK+/6A==} + /metro-core/0.70.3: + resolution: {integrity: sha512-NzfHB/w5R7yLaOeU1tzPTbBzCRsYSvpKJkLMP0yudszKZzIAZqNdjoEJ9GZ688Wi0ynZxcU0BxukXh4my80ZBw==} dependencies: + jest-haste-map: 27.5.1 lodash.throttle: 4.1.1 - metro-resolver: 0.72.3 + metro-resolver: 0.70.3 - /metro-file-map/0.72.3: - resolution: {integrity: sha512-LhuRnuZ2i2uxkpFsz1XCDIQSixxBkBG7oICAFyLyEMDGbcfeY6/NexphfLdJLTghkaoJR5ARFMiIxUg9fIY/pA==} - dependencies: - abort-controller: 3.0.0 - anymatch: 3.1.2 - debug: 2.6.9 - fb-watchman: 2.0.2 - graceful-fs: 4.2.10 - invariant: 2.2.4 - jest-regex-util: 27.5.1 - jest-serializer: 27.5.1 - jest-util: 27.5.1 - jest-worker: 27.5.1 - micromatch: 4.0.5 - walker: 1.0.8 - optionalDependencies: - fsevents: 2.3.2 - transitivePeerDependencies: - - supports-color + /metro-hermes-compiler/0.70.3: + resolution: {integrity: sha512-W6WttLi4E72JL/NyteQ84uxYOFMibe0PUr9aBKuJxxfCq6QRnJKOVcNY0NLW0He2tneXGk+8ZsNz8c0flEvYqg==} - /metro-hermes-compiler/0.72.3: - resolution: {integrity: sha512-QWDQASMiXNW3j8uIQbzIzCdGYv5PpAX/ZiF4/lTWqKRWuhlkP4auhVY4eqdAKj5syPx45ggpjkVE0p8hAPDZYg==} - - /metro-inspector-proxy/0.72.3: - resolution: {integrity: sha512-UPFkaq2k93RaOi+eqqt7UUmqy2ywCkuxJLasQ55+xavTUS+TQSyeTnTczaYn+YKw+izLTLllGcvqnQcZiWYhGw==} + /metro-inspector-proxy/0.70.3: + resolution: {integrity: sha512-qQoNdPGrmyoJSWYkxSDpTaAI8xyqVdNDVVj9KRm1PG8niSuYmrCCFGLLFsMvkVYwsCWUGHoGBx0UoAzVp14ejw==} hasBin: true dependencies: connect: 3.7.0 @@ -5938,14 +5968,14 @@ packages: - supports-color - utf-8-validate - /metro-minify-terser/0.73.0: - resolution: {integrity: sha512-gDLAxK1adJAs/bFZMtYv5GQHs2i2+QymfS7d9dm5PVYGHp4m3QyqHHhCELfPE0iztpqcRWycv+0ce1/RqlVv5Q==} + /metro-minify-terser/0.72.3: + resolution: {integrity: sha512-FiATtv/NBT6LBSoz2zlQri+KFyI4Z0xV+D17YCntufRWxYjs193HaKrZB/f/Bevq5QtSfIZzS9glWurTgKr/Xg==} dependencies: terser: 5.15.1 dev: true - /metro-minify-uglify/0.72.3: - resolution: {integrity: sha512-dPXqtMI8TQcj0g7ZrdhC8X3mx3m3rtjtMuHKGIiEXH9CMBvrET8IwrgujQw2rkPcXiSiX8vFDbGMIlfxefDsKA==} + /metro-minify-uglify/0.70.3: + resolution: {integrity: sha512-oHyjV9WDqOlDE1FPtvs6tIjjeY/oP1PNUPYL1wqyYtqvjN+zzAOrcbsAAL1sv+WARaeiMsWkF2bwtNo+Hghoog==} dependencies: uglify-es: 3.3.9 @@ -5993,98 +6023,51 @@ packages: react-refresh: 0.4.3 transitivePeerDependencies: - supports-color - dev: false - /metro-react-native-babel-preset/0.72.3: - resolution: {integrity: sha512-uJx9y/1NIqoYTp6ZW1osJ7U5ZrXGAJbOQ/Qzl05BdGYvN1S7Qmbzid6xOirgK0EIT0pJKEEh1s8qbassYZe4cw==} - dependencies: - '@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.72.3: - resolution: {integrity: sha512-Ogst/M6ujYrl/+9mpEWqE3zF7l2mTuftDTy3L8wZYwX1pWUQWQpfU1aJBeWiLxt1XlIq+uriRjKzKoRoIK57EA==} + /metro-react-native-babel-transformer/0.70.3: + resolution: {integrity: sha512-WKBU6S/G50j9cfmFM4k4oRYprd8u3qjleD4so1E2zbTNILg+gYla7ZFGCAvi2G0ZcqS2XuGCR375c2hF6VVvwg==} dependencies: '@babel/core': 7.19.3 babel-preset-fbjs: 3.4.0_@babel+core@7.19.3 - hermes-parser: 0.8.0 - metro-babel-transformer: 0.72.3 - metro-react-native-babel-preset: 0.72.3 - metro-source-map: 0.72.3 + hermes-parser: 0.6.0 + metro-babel-transformer: 0.70.3 + metro-react-native-babel-preset: 0.70.3 + metro-source-map: 0.70.3 nullthrows: 1.1.1 transitivePeerDependencies: - supports-color - /metro-resolver/0.72.3: - resolution: {integrity: sha512-wu9zSMGdxpKmfECE7FtCdpfC+vrWGTdVr57lDA0piKhZV6VN6acZIvqQ1yZKtS2WfKsngncv5VbB8Y5eHRQP3w==} + /metro-resolver/0.70.3: + resolution: {integrity: sha512-5Pc5S/Gs4RlLbziuIWtvtFd9GRoILlaRC8RZDVq5JZWcWHywKy/PjNmOBNhpyvtRlzpJfy/ssIfLhu8zINt1Mw==} dependencies: absolute-path: 0.0.0 - /metro-runtime/0.72.3: - resolution: {integrity: sha512-3MhvDKfxMg2u7dmTdpFOfdR71NgNNo4tzAyJumDVQKwnHYHN44f2QFZQqpPBEmqhWlojNeOxsqFsjYgeyMx6VA==} + /metro-runtime/0.70.3: + resolution: {integrity: sha512-22xU7UdXZacniTIDZgN2EYtmfau2pPyh97Dcs+cWrLcJYgfMKjWBtesnDcUAQy3PHekDYvBdJZkoQUeskYTM+w==} dependencies: '@babel/runtime': 7.19.0 - react-refresh: 0.4.3 - /metro-source-map/0.72.3: - resolution: {integrity: sha512-eNtpjbjxSheXu/jYCIDrbNEKzMGOvYW6/ePYpRM7gDdEagUOqKOCsi3St8NJIQJzZCsxD2JZ2pYOiomUSkT1yQ==} + /metro-source-map/0.70.3: + resolution: {integrity: sha512-zsYtZGrwRbbGEFHtmMqqeCH9K9aTGNVPsurMOWCUeQA3VGyVGXPGtLMC+CdAM9jLpUyg6jw2xh0esxi+tYH7Uw==} dependencies: '@babel/traverse': 7.19.3 '@babel/types': 7.19.3 invariant: 2.2.4 - metro-symbolicate: 0.72.3 + metro-symbolicate: 0.70.3 nullthrows: 1.1.1 - ob1: 0.72.3 + ob1: 0.70.3 source-map: 0.5.7 vlq: 1.0.1 transitivePeerDependencies: - supports-color - /metro-symbolicate/0.72.3: - resolution: {integrity: sha512-eXG0NX2PJzJ/jTG4q5yyYeN2dr1cUqUaY7worBB0SP5bRWRc3besfb+rXwfh49wTFiL5qR0oOawkU4ZiD4eHXw==} + /metro-symbolicate/0.70.3: + resolution: {integrity: sha512-JTYkF1dpeDUssQ84juE1ycnhHki2ylJBBdJE1JHtfu5oC+z1ElDbBdPHq90Uvt8HbRov/ZAnxvv7Zy6asS+WCA==} engines: {node: '>=8.3'} hasBin: true dependencies: invariant: 2.2.4 - metro-source-map: 0.72.3 + metro-source-map: 0.70.3 nullthrows: 1.1.1 source-map: 0.5.7 through2: 2.0.5 @@ -6092,8 +6075,8 @@ packages: transitivePeerDependencies: - supports-color - /metro-transform-plugins/0.72.3: - resolution: {integrity: sha512-D+TcUvCKZbRua1+qujE0wV1onZvslW6cVTs7dLCyC2pv20lNHjFr1GtW01jN2fyKR2PcRyMjDCppFd9VwDKnSg==} + /metro-transform-plugins/0.70.3: + resolution: {integrity: sha512-dQRIJoTkWZN2IVS2KzgS1hs7ZdHDX3fS3esfifPkqFAEwHiLctCf0EsPgIknp0AjMLvmGWfSLJigdRB/dc0ASw==} dependencies: '@babel/core': 7.19.3 '@babel/generator': 7.19.3 @@ -6103,21 +6086,21 @@ packages: transitivePeerDependencies: - supports-color - /metro-transform-worker/0.72.3: - resolution: {integrity: sha512-WsuWj9H7i6cHuJuy+BgbWht9DK5FOgJxHLGAyULD5FJdTG9rSMFaHDO5WfC0OwQU5h4w6cPT40iDuEGksM7+YQ==} + /metro-transform-worker/0.70.3: + resolution: {integrity: sha512-MtVVsnHhhBOp9GRLCdAb2mD1dTCsIzT4+m34KMRdBDCEbDIb90YafT5prpU8qbj5uKd0o2FOQdrJ5iy5zQilHw==} dependencies: '@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.72.3 - metro-babel-transformer: 0.72.3 - metro-cache: 0.72.3 - metro-cache-key: 0.72.3 - metro-hermes-compiler: 0.72.3 - metro-source-map: 0.72.3 - metro-transform-plugins: 0.72.3 + metro: 0.70.3 + metro-babel-transformer: 0.70.3 + metro-cache: 0.70.3 + metro-cache-key: 0.70.3 + metro-hermes-compiler: 0.70.3 + metro-source-map: 0.70.3 + metro-transform-plugins: 0.70.3 nullthrows: 1.1.1 transitivePeerDependencies: - bufferutil @@ -6125,8 +6108,8 @@ packages: - supports-color - utf-8-validate - /metro/0.72.3: - resolution: {integrity: sha512-Hb3xTvPqex8kJ1hutQNZhQadUKUwmns/Du9GikmWKBFrkiG3k3xstGAyO5t5rN9JSUEzQT6y9SWzSSOGogUKIg==} + /metro/0.70.3: + resolution: {integrity: sha512-uEWS7xg8oTetQDABYNtsyeUjdLhH3KAvLFpaFFoJqUpOk2A3iygszdqmjobFl6W4zrvKDJS+XxdMR1roYvUhTw==} hasBin: true dependencies: '@babel/code-frame': 7.18.6 @@ -6147,27 +6130,27 @@ packages: error-stack-parser: 2.1.4 fs-extra: 1.0.0 graceful-fs: 4.2.10 - hermes-parser: 0.8.0 + hermes-parser: 0.6.0 image-size: 0.6.3 invariant: 2.2.4 + jest-haste-map: 27.5.1 jest-worker: 27.5.1 lodash.throttle: 4.1.1 - metro-babel-transformer: 0.72.3 - metro-cache: 0.72.3 - metro-cache-key: 0.72.3 - metro-config: 0.72.3 - metro-core: 0.72.3 - metro-file-map: 0.72.3 - metro-hermes-compiler: 0.72.3 - metro-inspector-proxy: 0.72.3 - metro-minify-uglify: 0.72.3 - metro-react-native-babel-preset: 0.72.3 - metro-resolver: 0.72.3 - metro-runtime: 0.72.3 - metro-source-map: 0.72.3 - metro-symbolicate: 0.72.3 - metro-transform-plugins: 0.72.3 - metro-transform-worker: 0.72.3 + metro-babel-transformer: 0.70.3 + metro-cache: 0.70.3 + metro-cache-key: 0.70.3 + metro-config: 0.70.3 + metro-core: 0.70.3 + 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 + metro-resolver: 0.70.3 + metro-runtime: 0.70.3 + metro-source-map: 0.70.3 + metro-symbolicate: 0.70.3 + metro-transform-plugins: 0.70.3 + metro-transform-worker: 0.70.3 mime-types: 2.1.35 node-fetch: 2.6.7 nullthrows: 1.1.1 @@ -6304,13 +6287,11 @@ packages: hasBin: true dev: false - /moti/0.20.0_wlqc7i7ttqmckwruccztyvblxe: - resolution: {integrity: sha512-ZogZ+2a1Qx86akSu/0/rDPWf5IxF1PIW+O8GuxdAiy4TajxQRn/yLcTP7NfpHfWPSJtoaFm4AvdXwOBoykWkBw==} - peerDependencies: - react-native-reanimated: '*' + /moti/0.18.0_react@18.0.0: + resolution: {integrity: sha512-/OJYET+TkLA+LTCE6hYeCaHYDv4IIRVDLfFmA7WrcocfS0PSj99VwUb48HZ40GAwrr0atkGDBRizdj5q5sFn3Q==} dependencies: - framer-motion: 6.5.1_react@18.2.0 - react-native-reanimated: 2.10.0_4doumwegtq755c4phl66gqlczu + '@motify/components': 0.18.0_react@18.0.0 + '@motify/core': 0.18.0_react@18.0.0 transitivePeerDependencies: - react - react-dom @@ -6455,8 +6436,8 @@ packages: /nullthrows/1.1.1: resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} - /ob1/0.72.3: - resolution: {integrity: sha512-OnVto25Sj7Ghp0vVm2THsngdze3tVq0LOg9LUHsAVXMecpqOP0Y8zaATW8M9gEgs2lNEAcCqV0P/hlmOPhVRvg==} + /ob1/0.70.3: + resolution: {integrity: sha512-Vy9GGhuXgDRY01QA6kdhToPd8AkLdLpX9GjH5kpqluVqTu70mgOm7tpGoJDZGaNbr9nJlJgnipqHJQRPORixIQ==} /object-assign/4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} @@ -6767,7 +6748,7 @@ packages: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} - /phosphor-react-native/1.1.2_ljw63j2nddzn4oyfrbp4jo7qjy: + /phosphor-react-native/1.1.2_ipumakbosk2s7ylysjmrulvctq: resolution: {integrity: sha512-uWYDG4S70JP89jmXljCA0K6/0mjQDHH8GVHFwF+dmbdYkALIE84jMMSemkFtjdsazB1j+xDBJcGaKN3PdEC8uQ==} peerDependencies: react: '*' @@ -6775,9 +6756,9 @@ packages: react-native-svg: '*' dependencies: caniuse-lite: 1.0.30001416 - react: 18.2.0 - react-native: 0.70.2_react@18.2.0 - react-native-svg: 13.3.0_6zkxg335dae66szwidefhu4unm + react: 18.0.0 + react-native: 0.69.4_react@18.0.0 + react-native-svg: 13.0.0_jk6ntyzimkrv4hwdmdgaaf5yaa dev: false /picocolors/1.0.0: @@ -6825,7 +6806,6 @@ packages: dependencies: base64-js: 1.5.1 xmlbuilder: 15.1.1 - dev: false /pngjs/3.4.0: resolution: {integrity: sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==} @@ -7068,13 +7048,13 @@ packages: - bufferutil - utf-8-validate - /react-freeze/1.0.3_react@18.2.0: + /react-freeze/1.0.3_react@18.0.0: resolution: {integrity: sha512-ZnXwLQnGzrDpHBHiC56TXFXvmolPeMjTn1UOm610M4EXGzbEDR7oOIyS2ZiItgbs6eZc4oU/a0hpk8PrcKvv5g==} engines: {node: '>=10'} peerDependencies: react: '>=17.0.0' dependencies: - react: 18.2.0 + react: 18.0.0 dev: false /react-is/16.13.1: @@ -7086,16 +7066,8 @@ packages: /react-is/18.2.0: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} - /react-loading-skeleton/3.1.0_react@18.2.0: - resolution: {integrity: sha512-j1U1CWWs68nBPOg7tkQqnlFcAMFF6oEK6MgqAo15f8A5p7mjH6xyKn2gHbkcimpwfO0VQXqxAswnSYVr8lWzjw==} - peerDependencies: - react: '>=16.8.0' - dependencies: - react: 18.2.0 - dev: false - - /react-native-codegen/0.70.5: - resolution: {integrity: sha512-vXqgCWWIWlzsCtwD6hbmwmCleGNJYm+n4xO9VMfzzlF3xt9gjC7/USSMTf/YZlCK/hDwQU412QrNS6A9OH+mag==} + /react-native-codegen/0.69.2: + resolution: {integrity: sha512-yPcgMHD4mqLbckqnWjFBaxomDnBREfRjDi2G/WxNyPBQLD+PXUEmZTkDx6QoOXN+Bl2SkpnNOSsLE2+/RUHoPw==} dependencies: '@babel/parser': 7.19.3 flow-parser: 0.121.0 @@ -7105,8 +7077,8 @@ packages: - '@babel/preset-env' - supports-color - /react-native-gesture-handler/2.7.0_6zkxg335dae66szwidefhu4unm: - resolution: {integrity: sha512-0jr3FNm2R3gv/v6XTtENgjv0fewD6LEct8EWmXw/oHw36M3YiIIpxnW57thL+0YiKwyLBXN0QHL4JZbs/heW2Q==} + /react-native-gesture-handler/2.5.0_jk6ntyzimkrv4hwdmdgaaf5yaa: + resolution: {integrity: sha512-djZdcprFf08PZC332D+AeG5wcGeAPhzfCJtB3otUgOgTlvjVXmg/SLFdPJSpzLBqkRAmrC77tM79QgKbuLxkfw==} peerDependencies: react: '*' react-native: '*' @@ -7116,24 +7088,24 @@ packages: invariant: 2.2.4 lodash: 4.17.21 prop-types: 15.8.1 - react: 18.2.0 - react-native: 0.70.2_react@18.2.0 + react: 18.0.0 + react-native: 0.69.4_react@18.0.0 dev: false - /react-native-gradle-plugin/0.70.3: - resolution: {integrity: sha512-oOanj84fJEXUg9FoEAQomA8ISG+DVIrTZ3qF7m69VQUJyOGYyDZmPqKcjvRku4KXlEH6hWO9i4ACLzNBh8gC0A==} + /react-native-gradle-plugin/0.0.7: + resolution: {integrity: sha512-+4JpbIx42zGTONhBTIXSyfyHICHC29VTvhkkoUOJAh/XHPEixpuBduYgf6Y4y9wsN1ARlQhBBoptTvXvAFQf5g==} - /react-native-heroicons/3.2.0_dvg3rdocew64lmuysagcnd25pe: - resolution: {integrity: sha512-M5jlhReLBALrmeKIjH1qgF3OCNphfw8xKpRlHpX8OH4zgsC3L6+Lt+c4/hNxSbxUIN2+s8XC0eK/NZLku14IzA==} + /react-native-heroicons/2.2.0_wxlif5cfng7xfd3uerlw46xcs4: + resolution: {integrity: sha512-eOtuO6m8xgiq+q3RX47V9pc2OVrXo7a/DJmrHZBKs3GYFqrRidQqLgEYNRT4JwC+nDBHbflf3hpaBoPRXDFQzA==} peerDependencies: react: '>=16.8' react-native-svg: '>=9' dependencies: - react: 18.2.0 - react-native-svg: 13.3.0_6zkxg335dae66szwidefhu4unm + react: 18.0.0 + react-native-svg: 13.0.0_jk6ntyzimkrv4hwdmdgaaf5yaa dev: false - /react-native-reanimated/2.10.0_4doumwegtq755c4phl66gqlczu: + /react-native-reanimated/2.10.0_ifayjdo6vuwky63y7hdw4ayxzu: resolution: {integrity: sha512-jKm3xz5nX7ABtHzzuuLmawP0pFWP77lXNdIC6AWOceBs23OHUaJ29p4prxr/7Sb588GwTbkPsYkDqVFaE3ezNQ==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -7146,46 +7118,46 @@ packages: '@types/invariant': 2.2.35 invariant: 2.2.4 lodash.isequal: 4.5.0 - react: 18.2.0 - react-native: 0.70.2_react@18.2.0 + react: 18.0.0 + 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-safe-area-context/4.4.1_6zkxg335dae66szwidefhu4unm: - resolution: {integrity: sha512-N9XTjiuD73ZpVlejHrUWIFZc+6Z14co1K/p1IFMkImU7+avD69F3y+lhkqA2hN/+vljdZrBSiOwXPkuo43nFQA==} + /react-native-safe-area-context/4.3.1_jk6ntyzimkrv4hwdmdgaaf5yaa: + resolution: {integrity: sha512-cEr7fknJCToTrSyDCVNg0GRdRMhyLeQa2NZwVCuzEQcWedOw/59ExomjmzCE4rxrKXs6OJbyfNtFRNyewDaHuA==} peerDependencies: react: '*' react-native: '*' dependencies: - react: 18.2.0 - react-native: 0.70.2_react@18.2.0 + react: 18.0.0 + react-native: 0.69.4_react@18.0.0 dev: false - /react-native-safe-modules/1.0.3_react-native@0.70.2: + /react-native-safe-modules/1.0.3_react-native@0.69.4: resolution: {integrity: sha512-DUxti4Z+AgJ/ZsO5U7p3uSCUBko8JT8GvFlCeOXk9bMd+4qjpoDvMYpfbixXKgL88M+HwmU/KI1YFN6gsQZyBA==} peerDependencies: react-native: '*' dependencies: dedent: 0.6.0 - react-native: 0.70.2_react@18.2.0 + react-native: 0.69.4_react@18.0.0 dev: false - /react-native-screens/3.18.0_6zkxg335dae66szwidefhu4unm: - resolution: {integrity: sha512-ndnz5JPLMLq/ThCYQzAOT65x6B4bdKFH1GKckUdbxKrwINGItPRSUiAoVI7YYyOQOa4VYL4hF37rrx+AjgjtRg==} + /react-native-screens/3.15.0_jk6ntyzimkrv4hwdmdgaaf5yaa: + resolution: {integrity: sha512-ezC5TibsUYyqPuuHpZoM3iEl6bRzCVBMJeGaFkn7xznuOt1VwkZVub0BvafIEYR/+AQC/RjxzMSQPs1qal0+wA==} peerDependencies: react: '*' react-native: '*' dependencies: - react: 18.2.0 - react-freeze: 1.0.3_react@18.2.0 - react-native: 0.70.2_react@18.2.0 + react: 18.0.0 + react-freeze: 1.0.3_react@18.0.0 + react-native: 0.69.4_react@18.0.0 warn-once: 0.1.1 dev: false - /react-native-svg-transformer/1.0.0_fll77qb3ogjnwfmaiycfysecn4: + /react-native-svg-transformer/1.0.0_tnz3sx6ysqoq7sjxw372rvqnoq: resolution: {integrity: sha512-ALHU5VvLLyKM/BvyEG7VYJmqglvaXtU7mGRCxrEwwpJO/GBf1ZMUzc4AeJAjSodj7yYtlDYRxNSt9ySWpaa6JQ==} peerDependencies: react-native: '>=0.59.0' @@ -7194,35 +7166,35 @@ packages: '@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.70.2_react@18.2.0 - react-native-svg: 13.3.0_6zkxg335dae66szwidefhu4unm + react-native: 0.69.4_react@18.0.0 + react-native-svg: 13.0.0_jk6ntyzimkrv4hwdmdgaaf5yaa transitivePeerDependencies: - '@babel/core' - supports-color dev: true - /react-native-svg/13.3.0_6zkxg335dae66szwidefhu4unm: - resolution: {integrity: sha512-Xr6+sTt8ioCRypCbIDMgfmc4l2s/7H8l7FfPoMZ8qMf0dVx8ZVCHRsQlrdmwgVKLJwKSAiwj7Tqqz8NPSEpwDw==} + /react-native-svg/13.0.0_jk6ntyzimkrv4hwdmdgaaf5yaa: + resolution: {integrity: sha512-CkWB8BYGjvmGiLqqJRHfTH8/Q5tJyhltUYCmi20sqOCbjfTR5dkQUUafV0oUOhvK2lS+zuB9Dpf1Beo92rls5Q==} peerDependencies: react: '*' react-native: '*' dependencies: css-select: 5.1.0 css-tree: 1.1.3 - react: 18.2.0 - react-native: 0.70.2_react@18.2.0 + react: 18.0.0 + react-native: 0.69.4_react@18.0.0 - /react-native/0.70.2_react@18.2.0: - resolution: {integrity: sha512-c0Usl1Lc4pApDI66wpHwX8SGBUqXouQ8Z8Q9gX4jBjnmO5E8Vmlv6IM0CWDqbX/tn+aKNHCBLqV5phnCqusGbw==} + /react-native/0.69.4_react@18.0.0: + resolution: {integrity: sha512-rqNMialM/T4pHRKWqTIpOxA65B/9kUjtnepxwJqvsdCeMP9Q2YdSx4VASFR9RoEFYcPRU41yGf6EKrChNfns3g==} engines: {node: '>=14'} hasBin: true peerDependencies: - react: 18.1.0 + react: 18.0.0 dependencies: '@jest/create-cache-key-function': 27.5.1 - '@react-native-community/cli': 9.1.3 - '@react-native-community/cli-platform-android': 9.1.0 - '@react-native-community/cli-platform-ios': 9.1.2 + '@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.6 '@react-native/assets': 1.0.0 '@react-native/normalize-color': 2.0.0 '@react-native/polyfills': 2.0.0 @@ -7230,26 +7202,27 @@ packages: anser: 1.4.10 base64-js: 1.5.1 event-target-shim: 5.0.1 + hermes-engine: 0.11.0 invariant: 2.2.4 jsc-android: 250230.2.1 memoize-one: 5.2.1 - metro-react-native-babel-transformer: 0.72.3 - metro-runtime: 0.72.3 - metro-source-map: 0.72.3 + 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.2.0 - react: 18.2.0 + react: 18.0.0 react-devtools-core: 4.24.0 - react-native-codegen: 0.70.5 - react-native-gradle-plugin: 0.70.3 + 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.2.0 + react-shallow-renderer: 16.15.0_react@18.0.0 regenerator-runtime: 0.13.9 - scheduler: 0.22.0 + scheduler: 0.21.0 stacktrace-parser: 0.1.10 - use-sync-external-store: 1.2.0_react@18.2.0 + use-sync-external-store: 1.2.0_react@18.0.0 whatwg-fetch: 3.6.2 ws: 6.2.2 transitivePeerDependencies: @@ -7263,17 +7236,17 @@ packages: resolution: {integrity: sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA==} engines: {node: '>=0.10.0'} - /react-shallow-renderer/16.15.0_react@18.2.0: + /react-shallow-renderer/16.15.0_react@18.0.0: resolution: {integrity: sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==} peerDependencies: react: ^16.0.0 || ^17.0.0 || ^18.0.0 dependencies: object-assign: 4.1.1 - react: 18.2.0 + react: 18.0.0 react-is: 18.2.0 - /react/18.2.0: - resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} + /react/18.0.0: + resolution: {integrity: sha512-x+VL6wbT4JRVPm7EGxXhZ8w8LTROaxPXOqhlGyVSrv0sB1jkyFGgXxJ8LVoPRLvPR6/CIZGFmfzqUa2NYeMr2A==} engines: {node: '>=0.10.0'} dependencies: loose-envify: 1.4.0 @@ -7561,8 +7534,8 @@ packages: resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} dev: false - /scheduler/0.22.0: - resolution: {integrity: sha512-6QAm1BgQI88NPYymgGQLCZgvep4FyePDWFpXVK+zNSUgHwlqpJy8VEh8Et0KxTACS4VWwMousBElAZOH9nkkoQ==} + /scheduler/0.21.0: + resolution: {integrity: sha512-1r87x5fz9MXqswA2ERLo0EbOAU74DpIUO090gIasYTqlVoJeMcl+Z1Rg7WHz+qtPujhS/hGIt9kxZOYBV3faRQ==} dependencies: loose-envify: 1.4.0 @@ -8241,12 +8214,12 @@ packages: typescript: 4.8.4 dev: true - /twrnc/3.4.0_react-native@0.70.2: + /twrnc/3.4.0_react-native@0.69.4: resolution: {integrity: sha512-zJzueyC+LUphbrUEyeVmbR7VfAFObq2mr6ALfMytusHxzHJnOMCdxsw2GCTD67nThP1V22QFp9CZ/DulcZMl1g==} peerDependencies: react-native: '>=0.63.0' dependencies: - react-native: 0.70.2_react@18.2.0 + react-native: 0.69.4_react@18.0.0 tailwindcss: 3.1.8 transitivePeerDependencies: - ts-node @@ -8433,33 +8406,33 @@ packages: requires-port: 1.0.0 dev: false - /use-count-up/3.0.1_react@18.2.0: + /use-count-up/3.0.1_react@18.0.0: resolution: {integrity: sha512-jlVsXJYje6jh+xwQaCEYrwHoB+nRyillNEmr21bhe9kw7tpRzyrSq9jQs9UOlo+8hCFkuOmjUihL3IjEK/piVg==} peerDependencies: react: '>=16.8.0' dependencies: - react: 18.2.0 - use-elapsed-time: 3.0.2_react@18.2.0 + react: 18.0.0 + use-elapsed-time: 3.0.2_react@18.0.0 dev: false - /use-elapsed-time/3.0.2_react@18.2.0: + /use-elapsed-time/3.0.2_react@18.0.0: resolution: {integrity: sha512-2EY9lJ5DWbAvT8wWiEp6Ztnl46DjXz2j78uhWbXaz/bg3OfpbgVucCAlcN8Bih6hTJfFTdVYX9L6ySMn5py/wQ==} peerDependencies: react: '>=16.8.0' dependencies: - react: 18.2.0 + react: 18.0.0 dev: false /use-latest-callback/0.1.5: resolution: {integrity: sha512-HtHatS2U4/h32NlkhupDsPlrbiD27gSH5swBdtXbCAlc6pfOFzaj0FehW/FO12rx8j2Vy4/lJScCiJyM01E+bQ==} dev: false - /use-sync-external-store/1.2.0_react@18.2.0: + /use-sync-external-store/1.2.0_react@18.0.0: resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - react: 18.2.0 + react: 18.0.0 /use/3.1.1: resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==} @@ -8504,10 +8477,10 @@ packages: valtio: ^1.2.5 dependencies: lodash: 4.17.21 - valtio: 1.7.0_react@18.2.0 + valtio: 1.7.0_react@18.0.0 dev: false - /valtio/1.7.0_react@18.2.0: + /valtio/1.7.0_react@18.0.0: resolution: {integrity: sha512-3Tnix66EERwMcrl1rfB3ylcewOcL5L/GiPmC3FlVNreQzqf2jufEeqlNmgnLgSGchkEmH3WYVtS+x6Qw4r+yzQ==} engines: {node: '>=12.7.0'} peerDependencies: @@ -8532,8 +8505,8 @@ packages: optional: true dependencies: proxy-compare: 2.3.0 - react: 18.2.0 - use-sync-external-store: 1.2.0_react@18.2.0 + react: 18.0.0 + use-sync-external-store: 1.2.0_react@18.0.0 dev: false /vary/1.1.2: @@ -8693,7 +8666,6 @@ packages: /xmlbuilder/15.1.1: resolution: {integrity: sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==} engines: {node: '>=8.0'} - dev: false /xtend/4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} @@ -8736,23 +8708,6 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - /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' - react: '>=16.8' - peerDependenciesMeta: - immer: - optional: true - react: - optional: true - dependencies: - immer: 9.0.15 - react: 18.2.0 - use-sync-external-store: 1.2.0_react@18.2.0 - dev: false - file:../../packages/assets: resolution: {directory: ../../packages/assets, type: directory} name: '@sd/assets' diff --git a/apps/mobile/rust/src/android.rs b/apps/mobile/rust/src/android.rs index b66239023..ed93a44de 100644 --- a/apps/mobile/rust/src/android.rs +++ b/apps/mobile/rust/src/android.rs @@ -1,12 +1,28 @@ use std::panic; use crate::{EVENT_SENDER, NODE, RUNTIME, SUBSCRIPTIONS}; -use jni::objects::{JClass, JObject, JString}; -use jni::JNIEnv; +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, @@ -67,6 +83,7 @@ pub extern "system" fn Java_com_spacedrive_app_SDCore_handleCoreMsg( .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(); @@ -111,7 +128,7 @@ pub extern "system" fn Java_com_spacedrive_app_SDCore_handleCoreMsg( "resolve", "(Ljava/lang/Object;)V", &[env - .new_string(serde_json::to_vec(&resp).unwrap()) + .new_string(serde_json::to_string(&resp).unwrap()) .expect("Couldn't create java string!") .into()], ) diff --git a/apps/mobile/src/navigation/TabNavigator.tsx b/apps/mobile/src/navigation/TabNavigator.tsx index ecc2f6628..d8760a9ed 100644 --- a/apps/mobile/src/navigation/TabNavigator.tsx +++ b/apps/mobile/src/navigation/TabNavigator.tsx @@ -1,7 +1,7 @@ import { BottomTabScreenProps, createBottomTabNavigator } from '@react-navigation/bottom-tabs'; import { CompositeScreenProps, NavigatorScreenParams } from '@react-navigation/native'; import { CirclesFour, Folder, Planet } from 'phosphor-react-native'; -import { PhotoIcon } from 'react-native-heroicons/outline'; +import { PhotographIcon } from 'react-native-heroicons/outline'; import tw from '~/lib/tailwind'; import type { HomeDrawerScreenProps } from './DrawerNavigator'; @@ -65,7 +65,7 @@ export default function TabNavigator() { component={PhotosStack} options={{ tabBarIcon: ({ focused }) => ( - + ), tabBarLabel: 'Photos' }} diff --git a/package.json b/package.json index a000e359d..eb0f93568 100644 --- a/package.json +++ b/package.json @@ -18,6 +18,7 @@ "client": "pnpm --filter @sd/client -- ", "server": "pnpm --filter @sd/server -- ", "prisma": "cd core && cargo prisma", + "codegen": "cargo test api::tests::test_and_export_rspc_bindings -- --exact", "typecheck": "pnpm -r exec tsc" }, "devDependencies": { From 2d2d7223d2964ee90f1a063822ee85e7c535e335 Mon Sep 17 00:00:00 2001 From: Oscar Beaumont Date: Fri, 7 Oct 2022 05:32:45 +0800 Subject: [PATCH 12/16] merge in P2P code --- Cargo.lock | 955 +++++++++++++++++- Cargo.toml | 2 + core/src/api/p2p.rs | 78 ++ core/src/lib.rs | 12 + core/src/node/config.rs | 6 + crates/p2p/Cargo.toml | 26 +- crates/p2p/README.md | 9 + crates/p2p/docs-wip/index.md | 87 ++ crates/p2p/examples/basic.rs | 119 +++ crates/p2p/src/discovery/global_discovery.rs | 86 ++ crates/p2p/src/discovery/mdns.rs | 147 +++ crates/p2p/src/discovery/mod.rs | 7 + crates/p2p/src/discovery/stack.rs | 32 + crates/p2p/src/lib.rs | 17 + crates/p2p/src/main.rs | 3 - crates/p2p/src/network_manager/mod.rs | 13 + crates/p2p/src/network_manager/nm.rs | 439 ++++++++ crates/p2p/src/network_manager/nm_config.rs | 16 + crates/p2p/src/network_manager/nm_error.rs | 23 + crates/p2p/src/network_manager/nm_internal.rs | 256 +++++ crates/p2p/src/network_manager/nm_server.rs | 239 +++++ crates/p2p/src/network_manager/proto.rs | 28 + crates/p2p/src/p2p_manager.rs | 76 ++ crates/p2p/src/peer/mod.rs | 8 + crates/p2p/src/peer/peer.rs | 106 ++ crates/p2p/src/peer/peer_candidate.rs | 19 + crates/p2p/src/peer/peer_metadata.rs | 94 ++ crates/p2p/src/utils/identity.rs | 47 + crates/p2p/src/utils/mod.rs | 3 + crates/p2p/tunnel/Cargo.toml | 24 + crates/p2p/tunnel/Dockerfile | 29 + crates/p2p/tunnel/README.md | 12 + crates/p2p/tunnel/fly.toml | 21 + crates/p2p/tunnel/src/bin/generate-env.rs | 34 + crates/p2p/tunnel/src/main.rs | 300 ++++++ crates/p2p/tunnel/utils/Cargo.toml | 15 + crates/p2p/tunnel/utils/src/client.rs | 80 ++ crates/p2p/tunnel/utils/src/lib.rs | 10 + crates/p2p/tunnel/utils/src/peer_id.rs | 64 ++ crates/p2p/tunnel/utils/src/proto.rs | 34 + crates/p2p/tunnel/utils/src/quic.rs | 101 ++ crates/p2p/tunnel/utils/src/rmp_quic.rs | 43 + 42 files changed, 3673 insertions(+), 47 deletions(-) create mode 100644 core/src/api/p2p.rs create mode 100644 crates/p2p/README.md create mode 100644 crates/p2p/docs-wip/index.md create mode 100644 crates/p2p/examples/basic.rs create mode 100644 crates/p2p/src/discovery/global_discovery.rs create mode 100644 crates/p2p/src/discovery/mdns.rs create mode 100644 crates/p2p/src/discovery/mod.rs create mode 100644 crates/p2p/src/discovery/stack.rs create mode 100644 crates/p2p/src/lib.rs delete mode 100644 crates/p2p/src/main.rs create mode 100644 crates/p2p/src/network_manager/mod.rs create mode 100644 crates/p2p/src/network_manager/nm.rs create mode 100644 crates/p2p/src/network_manager/nm_config.rs create mode 100644 crates/p2p/src/network_manager/nm_error.rs create mode 100644 crates/p2p/src/network_manager/nm_internal.rs create mode 100644 crates/p2p/src/network_manager/nm_server.rs create mode 100644 crates/p2p/src/network_manager/proto.rs create mode 100644 crates/p2p/src/p2p_manager.rs create mode 100644 crates/p2p/src/peer/mod.rs create mode 100644 crates/p2p/src/peer/peer.rs create mode 100644 crates/p2p/src/peer/peer_candidate.rs create mode 100644 crates/p2p/src/peer/peer_metadata.rs create mode 100644 crates/p2p/src/utils/identity.rs create mode 100644 crates/p2p/src/utils/mod.rs create mode 100644 crates/p2p/tunnel/Cargo.toml create mode 100644 crates/p2p/tunnel/Dockerfile create mode 100644 crates/p2p/tunnel/README.md create mode 100644 crates/p2p/tunnel/fly.toml create mode 100644 crates/p2p/tunnel/src/bin/generate-env.rs create mode 100644 crates/p2p/tunnel/src/main.rs create mode 100644 crates/p2p/tunnel/utils/Cargo.toml create mode 100644 crates/p2p/tunnel/utils/src/client.rs create mode 100644 crates/p2p/tunnel/utils/src/lib.rs create mode 100644 crates/p2p/tunnel/utils/src/peer_id.rs create mode 100644 crates/p2p/tunnel/utils/src/proto.rs create mode 100644 crates/p2p/tunnel/utils/src/quic.rs create mode 100644 crates/p2p/tunnel/utils/src/rmp_quic.rs diff --git a/Cargo.lock b/Cargo.lock index 6c306e8b2..212afe86f 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" @@ -159,6 +234,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 +267,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" @@ -269,6 +359,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 +414,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 +478,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 +546,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 +627,7 @@ version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3431df59f28accaf4cb4eed4a9acc66bea3f3c3753aa6cdc2f024174ef232af7" dependencies = [ - "smallvec", + "smallvec 1.9.0", ] [[package]] @@ -483,7 +636,7 @@ version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0aacacf4d96c24b2ad6eb8ee6df040e4f27b0d0b39a5710c30091baa830485db" dependencies = [ - "smallvec", + "smallvec 1.9.0", ] [[package]] @@ -602,7 +755,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]] @@ -722,7 +888,7 @@ version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "045ebe27666471bb549370b4b0b3e51b07f56325befa4284db65fc89c02511b1" dependencies = [ - "autocfg", + "autocfg 1.1.0", "cfg-if 1.0.0", "crossbeam-utils", "memoffset", @@ -773,7 +939,7 @@ dependencies = [ "phf 0.8.0", "proc-macro2", "quote", - "smallvec", + "smallvec 1.9.0", "syn", ] @@ -803,7 +969,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 +990,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 +1038,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 +1153,7 @@ checksum = "adfbc57365a37acbd2ebf2b64d7e69bb766e2fea813521ed536f5d0520dcf86c" dependencies = [ "block-buffer 0.10.3", "crypto-common", + "subtle", ] [[package]] @@ -1041,6 +1234,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,6 +1302,12 @@ 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" @@ -1128,7 +1333,7 @@ dependencies = [ "half", "lebe", "miniz_oxide", - "smallvec", + "smallvec 1.9.0", "threadpool", ] @@ -1329,6 +1534,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 +1786,7 @@ dependencies = [ "gobject-sys", "libc", "once_cell", - "smallvec", + "smallvec 1.9.0", "thiserror", ] @@ -1773,6 +1993,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" @@ -1928,14 +2166,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" @@ -2013,7 +2280,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", ] @@ -2307,7 +2574,7 @@ version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" dependencies = [ - "autocfg", + "autocfg 1.1.0", "scopeguard", ] @@ -2435,6 +2702,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" @@ -2447,7 +2733,7 @@ version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" dependencies = [ - "autocfg", + "autocfg 1.1.0", ] [[package]] @@ -2698,6 +2984,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" @@ -2710,7 +3062,18 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77a5d83df9f36fe23f0c3648c6bbb8b0298bb5f1939c8f2704431371f4b84d43" dependencies = [ - "smallvec", + "smallvec 1.9.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]] @@ -2719,7 +3082,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", @@ -2767,7 +3130,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", ] @@ -2778,7 +3141,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", ] @@ -2788,7 +3151,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", ] @@ -2799,7 +3162,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", ] @@ -2810,7 +3173,7 @@ version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" dependencies = [ - "autocfg", + "autocfg 1.1.0", ] [[package]] @@ -2969,7 +3332,7 @@ name = "openssl-sys" version = "0.9.75" source = "git+https://github.com/spacedriveapp/rust-openssl#f49328d2fc62e5ade3a321eed75cf4b250bda8b7" dependencies = [ - "autocfg", + "autocfg 1.1.0", "cc", "libc", "openssl-src", @@ -3033,6 +3396,30 @@ dependencies = [ "winapi", ] +[[package]] +name = "p2p" +version = "0.1.0" +dependencies = [ + "bip39", + "ctrlc", + "dashmap", + "futures-util", + "if-watch", + "mdns-sd", + "quinn", + "rcgen", + "rmp-serde", + "rustls", + "serde", + "spake2", + "specta 0.0.2", + "thiserror", + "tokio", + "tracing", + "ts-rs", + "tunnel-utils", +] + [[package]] name = "pango" version = "0.15.10" @@ -3058,6 +3445,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" @@ -3099,7 +3492,7 @@ dependencies = [ "cloudabi", "libc", "redox_syscall 0.1.57", - "smallvec", + "smallvec 1.9.0", "winapi", ] @@ -3113,7 +3506,7 @@ dependencies = [ "instant", "libc", "redox_syscall 0.2.16", - "smallvec", + "smallvec 1.9.0", "winapi", ] @@ -3126,7 +3519,7 @@ dependencies = [ "cfg-if 1.0.0", "libc", "redox_syscall 0.2.16", - "smallvec", + "smallvec 1.9.0", "windows-sys", ] @@ -3160,6 +3553,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" @@ -3394,6 +3796,20 @@ dependencies = [ "miniz_oxide", ] +[[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]] name = "ppv-lite86" version = "0.2.16" @@ -3700,6 +4116,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" @@ -3732,6 +4201,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" @@ -3742,8 +4230,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]] @@ -3757,6 +4245,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" @@ -3810,6 +4308,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" @@ -3819,6 +4326,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" @@ -3828,6 +4379,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" @@ -3870,7 +4430,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", @@ -3888,6 +4448,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.14", + "yasna", +] + [[package]] name = "rdrand" version = "0.4.0" @@ -3897,6 +4469,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" @@ -4041,6 +4632,21 @@ dependencies = [ "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" @@ -4112,6 +4718,21 @@ dependencies = [ "tokio", ] +[[package]] +name = "rtnetlink" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "322c53fd76a18698f1c27381d58091de3a043d356aa5bd0d510608b565f469a0" +dependencies = [ + "async-global-executor", + "futures", + "log", + "netlink-packet-route", + "netlink-proto", + "nix 0.24.2", + "thiserror", +] + [[package]] name = "rusqlite" version = "0.25.4" @@ -4125,7 +4746,7 @@ dependencies = [ "hashlink", "libsqlite3-sys", "memchr", - "smallvec", + "smallvec 1.9.0", ] [[package]] @@ -4158,6 +4779,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" @@ -4246,6 +4909,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" @@ -4268,7 +4941,7 @@ dependencies = [ "itertools", "once_cell", "prisma-client-rust", - "ring", + "ring 0.17.0-alpha.11", "rmp", "rmp-serde", "rspc 0.0.5", @@ -4314,10 +4987,6 @@ dependencies = [ "webp", ] -[[package]] -name = "sd-p2p" -version = "0.1.0" - [[package]] name = "sd-sync" version = "0.1.0" @@ -4368,7 +5037,7 @@ dependencies = [ "phf_codegen", "precomputed-hash", "servo_arc", - "smallvec", + "smallvec 1.9.0", "thin-slice", ] @@ -4647,7 +5316,16 @@ 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 = "0.6.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b97fcaeba89edba30f044a10c6a3cc39df9c3f17d7cd829dd1446cab35f890e0" +dependencies = [ + "maybe-uninit", ] [[package]] @@ -4709,6 +5387,30 @@ dependencies = [ "window-shadows", ] +[[package]] +name = "spake2" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +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 = [ + "convert_case 0.5.0", + "serde_json", + "specta-macros", + "termcolor", +] + [[package]] name = "specta" version = "0.0.3" @@ -4946,6 +5648,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" @@ -4999,6 +5707,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" @@ -5411,12 +6140,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", @@ -5617,7 +6347,7 @@ dependencies = [ "once_cell", "regex", "sharded-slab", - "smallvec", + "smallvec 1.9.0", "thread_local", "tracing", "tracing-core", @@ -5662,6 +6392,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" @@ -5681,6 +6434,43 @@ dependencies = [ "utf-8", ] +[[package]] +name = "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", + "serde", + "thiserror", + "tokio", + "tracing", + "tracing-subscriber", + "tunnel-utils", +] + +[[package]] +name = "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 = "typenum" version = "1.15.0" @@ -5721,11 +6511,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]] @@ -5757,9 +6547,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", @@ -5853,6 +6643,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" @@ -6025,6 +6821,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" @@ -6069,6 +6875,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" @@ -6125,6 +6940,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" @@ -6203,6 +7031,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" @@ -6227,6 +7061,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" @@ -6251,6 +7091,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" @@ -6275,6 +7121,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" @@ -6299,6 +7151,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" @@ -6415,3 +7273,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.14", +] + +[[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..21fc6d3ef 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", 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/lib.rs b/core/src/lib.rs index a8c3264f2..1efe8bc30 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() @@ -74,6 +80,12 @@ impl Node { ), ) .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/crates/p2p/Cargo.toml b/crates/p2p/Cargo.toml index e59d768f9..1f064147d 100644 --- a/crates/p2p/Cargo.toml +++ b/crates/p2p/Cargo.toml @@ -1,8 +1,28 @@ [package] -name = "sd-p2p" +name = "p2p" version = "0.1.0" edition = "2021" -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - [dependencies] +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..fd14d11a8 --- /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 +``` \ No newline at end of file diff --git a/crates/p2p/docs-wip/index.md b/crates/p2p/docs-wip/index.md new file mode 100644 index 000000000..861d4834c --- /dev/null +++ b/crates/p2p/docs-wip/index.md @@ -0,0 +1,87 @@ +# 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..e5a2df5ba --- /dev/null +++ b/crates/p2p/examples/basic.rs @@ -0,0 +1,119 @@ +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()), + } + } + + 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..5dc722132 --- /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 tracing::warn; +use tunnel_utils::{Client, Message}; + +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..0c72a1256 --- /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 tracing::warn; +use tunnel_utils::PeerId; + +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..21820a660 --- /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 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..9d3e84fe8 --- /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 spake2::{Ed25519Group, Password, Spake2}; +use thiserror::Error; +use tokio::sync::{mpsc, oneshot}; +use tracing::{debug, error, warn}; +use tunnel_utils::{quic, write_value, PeerId, UtilError}; + +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..775ed2be0 --- /dev/null +++ b/crates/p2p/src/network_manager/nm_config.rs @@ -0,0 +1,16 @@ +use std::collections::HashSet; + +use 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..5276f1072 --- /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 thiserror::Error; +use tokio::{select, sync::mpsc, time::sleep}; +use tracing::{debug, error, warn}; +use tunnel_utils::{quic::client_config, PeerId}; + +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..aba1f5904 --- /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 spake2::{Ed25519Group, Password, Spake2}; +use tokio::{sync::oneshot, time::sleep}; +use tracing::{debug, error, info, warn}; +use tunnel_utils::{read_value, write_value, PeerId}; + +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..144ccd74e --- /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 tokio::sync::oneshot; +use tunnel_utils::PeerId; + +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..5ea9830cb --- /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 tracing::{debug, error}; +use tunnel_utils::PeerId; + +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)] +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..b67ee3c6f --- /dev/null +++ b/crates/p2p/src/peer/peer_candidate.rs @@ -0,0 +1,19 @@ +use std::net::Ipv4Addr; + +use serde::{Deserialize, Serialize}; +use specta::Type; +use tunnel_utils::PeerId; + +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, Type, Serialize, Deserialize)] +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..6e3fe3abb --- /dev/null +++ b/crates/p2p/src/peer/peer_metadata.rs @@ -0,0 +1,94 @@ +use std::{collections::HashMap, env, str::FromStr}; + +use serde::{Deserialize, Serialize}; +use specta::Type; +use tunnel_utils::PeerId; + +/// 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..28e81c66e --- /dev/null +++ b/crates/p2p/tunnel/Cargo.toml @@ -0,0 +1,24 @@ +[package] +name = "tunnel" +version = "0.1.0" +edition = "2021" +default-run = "tunnel" + +[dependencies] +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..b7cea7f33 --- /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 +``` \ No newline at end of file diff --git a/crates/p2p/tunnel/fly.toml b/crates/p2p/tunnel/fly.toml new file mode 100644 index 000000000..b48236dcb --- /dev/null +++ b/crates/p2p/tunnel/fly.toml @@ -0,0 +1,21 @@ +app = "sdtunnel" + +[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..a7c4333d0 --- /dev/null +++ b/crates/p2p/tunnel/src/bin/generate-env.rs @@ -0,0 +1,34 @@ +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..163297373 --- /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..89faa0252 --- /dev/null +++ b/crates/p2p/tunnel/utils/Cargo.toml @@ -0,0 +1,15 @@ +[package] +name = "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[..])?) +} From dba39047ae8faca16f62606ed5cb8f8a75b993b9 Mon Sep 17 00:00:00 2001 From: Oscar Beaumont Date: Fri, 7 Oct 2022 05:51:40 +0800 Subject: [PATCH 13/16] fix major bugs in p2p PR --- .gitignore | 1 - Cargo.lock | 122 +++++++++--------- core/src/lib.rs | 8 +- crates/p2p/Cargo.toml | 4 +- crates/p2p/examples/basic.rs | 1 + crates/p2p/src/discovery/global_discovery.rs | 2 +- crates/p2p/src/discovery/mdns.rs | 2 +- crates/p2p/src/lib.rs | 2 +- crates/p2p/src/network_manager/nm.rs | 2 +- crates/p2p/src/network_manager/nm_config.rs | 2 +- crates/p2p/src/network_manager/nm_internal.rs | 2 +- crates/p2p/src/network_manager/nm_server.rs | 2 +- crates/p2p/src/p2p_manager.rs | 2 +- crates/p2p/src/peer/peer.rs | 2 +- crates/p2p/src/peer/peer_candidate.rs | 5 +- crates/p2p/src/peer/peer_metadata.rs | 2 +- crates/p2p/tunnel/Cargo.toml | 6 +- crates/p2p/tunnel/fly.toml | 2 +- crates/p2p/tunnel/src/main.rs | 50 +++---- crates/p2p/tunnel/utils/Cargo.toml | 2 +- 20 files changed, 110 insertions(+), 111 deletions(-) diff --git a/.gitignore b/.gitignore index fc00b6ad0..1a7673277 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 diff --git a/Cargo.lock b/Cargo.lock index 212afe86f..3724a84a0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3396,30 +3396,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "p2p" -version = "0.1.0" -dependencies = [ - "bip39", - "ctrlc", - "dashmap", - "futures-util", - "if-watch", - "mdns-sd", - "quinn", - "rcgen", - "rmp-serde", - "rustls", - "serde", - "spake2", - "specta 0.0.2", - "thiserror", - "tokio", - "tracing", - "ts-rs", - "tunnel-utils", -] - [[package]] name = "pango" version = "0.15.10" @@ -4987,6 +4963,30 @@ dependencies = [ "webp", ] +[[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" @@ -4998,6 +4998,43 @@ dependencies = [ "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" @@ -6434,43 +6471,6 @@ dependencies = [ "utf-8", ] -[[package]] -name = "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", - "serde", - "thiserror", - "tokio", - "tracing", - "tracing-subscriber", - "tunnel-utils", -] - -[[package]] -name = "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 = "typenum" version = "1.15.0" diff --git a/core/src/lib.rs b/core/src/lib.rs index 1efe8bc30..fae1da894 100644 --- a/core/src/lib.rs +++ b/core/src/lib.rs @@ -53,10 +53,10 @@ 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", - )); + // 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() diff --git a/crates/p2p/Cargo.toml b/crates/p2p/Cargo.toml index 1f064147d..d6df53c99 100644 --- a/crates/p2p/Cargo.toml +++ b/crates/p2p/Cargo.toml @@ -1,10 +1,10 @@ [package] -name = "p2p" +name = "sd-p2p" version = "0.1.0" edition = "2021" [dependencies] -tunnel-utils = { path = "./tunnel/utils" } +sd-tunnel-utils = { path = "./tunnel/utils" } dashmap = "5.3.4" rcgen = "0.9.2" diff --git a/crates/p2p/examples/basic.rs b/crates/p2p/examples/basic.rs index e5a2df5ba..5f3f0e4db 100644 --- a/crates/p2p/examples/basic.rs +++ b/crates/p2p/examples/basic.rs @@ -28,6 +28,7 @@ impl P2PManager for SdP2PManager { PeerMetadata { name: self.peer_name.clone(), version: Some(env!("CARGO_PKG_VERSION").into()), + operating_system: todo!(), } } diff --git a/crates/p2p/src/discovery/global_discovery.rs b/crates/p2p/src/discovery/global_discovery.rs index 5dc722132..8dd48f6f8 100644 --- a/crates/p2p/src/discovery/global_discovery.rs +++ b/crates/p2p/src/discovery/global_discovery.rs @@ -1,8 +1,8 @@ /// 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 tunnel_utils::{Client, Message}; use crate::{NetworkManager, NetworkManagerError, P2PManager}; diff --git a/crates/p2p/src/discovery/mdns.rs b/crates/p2p/src/discovery/mdns.rs index 0c72a1256..17910f316 100644 --- a/crates/p2p/src/discovery/mdns.rs +++ b/crates/p2p/src/discovery/mdns.rs @@ -1,8 +1,8 @@ use std::{net::Ipv4Addr, sync::Arc}; use mdns_sd::{Receiver, ServiceDaemon, ServiceEvent, ServiceInfo}; +use sd_tunnel_utils::PeerId; use tracing::warn; -use tunnel_utils::PeerId; use crate::{NetworkManager, NetworkManagerError, P2PManager, PeerCandidate, PeerMetadata}; diff --git a/crates/p2p/src/lib.rs b/crates/p2p/src/lib.rs index 21820a660..ad147eae5 100644 --- a/crates/p2p/src/lib.rs +++ b/crates/p2p/src/lib.rs @@ -8,7 +8,7 @@ pub(crate) use discovery::*; pub use network_manager::*; pub use p2p_manager::*; pub use peer::*; -pub use tunnel_utils::{read_value, write_value, PeerId}; +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. diff --git a/crates/p2p/src/network_manager/nm.rs b/crates/p2p/src/network_manager/nm.rs index 9d3e84fe8..4b57a2a2e 100644 --- a/crates/p2p/src/network_manager/nm.rs +++ b/crates/p2p/src/network_manager/nm.rs @@ -10,11 +10,11 @@ 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 tunnel_utils::{quic, write_value, PeerId, UtilError}; use crate::{ ConnectError, ConnectionEstablishmentPayload, ConnectionType, Identity, NetworkManagerConfig, diff --git a/crates/p2p/src/network_manager/nm_config.rs b/crates/p2p/src/network_manager/nm_config.rs index 775ed2be0..c7dea7555 100644 --- a/crates/p2p/src/network_manager/nm_config.rs +++ b/crates/p2p/src/network_manager/nm_config.rs @@ -1,6 +1,6 @@ use std::collections::HashSet; -use tunnel_utils::PeerId; +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)] diff --git a/crates/p2p/src/network_manager/nm_internal.rs b/crates/p2p/src/network_manager/nm_internal.rs index 5276f1072..fba79b12e 100644 --- a/crates/p2p/src/network_manager/nm_internal.rs +++ b/crates/p2p/src/network_manager/nm_internal.rs @@ -7,10 +7,10 @@ use std::{ 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 tunnel_utils::{quic::client_config, PeerId}; use crate::{ ConnectionType, DiscoveryStack, NetworkManager, NetworkManagerError, P2PManager, Peer, diff --git a/crates/p2p/src/network_manager/nm_server.rs b/crates/p2p/src/network_manager/nm_server.rs index aba1f5904..e543a8312 100644 --- a/crates/p2p/src/network_manager/nm_server.rs +++ b/crates/p2p/src/network_manager/nm_server.rs @@ -3,10 +3,10 @@ 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 tunnel_utils::{read_value, write_value, PeerId}; use crate::{ ConnectionEstablishmentPayload, ConnectionType, NetworkManager, P2PManager, diff --git a/crates/p2p/src/p2p_manager.rs b/crates/p2p/src/p2p_manager.rs index 144ccd74e..a25a0252f 100644 --- a/crates/p2p/src/p2p_manager.rs +++ b/crates/p2p/src/p2p_manager.rs @@ -1,8 +1,8 @@ use std::{collections::HashMap, future::Future, pin::Pin}; use quinn::{RecvStream, SendStream}; +use sd_tunnel_utils::PeerId; use tokio::sync::oneshot; -use tunnel_utils::PeerId; use crate::{NetworkManager, Peer, PeerMetadata}; diff --git a/crates/p2p/src/peer/peer.rs b/crates/p2p/src/peer/peer.rs index 5ea9830cb..9f688e5aa 100644 --- a/crates/p2p/src/peer/peer.rs +++ b/crates/p2p/src/peer/peer.rs @@ -5,8 +5,8 @@ use std::{ use futures_util::StreamExt; use quinn::{ApplicationClose, Connection, IncomingBiStreams}; +use sd_tunnel_utils::PeerId; use tracing::{debug, error}; -use tunnel_utils::PeerId; use crate::{NetworkManager, P2PManager, PeerMetadata}; diff --git a/crates/p2p/src/peer/peer_candidate.rs b/crates/p2p/src/peer/peer_candidate.rs index b67ee3c6f..2ba387427 100644 --- a/crates/p2p/src/peer/peer_candidate.rs +++ b/crates/p2p/src/peer/peer_candidate.rs @@ -1,8 +1,7 @@ use std::net::Ipv4Addr; +use sd_tunnel_utils::PeerId; use serde::{Deserialize, Serialize}; -use specta::Type; -use tunnel_utils::PeerId; use crate::PeerMetadata; @@ -10,7 +9,7 @@ use crate::PeerMetadata; /// 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, Type, Serialize, Deserialize)] +#[derive(Debug, Clone, Serialize, Deserialize)] // TODO: Type pub struct PeerCandidate { pub id: PeerId, pub metadata: PeerMetadata, diff --git a/crates/p2p/src/peer/peer_metadata.rs b/crates/p2p/src/peer/peer_metadata.rs index 6e3fe3abb..b8f909585 100644 --- a/crates/p2p/src/peer/peer_metadata.rs +++ b/crates/p2p/src/peer/peer_metadata.rs @@ -1,8 +1,8 @@ use std::{collections::HashMap, env, str::FromStr}; +use sd_tunnel_utils::PeerId; use serde::{Deserialize, Serialize}; use specta::Type; -use tunnel_utils::PeerId; /// 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. diff --git a/crates/p2p/tunnel/Cargo.toml b/crates/p2p/tunnel/Cargo.toml index 28e81c66e..cdbe7860e 100644 --- a/crates/p2p/tunnel/Cargo.toml +++ b/crates/p2p/tunnel/Cargo.toml @@ -1,11 +1,11 @@ [package] -name = "tunnel" +name = "sd-tunnel" version = "0.1.0" edition = "2021" -default-run = "tunnel" +default-run = "sd-tunnel" [dependencies] -tunnel-utils = { path = "./utils" } +sd-tunnel-utils = { path = "./utils" } base64 = "0.13.0" dotenv = "0.15.0" diff --git a/crates/p2p/tunnel/fly.toml b/crates/p2p/tunnel/fly.toml index b48236dcb..b696664a0 100644 --- a/crates/p2p/tunnel/fly.toml +++ b/crates/p2p/tunnel/fly.toml @@ -1,4 +1,4 @@ -app = "sdtunnel" +app = "sd-tunnel" [env] SD_PORT = 9000 diff --git a/crates/p2p/tunnel/src/main.rs b/crates/p2p/tunnel/src/main.rs index 163297373..63de3c82f 100644 --- a/crates/p2p/tunnel/src/main.rs +++ b/crates/p2p/tunnel/src/main.rs @@ -42,37 +42,37 @@ async fn main() { .init(); let certificate = match env::var("SD_ROOT_CERTIFICATE") { - Ok(certificate) => rustls::Certificate( - decode(certificate).expect("Error decoding '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'"), - ), + 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 manager = + RedisConnectionManager::new(redis_url).expect("Error creating Redis connection manager!"); let redis_pool = Pool::builder() .build(manager) .await @@ -141,12 +141,12 @@ async fn handle_connection( 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 '{}'", @@ -164,9 +164,12 @@ async fn handle_connection( error_code, reason, })) => { - debug!("closed connection with peer '{}' with error_code '{}' and reason '{:?}' ", peer_id, 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, }; @@ -189,11 +192,11 @@ async fn handle_connection( 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); @@ -215,7 +218,7 @@ async fn handle_stream( 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? { @@ -241,7 +244,7 @@ async fn handle_stream( Message::ClientAnnouncementOk } - }, + } Message::QueryClientAnnouncement(peer_ids) => { increment_counter!("spacetunnel_discovery_announcement_queries"); @@ -253,15 +256,12 @@ async fn handle_stream( "Client requested too many client announcements '{}'", peer_ids.len() ); - increment_counter!( - "spacetunnel_discovery_announcement_queries_invalid" - ); + 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 redis_key = format!("peer:announcement:{}", peer_id.to_string()); let resp: HashMap = cmd("HGETALL") .arg(&redis_key) @@ -280,7 +280,7 @@ async fn handle_stream( } Message::QueryClientAnnouncementResponse(peers) } - }, + } Message::ClientAnnouncementOk | Message::QueryClientAnnouncementResponse { .. } | Message::Error(_) => Message::Error(MessageError::InvalidReqErr), diff --git a/crates/p2p/tunnel/utils/Cargo.toml b/crates/p2p/tunnel/utils/Cargo.toml index 89faa0252..0800d7974 100644 --- a/crates/p2p/tunnel/utils/Cargo.toml +++ b/crates/p2p/tunnel/utils/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "tunnel-utils" +name = "sd-tunnel-utils" version = "0.1.0" edition = "2021" From 851778b2ab13a973651f88c2ede4bd966ac4a958 Mon Sep 17 00:00:00 2001 From: Oscar Beaumont Date: Fri, 7 Oct 2022 07:36:22 +0800 Subject: [PATCH 14/16] toast notification hook --- packages/interface/package.json | 1 + packages/interface/src/AppLayout.tsx | 92 ++++++++++++++++++++++- packages/interface/src/hooks/useToasts.ts | 34 +++++++++ pnpm-lock.yaml | 38 ++++++++-- 4 files changed, 158 insertions(+), 7 deletions(-) create mode 100644 packages/interface/src/hooks/useToasts.ts diff --git a/packages/interface/package.json b/packages/interface/package.json index 9563c9469..9891553a8 100644 --- a/packages/interface/package.json +++ b/packages/interface/package.json @@ -24,6 +24,7 @@ "@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:*", diff --git a/packages/interface/src/AppLayout.tsx b/packages/interface/src/AppLayout.tsx index 263173dae..67cb4c7d8 100644 --- a/packages/interface/src/AppLayout.tsx +++ b/packages/interface/src/AppLayout.tsx @@ -1,10 +1,12 @@ +import * as ToastPrimitive from '@radix-ui/react-toast'; import { useCurrentLibrary } from '@sd/client'; import clsx from 'clsx'; -import { Suspense } from 'react'; +import { Suspense, useEffect, useState } from 'react'; import { Outlet } from 'react-router-dom'; import { Sidebar } from './components/layout/Sidebar'; import { useOperatingSystem } from './hooks/useOperatingSystem'; +import { useToasts } from './hooks/useToasts'; export function AppLayout() { const { libraries } = useCurrentLibrary(); @@ -34,6 +36,94 @@ export function AppLayout() {
+ +
+ ); +} + +function Toasts() { + const { toasts, addToast, removeToast } = useToasts(); + + // useEffect(() => { + // setTimeout(() => { + // addToast({ + // title: 'Spacedrop', + // subtitle: 'Someone tried to send you a file. Accept it?', + // actionButton: { + // text: 'Accept', + // onClick: () => { + // console.log('Bruh'); + // } + // } + // }); + // }, 2000); + // }, []); + + return ( +
+ + <> + {toasts.map((toast) => ( + removeToast(toast)} + duration={toast.duration || 3000} + className={clsx( + 'w-80 m-4 shadow-lg rounded-lg', + 'bg-gray-800/20 backdrop-blur', + 'radix-state-open:animate-toast-slide-in-bottom md:radix-state-open:animate-toast-slide-in-right', + 'radix-state-closed:animate-toast-hide', + 'radix-swipe-end:animate-toast-swipe-out', + 'translate-x-radix-toast-swipe-move-x', + 'radix-swipe-cancel:translate-x-0 radix-swipe-cancel:duration-200 radix-swipe-cancel:ease-[ease]', + 'focus:outline-none focus-visible:ring focus-visible:ring-primary focus-visible:ring-opacity-75 border-white/10 border-2 shadow-2xl' + )} + > +
+
+
+ + {toast.title} + + {toast.subtitle && ( + + {toast.subtitle} + + )} +
+
+
+
+
+ {toast.actionButton && ( + { + e.preventDefault(); + toast.actionButton?.onClick(); + removeToast(toast); + }} + > + {toast.actionButton.text || 'Open'} + + )} +
+
+ + Dismiss + +
+
+
+
+
+ ))} + + + +
); } 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/pnpm-lock.yaml b/pnpm-lock.yaml index d60c0a145..018a6fe2e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -337,6 +337,7 @@ importers: '@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:* @@ -411,6 +412,7 @@ importers: '@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 @@ -3451,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: @@ -6232,7 +6257,7 @@ packages: '@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.4_sass@1.55.0 + vite: 3.1.4 transitivePeerDependencies: - supports-color @@ -6967,6 +6992,7 @@ packages: normalize-range: 0.1.2 picocolors: 1.0.0 postcss-value-parser: 4.2.0 + dev: false /autoprefixer/10.4.12_postcss@8.4.17: resolution: {integrity: sha512-WrCGV9/b97Pa+jtwf5UGaRjgQIg7OK3D06GnoYoZNcG1Xb8Gt3EfuKjlhh9i/VtT16g6PYjZ69jdJ2g8FxSC4Q==} @@ -7527,7 +7553,7 @@ packages: hasBin: true dependencies: caniuse-lite: 1.0.30001416 - electron-to-chromium: 1.4.274 + electron-to-chromium: 1.4.275 node-releases: 2.0.6 update-browserslist-db: 1.0.10_browserslist@4.21.4 @@ -9250,8 +9276,8 @@ packages: jake: 10.8.5 dev: true - /electron-to-chromium/1.4.274: - resolution: {integrity: sha512-Fgn7JZQzq85I81FpKUNxVLAzoghy8JZJ4NIue+YfUYBbu1AkpgzFvNwzF/ZNZH9ElkmJD0TSWu1F2gTpw/zZlg==} + /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==} @@ -18098,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: @@ -18262,7 +18288,7 @@ packages: dependencies: '@rollup/pluginutils': 4.2.1 '@svgr/core': 6.4.0 - vite: 3.1.4_sass@1.55.0 + vite: 3.1.4 transitivePeerDependencies: - '@babel/core' - supports-color From 19017d10015fd3284c707e5ded54c433fd70215d Mon Sep 17 00:00:00 2001 From: Oscar Beaumont Date: Fri, 7 Oct 2022 07:39:59 +0800 Subject: [PATCH 15/16] cargo fmt + fix clippy lints --- crates/p2p/src/peer/peer.rs | 2 +- crates/p2p/tunnel/src/bin/generate-env.rs | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/crates/p2p/src/peer/peer.rs b/crates/p2p/src/peer/peer.rs index 9f688e5aa..4a9c91a4c 100644 --- a/crates/p2p/src/peer/peer.rs +++ b/crates/p2p/src/peer/peer.rs @@ -14,7 +14,7 @@ use crate::{NetworkManager, P2PManager, PeerMetadata}; /// 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)] +#[derive(Debug, Clone, PartialEq, Eq)] pub enum ConnectionType { /// I am the QUIC server. Server, diff --git a/crates/p2p/tunnel/src/bin/generate-env.rs b/crates/p2p/tunnel/src/bin/generate-env.rs index a7c4333d0..b2de3ca8a 100644 --- a/crates/p2p/tunnel/src/bin/generate-env.rs +++ b/crates/p2p/tunnel/src/bin/generate-env.rs @@ -13,8 +13,7 @@ fn main() { } // 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(); + let cert = generate_simple_self_signed(vec!["sdtunnel.spacedrive.com".into()]).unwrap(); match fs::write( env_file, @@ -26,7 +25,7 @@ SD_REDIS_URL=redis://127.0.0.1/"#, encode(cert.serialize_private_key_der()) ), ) { - Ok(_) => {}, + Ok(_) => {} Err(err) => println!("Error writing to '{}': {}", env_file.display(), err), } From 450ad0daa2123b0d106f3c3578ec440d88b575cd Mon Sep 17 00:00:00 2001 From: Oscar Beaumont Date: Fri, 7 Oct 2022 07:45:15 +0800 Subject: [PATCH 16/16] merge duplicate prettier config and format repo with it --- .prettierignore | 2 + .prettierrc.js | 2 +- .prettierrc.json | 20 - README.md | 1 - .../AppIcon.appiconset/Contents.json | 242 +++++------ .../Spacedrive/Images.xcassets/Contents.json | 8 +- .../SplashScreen.imageset/Contents.json | 40 +- .../Contents.json | 40 +- apps/mobile/src/types/bindings.ts | 395 ++++++++++++++---- apps/web/src/index.html | 20 +- apps/web/src/index.tsx | 6 +- apps/web/tsconfig.json | 8 +- crates/ffmpeg/README.md | 6 +- crates/p2p/README.md | 2 +- crates/p2p/docs-wip/index.md | 23 +- crates/p2p/tunnel/README.md | 2 +- crates/sync/README.md | 1 - crates/sync/docs/HLC.md | 68 ++- crates/sync/example/.vscode/extensions.json | 2 +- crates/sync/example/index.html | 24 +- crates/sync/example/package.json | 60 +-- crates/sync/example/src-tauri/tauri.conf.json | 128 +++--- crates/sync/example/src/App.tsx | 114 +++-- crates/sync/example/src/bindings.ts | 25 +- crates/sync/example/src/index.tsx | 24 +- crates/sync/example/src/rspc.ts | 26 +- crates/sync/example/tsconfig.json | 26 +- crates/sync/example/vite.config.ts | 44 +- docs/changelog/beta/0.1.0.md | 20 +- docs/company/legal/terms.md | 2 +- docs/developers/architecture/albums.md | 5 +- docs/developers/architecture/database.md | 2 +- docs/developers/architecture/explorer.md | 3 +- docs/developers/architecture/extensions.md | 2 +- docs/developers/architecture/jobs.md | 2 +- docs/developers/architecture/libraries.md | 3 +- docs/developers/architecture/locations.md | 2 +- docs/developers/architecture/nodes.md | 3 +- docs/developers/architecture/objects.md | 48 +-- docs/developers/architecture/preview-media.md | 2 +- docs/developers/architecture/search.md | 1 - docs/developers/architecture/spaces.md | 3 +- docs/developers/architecture/tags.md | 2 +- .../architecture/virtual-filesystem.md | 1 - docs/developers/clients/cli.md | 2 +- docs/developers/clients/javascript.md | 14 +- .../prerequisites/environment-setup.md | 53 +-- docs/developers/prerequisites/welcome.md | 2 +- docs/developers/technology/open-source.md | 2 +- docs/developers/technology/tech-stack.md | 2 +- docs/package.json | 6 +- docs/product/getting-started/features.md | 2 +- docs/product/getting-started/introduction.md | 2 +- docs/product/getting-started/setup.md | 2 +- docs/product/getting-started/terminology.md | 1 - docs/product/guides/adding-locations.md | 12 +- docs/product/guides/connecting-nodes.md | 7 +- docs/product/guides/converting-files.md | 2 +- docs/product/guides/creating-spaces.md | 2 +- docs/product/guides/discover-duplicates.md | 2 +- docs/product/guides/file-viewer.md | 2 +- docs/product/guides/generating-thumbails.md | 2 +- docs/product/guides/library-setup.md | 3 +- docs/product/guides/managing-jobs.md | 2 +- docs/product/guides/managing-tags.md | 2 +- docs/product/guides/photo-albums.md | 2 +- docs/product/resources/privacy.md | 2 +- docs/product/resources/security.md | 2 +- lefthook.yml | 2 +- package.json | 2 +- packages/client/src/core.ts | 395 ++++++++++++++---- packages/interface/package.json | 188 ++++----- packages/interface/src/AppRouter.tsx | 7 +- .../src/components/explorer/FileThumb.tsx | 5 +- .../src/components/explorer/Inspector.tsx | 15 +- .../components/explorer/VirtualizedList.tsx | 7 +- packages/interface/src/style.scss | 26 +- turbo.json | 26 +- 78 files changed, 1366 insertions(+), 897 deletions(-) create mode 100644 .prettierignore delete mode 100644 .prettierrc.json 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/.prettierrc.json b/.prettierrc.json deleted file mode 100644 index 3e5b2cdae..000000000 --- a/.prettierrc.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "pluginSearchDirs": [ - "." - ], - "useTabs": true, - "printWidth": 100, - "singleQuote": true, - "trailingComma": "none", - "bracketSameLine": false, - "semi": true, - "quoteProps": "consistent", - "importOrder": [ - "^[./]", - "^@sd/ui/(.*)$", - "^@sd/client/(.*)$", - "^@sd/interface/(.*)$" - ], - "importOrderSeparation": true, - "importOrderSortSpecifiers": true -} 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/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/src/types/bindings.ts b/apps/mobile/src/types/bindings.ts index 5ad4ffda2..7baccfece 100644 --- a/apps/mobile/src/types/bindings.ts +++ b/apps/mobile/src/types/bindings.ts @@ -2,111 +2,358 @@ // This file was generated by [rspc](https://github.com/oscartbeaumont/rspc). Do not edit this file manually. 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 } + 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/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/crates/ffmpeg/README.md b/crates/ffmpeg/README.md index 66f535fd6..a3e205406 100644 --- a/crates/ffmpeg/README.md +++ b/crates/ffmpeg/README.md @@ -1,6 +1,6 @@ # FFMPEG Thumbnailer RS -Rust implementation of a thumbnail generation for video files using ffmpeg. +Rust implementation of a thumbnail generation for video files using ffmpeg. Based on https://github.com/dirkvdb/ffmpegthumbnailer For now only implements the minimum API for Spacedrive needs. PRs are welcome @@ -32,8 +32,8 @@ async fn main() -> 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/README.md b/crates/p2p/README.md index fd14d11a8..3921329d6 100644 --- a/crates/p2p/README.md +++ b/crates/p2p/README.md @@ -6,4 +6,4 @@ This is the P2P library which powers Spacedrive's P2P functionality. ```bash RUST_LOG="p2p=debug" cargo run -p server -``` \ No newline at end of file +``` diff --git a/crates/p2p/docs-wip/index.md b/crates/p2p/docs-wip/index.md index 861d4834c..a55446488 100644 --- a/crates/p2p/docs-wip/index.md +++ b/crates/p2p/docs-wip/index.md @@ -4,7 +4,7 @@ This document outlines the peer to peer protocol used by the Spacedrive desktop ## Concepts - - **Peer** - TODO +- **Peer** - TODO ### P2PManager @@ -34,7 +34,7 @@ To discovery other machines running Spacedrive over your local network, we make Spacedrive advertise a SRV record that looks like: -_{peer_id}_spacedrive_._udp_.local. 86400 IN SRV 10 5 5223 server.example.com. +_{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. @@ -58,24 +58,11 @@ TODO 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 - - - +- [QUIC]() - A tcp-like protocol built on top of UDP. QUIC also supports [TLS 1.3]() for encryption and pro ## Pairing @@ -83,5 +70,5 @@ TODO # External Resources - - TODO: Magic Wormhole talk - - TODO: Syncthing spec +- TODO: Magic Wormhole talk +- TODO: Syncthing spec diff --git a/crates/p2p/tunnel/README.md b/crates/p2p/tunnel/README.md index b7cea7f33..89d5eb4e1 100644 --- a/crates/p2p/tunnel/README.md +++ b/crates/p2p/tunnel/README.md @@ -9,4 +9,4 @@ TODO: Write some docs ```bash cargo run -p tunnel --bin generate-env cargo run -p tunnel -``` \ No newline at end of file +``` 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 2cd744da4..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.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" - } + "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/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 ( -