diff --git a/Cargo.lock b/Cargo.lock index 1207669..828198a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -53,7 +53,6 @@ version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "getrandom 0.2.15 (registry+https://github.com/rust-lang/crates.io-index)", "once_cell 1.19.0 (registry+https://github.com/rust-lang/crates.io-index)", "version_check 0.9.4 (registry+https://github.com/rust-lang/crates.io-index)", "zerocopy 0.7.34 (registry+https://github.com/rust-lang/crates.io-index)", @@ -185,7 +184,6 @@ dependencies = [ "msa 2.0.0", "query 2.0.0", "reqwest 0.12.5 (registry+https://github.com/rust-lang/crates.io-index)", - "rspc 0.1.2", "serde 1.0.203 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.119 (registry+https://github.com/rust-lang/crates.io-index)", "specta 2.0.0-rc.13 (registry+https://github.com/rust-lang/crates.io-index)", @@ -221,11 +219,6 @@ dependencies = [ "x11rb 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "arrayvec" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "ascii" version = "0.9.3" @@ -366,26 +359,6 @@ dependencies = [ "windows-sys 0.52.0 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "async-stream" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "async-stream-impl 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-core 0.3.30 (registry+https://github.com/rust-lang/crates.io-index)", - "pin-project-lite 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "async-stream-impl" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro2 1.0.86 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.36 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 2.0.68 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "async-task" version = "4.7.1" @@ -401,19 +374,6 @@ dependencies = [ "syn 2.0.68 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "async-tungstenite" -version = "0.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "futures-io 0.3.30 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util 0.3.30 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.22 (registry+https://github.com/rust-lang/crates.io-index)", - "pin-project-lite 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 1.38.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tungstenite 0.18.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "atk" version = "0.15.1" @@ -464,54 +424,6 @@ name = "autocfg" version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "aws_lambda_events" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "base64 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "chrono 0.4.38 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)", - "http-body 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "http-serde 1.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "query_map 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.203 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.203 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.119 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "axum" -version = "0.6.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "async-trait 0.1.80 (registry+https://github.com/rust-lang/crates.io-index)", - "axum-core 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "bitflags 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util 0.3.30 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)", - "http-body 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper 0.14.29 (registry+https://github.com/rust-lang/crates.io-index)", - "itoa 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)", - "matchit 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.7.4 (registry+https://github.com/rust-lang/crates.io-index)", - "mime 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)", - "percent-encoding 2.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "pin-project-lite 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", - "rustversion 1.0.17 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.203 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.119 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_path_to_error 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_urlencoded 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "sync_wrapper 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 1.38.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tower 0.4.13 (registry+https://github.com/rust-lang/crates.io-index)", - "tower-layer 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tower-service 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "axum" version = "0.7.5" @@ -549,22 +461,6 @@ dependencies = [ "tracing 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "axum-core" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "async-trait 0.1.80 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util 0.3.30 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)", - "http-body 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "mime 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)", - "rustversion 1.0.17 (registry+https://github.com/rust-lang/crates.io-index)", - "tower-layer 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tower-service 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "axum-core" version = "0.4.3" @@ -651,11 +547,6 @@ name = "base64" version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "base64" -version = "0.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "base64" version = "0.21.7" @@ -724,17 +615,6 @@ name = "bitflags" version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "bitvec" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "funty 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "radium 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tap 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "wyz 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "block" version = "0.1.6" @@ -795,26 +675,6 @@ dependencies = [ "alloc-stdlib 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "bson" -version = "2.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "ahash 0.8.11 (registry+https://github.com/rust-lang/crates.io-index)", - "base64 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", - "bitvec 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "hex 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "indexmap 2.2.6 (registry+https://github.com/rust-lang/crates.io-index)", - "js-sys 0.3.69 (registry+https://github.com/rust-lang/crates.io-index)", - "once_cell 1.19.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.8.5 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.203 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_bytes 0.11.15 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.119 (registry+https://github.com/rust-lang/crates.io-index)", - "time 0.3.36 (registry+https://github.com/rust-lang/crates.io-index)", - "uuid 1.9.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "bstr" version = "1.9.1" @@ -872,11 +732,6 @@ dependencies = [ "serde 1.0.203 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "bytesize" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "bzip2" version = "0.4.4" @@ -1053,26 +908,6 @@ dependencies = [ "windows-targets 0.52.5 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "chrono-tz" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "chrono 0.4.38 (registry+https://github.com/rust-lang/crates.io-index)", - "chrono-tz-build 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "phf 0.11.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "chrono-tz-build" -version = "0.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "parse-zoneinfo 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "phf 0.11.2 (registry+https://github.com/rust-lang/crates.io-index)", - "phf_codegen 0.11.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "chunked_transfer" version = "1.5.0" @@ -1248,7 +1083,6 @@ dependencies = [ "prisma-client-rust 0.6.8 (git+https://github.com/Brendonovich/prisma-client-rust?rev=4f9ef9d)", "query 2.0.0", "reqwest 0.12.5 (registry+https://github.com/rust-lang/crates.io-index)", - "rspc 0.1.2", "serde 1.0.203 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.119 (registry+https://github.com/rust-lang/crates.io-index)", "specta 2.0.0-rc.13 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1316,16 +1150,6 @@ dependencies = [ "unicode-segmentation 1.11.0 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "cookie" -version = "0.16.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "percent-encoding 2.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "time 0.3.36 (registry+https://github.com/rust-lang/crates.io-index)", - "version_check 0.9.4 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "core-foundation" version = "0.9.4" @@ -1775,14 +1599,6 @@ dependencies = [ "serde_json 1.0.119 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "document-features" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "litrs 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "dotenvy" version = "0.15.7" @@ -2113,11 +1929,6 @@ name = "fuchsia-zircon-sys" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "funty" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "futf" version = "0.1.5" @@ -2409,11 +2220,6 @@ dependencies = [ "url 2.5.2 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "glam" -version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "glib" version = "0.15.12" @@ -2797,15 +2603,6 @@ name = "http-range" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "http-serde" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "http 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.203 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "httparse" version = "1.9.4" @@ -2821,27 +2618,6 @@ name = "httpdate" version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "httpz" -version = "0.0.3" -source = "git+https://github.com/oscartbeaumont/httpz.git?rev=a5020adecb15b55d84a8330b4680eba82fa6b820#a5020adecb15b55d84a8330b4680eba82fa6b820" -dependencies = [ - "async-tungstenite 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)", - "axum 0.6.20 (registry+https://github.com/rust-lang/crates.io-index)", - "base64 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cookie 0.16.2 (registry+https://github.com/rust-lang/crates.io-index)", - "form_urlencoded 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.3.30 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper 0.14.29 (registry+https://github.com/rust-lang/crates.io-index)", - "lambda_http 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "sha1 0.10.6 (registry+https://github.com/rust-lang/crates.io-index)", - "thiserror 1.0.61 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 1.38.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tower 0.4.13 (registry+https://github.com/rust-lang/crates.io-index)", - "worker 0.0.12 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "hyper" version = "0.13.10" @@ -3087,11 +2863,6 @@ dependencies = [ "serde 1.0.203 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "indoc" -version = "1.0.9" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "indoc" version = "2.0.5" @@ -3162,11 +2933,6 @@ name = "ipnet" version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "ipnetwork" -version = "0.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "is-docker" version = "0.2.0" @@ -3374,57 +3140,6 @@ dependencies = [ "selectors 0.22.0 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "lambda_http" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "aws_lambda_events 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "base64 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "encoding_rs 0.8.34 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)", - "http-body 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper 0.14.29 (registry+https://github.com/rust-lang/crates.io-index)", - "lambda_runtime 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "mime 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)", - "percent-encoding 2.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.203 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.119 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_urlencoded 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "url 2.5.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "lambda_runtime" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "async-stream 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.3.30 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper 0.14.29 (registry+https://github.com/rust-lang/crates.io-index)", - "lambda_runtime_api_client 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.203 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.119 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 1.38.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-stream 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", - "tower 0.4.13 (registry+https://github.com/rust-lang/crates.io-index)", - "tracing 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "lambda_runtime_api_client" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "http 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper 0.14.29 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 1.38.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tower-service 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "lazy-regex" version = "3.1.0" @@ -3531,11 +3246,6 @@ name = "linux-raw-sys" version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "litrs" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "lock_api" version = "0.4.12" @@ -3625,15 +3335,6 @@ dependencies = [ "time 0.3.36 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "mac_address" -version = "1.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "nix 0.28.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "mach" version = "0.3.2" @@ -3700,11 +3401,6 @@ name = "matches" version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "matchit" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "matchit" version = "0.7.3" @@ -4059,7 +3755,6 @@ dependencies = [ "cfg-if 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "cfg_aliases 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.155 (registry+https://github.com/rust-lang/crates.io-index)", - "memoffset 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -4575,14 +4270,6 @@ dependencies = [ "windows-targets 0.52.5 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "parse-zoneinfo" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "regex 1.10.5 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "parser-database" version = "0.1.0" @@ -4724,15 +4411,6 @@ dependencies = [ "phf_shared 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "phf_codegen" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "phf_generator 0.11.2 (registry+https://github.com/rust-lang/crates.io-index)", - "phf_shared 0.11.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "phf_generator" version = "0.8.0" @@ -4807,7 +4485,6 @@ version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "siphasher 0.3.11 (registry+https://github.com/rust-lang/crates.io-index)", - "uncased 0.9.10 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -4971,7 +4648,6 @@ dependencies = [ "psl 0.1.0 (git+https://github.com/Brendonovich/prisma-engines?branch=5.1.0-patched)", "query-core 0.1.0 (git+https://github.com/Brendonovich/prisma-engines?branch=5.1.0-patched)", "request-handlers 0.1.0 (git+https://github.com/Brendonovich/prisma-engines?branch=5.1.0-patched)", - "rspc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "schema-core 0.1.0 (git+https://github.com/Brendonovich/prisma-engines?branch=5.1.0-patched)", "serde 1.0.203 (registry+https://github.com/rust-lang/crates.io-index)", "serde-value 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -5335,16 +5011,6 @@ dependencies = [ "tracing-subscriber 0.3.18 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "query_map" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "form_urlencoded 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.203 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.203 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "quick-xml" version = "0.31.0" @@ -5414,11 +5080,6 @@ dependencies = [ "proc-macro2 1.0.86 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "radium" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "radix_trie" version = "0.2.1" @@ -5787,36 +5448,6 @@ dependencies = [ "windows-sys 0.52.0 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "rspc" -version = "0.1.2" -dependencies = [ - "async-stream 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.3.30 (registry+https://github.com/rust-lang/crates.io-index)", - "httpz 0.0.3 (git+https://github.com/oscartbeaumont/httpz.git?rev=a5020adecb15b55d84a8330b4680eba82fa6b820)", - "serde 1.0.203 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.119 (registry+https://github.com/rust-lang/crates.io-index)", - "specta 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tauri 1.6.8 (registry+https://github.com/rust-lang/crates.io-index)", - "thiserror 1.0.61 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 1.38.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tracing 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", - "worker 0.0.12 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rspc" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "futures 0.3.30 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.203 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.119 (registry+https://github.com/rust-lang/crates.io-index)", - "specta 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "thiserror 1.0.61 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 1.38.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "rusqlite" version = "0.29.0" @@ -5831,15 +5462,6 @@ dependencies = [ "smallvec 1.13.2 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "rust_decimal" -version = "1.35.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "arrayvec 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.19 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "rustc-demangle" version = "0.1.24" @@ -6106,14 +5728,6 @@ dependencies = [ "serde 1.0.203 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "serde_bytes" -version = "0.11.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "serde 1.0.203 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "serde_derive" version = "1.0.203" @@ -6437,35 +6051,6 @@ dependencies = [ "system-deps 5.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "specta" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bigdecimal 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "bit-vec 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", - "bson 2.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "bytesize 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "chrono 0.4.38 (registry+https://github.com/rust-lang/crates.io-index)", - "document-features 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "glam 0.22.0 (registry+https://github.com/rust-lang/crates.io-index)", - "indexmap 1.9.3 (registry+https://github.com/rust-lang/crates.io-index)", - "indoc 1.0.9 (registry+https://github.com/rust-lang/crates.io-index)", - "ipnetwork 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)", - "mac_address 1.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "once_cell 1.19.0 (registry+https://github.com/rust-lang/crates.io-index)", - "paste 1.0.15 (registry+https://github.com/rust-lang/crates.io-index)", - "rust_decimal 1.35.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.203 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.119 (registry+https://github.com/rust-lang/crates.io-index)", - "specta-macros 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "thiserror 1.0.61 (registry+https://github.com/rust-lang/crates.io-index)", - "time 0.3.36 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 1.38.0 (registry+https://github.com/rust-lang/crates.io-index)", - "uhlc 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "uuid 1.9.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "specta" version = "2.0.0-rc.13" @@ -6481,19 +6066,6 @@ dependencies = [ "uuid 1.9.1 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "specta-macros" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "Inflector 0.11.4 (registry+https://github.com/rust-lang/crates.io-index)", - "itertools 0.10.5 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 1.0.86 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.36 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.109 (registry+https://github.com/rust-lang/crates.io-index)", - "termcolor 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "specta-macros" version = "2.0.0-rc.13" @@ -6851,11 +6423,6 @@ dependencies = [ "syn 1.0.109 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "tap" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "tar" version = "0.4.41" @@ -7583,24 +7150,6 @@ dependencies = [ "toml 0.8.14 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "tungstenite" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "base64 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)", - "httparse 1.9.4 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.22 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.8.5 (registry+https://github.com/rust-lang/crates.io-index)", - "sha1 0.10.6 (registry+https://github.com/rust-lang/crates.io-index)", - "thiserror 1.0.61 (registry+https://github.com/rust-lang/crates.io-index)", - "url 2.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "utf-8 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "tungstenite" version = "0.20.1" @@ -7675,25 +7224,6 @@ dependencies = [ "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "uhlc" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "hex 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.203 (registry+https://github.com/rust-lang/crates.io-index)", - "spin 0.9.8 (registry+https://github.com/rust-lang/crates.io-index)", - "uuid 1.9.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "uncased" -version = "0.9.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "version_check 0.9.4 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "unicase" version = "2.7.0" @@ -7965,18 +7495,6 @@ name = "wasm-bindgen-shared" version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "wasm-streams" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "futures-util 0.3.30 (registry+https://github.com/rust-lang/crates.io-index)", - "js-sys 0.3.69 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen 0.2.92 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-futures 0.4.42 (registry+https://github.com/rust-lang/crates.io-index)", - "web-sys 0.3.69 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "wasm-streams" version = "0.4.0" @@ -8137,7 +7655,6 @@ dependencies = [ "lazy_static 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.22 (registry+https://github.com/rust-lang/crates.io-index)", "midlog 2.0.0", - "rspc 0.1.2", "serde 1.0.203 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.119 (registry+https://github.com/rust-lang/crates.io-index)", "tauri 1.6.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -8681,71 +8198,6 @@ dependencies = [ "wayland-protocols-wlr 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "worker" -version = "0.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "async-trait 0.1.80 (registry+https://github.com/rust-lang/crates.io-index)", - "chrono 0.4.38 (registry+https://github.com/rust-lang/crates.io-index)", - "chrono-tz 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-channel 0.3.30 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-util 0.3.30 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)", - "js-sys 0.3.69 (registry+https://github.com/rust-lang/crates.io-index)", - "matchit 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "pin-project 1.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.203 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.119 (registry+https://github.com/rust-lang/crates.io-index)", - "url 2.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen 0.2.92 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-futures 0.4.42 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-streams 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "web-sys 0.3.69 (registry+https://github.com/rust-lang/crates.io-index)", - "worker-kv 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "worker-macros 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "worker-sys 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "worker-kv" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "js-sys 0.3.69 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.203 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.119 (registry+https://github.com/rust-lang/crates.io-index)", - "thiserror 1.0.61 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen 0.2.92 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-futures 0.4.42 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "worker-macros" -version = "0.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "async-trait 0.1.80 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 1.0.86 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.36 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.109 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen 0.2.92 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-futures 0.4.42 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-macro-support 0.2.92 (registry+https://github.com/rust-lang/crates.io-index)", - "worker-sys 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "worker-sys" -version = "0.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "cfg-if 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "js-sys 0.3.69 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen 0.2.92 (registry+https://github.com/rust-lang/crates.io-index)", - "web-sys 0.3.69 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "wormhole" version = "2.0.0" @@ -8799,7 +8251,6 @@ dependencies = [ "plugins 2.0.0", "query 2.0.0", "reqwest 0.12.5 (registry+https://github.com/rust-lang/crates.io-index)", - "rspc 0.1.2", "serde 1.0.203 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.119 (registry+https://github.com/rust-lang/crates.io-index)", "specta 2.0.0-rc.13 (registry+https://github.com/rust-lang/crates.io-index)", @@ -8860,14 +8311,6 @@ dependencies = [ "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "wyz" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "tap 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "x11" version = "2.21.0" @@ -9155,7 +8598,6 @@ dependencies = [ "checksum anyhow 1.0.86 (registry+https://github.com/rust-lang/crates.io-index)" = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" "checksum arbitrary 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" "checksum arboard 3.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9fb4009533e8ff8f1450a5bcbc30f4242a1d34442221f72314bea1f5dc9c7f89" -"checksum arrayvec 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)" = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" "checksum ascii 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "eab1c04a571841102f5345a8fc0f6bb3d31c315dec879b5c6e42e40ce7ffa34e" "checksum ascii 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d92bec98840b8f03a5ff5413de5293bfcd8bf96467cf5452609f939ec6f5de16" "checksum async-broadcast 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "20cd0e2e25ea8e5f7e9df04578dc6cf5c83577fd09b1a46aaf5c85e1c33f2a7e" @@ -9168,20 +8610,14 @@ dependencies = [ "checksum async-process 2.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "f7eda79bbd84e29c2b308d1dc099d7de8dcc7035e48f4bf5dc4a531a44ff5e2a" "checksum async-recursion 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" "checksum async-signal 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "794f185324c2f00e771cd9f1ae8b5ac68be2ca7abb129a87afd6e86d228bc54d" -"checksum async-stream 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" -"checksum async-stream-impl 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" "checksum async-task 4.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" "checksum async-trait 0.1.80 (registry+https://github.com/rust-lang/crates.io-index)" = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" -"checksum async-tungstenite 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8e6acf7e4a267eecbb127ed696bb2d50572c22ba7f586a646321e1798d8336a1" "checksum atk 0.15.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2c3d816ce6f0e2909a96830d6911c2aff044370b1ef92d7f267b43bae5addedd" "checksum atk-sys 0.15.1 (registry+https://github.com/rust-lang/crates.io-index)" = "58aeb089fb698e06db8089971c7ee317ab9644bade33383f63631437b03aafb6" "checksum atomic-shim 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "67cd4b51d303cf3501c301e8125df442128d3c6d7c69f71b27833d253de47e77" "checksum atomic-waker 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" "checksum autocfg 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" -"checksum aws_lambda_events 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "d376097ccf49a2699d554558267b2735f62ce94ee1840a9f73253ad7c26fbaa7" -"checksum axum 0.6.20 (registry+https://github.com/rust-lang/crates.io-index)" = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf" "checksum axum 0.7.5 (registry+https://github.com/rust-lang/crates.io-index)" = "3a6c9af12842a67734c9a2e355436e5d03b22383ed60cf13cd0c18fbfe3dcbcf" -"checksum axum-core 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c" "checksum axum-core 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a15c63fd72d41492dc4f497196f5da1fb04fb7529e631d73630d1b491e47a2e3" "checksum axum-macros 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "00c055ee2d014ae5981ce1016374e8213682aa14d9bf40e48ab48b5f3ef20eaa" "checksum backtrace 0.3.73 (registry+https://github.com/rust-lang/crates.io-index)" = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a" @@ -9189,7 +8625,6 @@ dependencies = [ "checksum base36 0.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b9c26bddc1271f7112e5ec797e8eeba6de2de211c1488e506b9500196dbf77c5" "checksum base64 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" "checksum base64 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" -"checksum base64 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0ea22880d78093b0cbe17c89f64a7d457941e65759157ec6cb31a31d652b05e5" "checksum base64 0.21.7 (registry+https://github.com/rust-lang/crates.io-index)" = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" "checksum base64 0.22.1 (registry+https://github.com/rust-lang/crates.io-index)" = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" "checksum bigdecimal 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a6773ddc0eafc0e509fb60e48dff7f450f8e674a0686ae8605e8d9901bd5eefa" @@ -9198,7 +8633,6 @@ dependencies = [ "checksum bit-vec 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" "checksum bitflags 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" "checksum bitflags 2.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" -"checksum bitvec 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" "checksum block 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" "checksum block-buffer 0.10.4 (registry+https://github.com/rust-lang/crates.io-index)" = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" "checksum block-buffer 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" @@ -9206,7 +8640,6 @@ dependencies = [ "checksum blocking 1.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" "checksum brotli 3.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d640d25bc63c50fb1f0b545ffd80207d2e10a4c965530809b40ba3386825c391" "checksum brotli-decompressor 2.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4e2e4afe60d7dd600fdd3de8d0f08c2b7ec039712e3b6137ff98b7004e82de4f" -"checksum bson 2.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d8a88e82b9106923b5c4d6edfca9e7db958d4e98a478ec115022e81b9b38e2c8" "checksum bstr 1.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "05efc5cfd9110c8416e471df0e96702d58690178e206e61b7173706673c93706" "checksum builtin-psl-connectors 0.1.0 (git+https://github.com/Brendonovich/prisma-engines?branch=5.1.0-patched)" = "" "checksum bumpalo 3.16.0 (registry+https://github.com/rust-lang/crates.io-index)" = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" @@ -9215,7 +8648,6 @@ dependencies = [ "checksum byteorder 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" "checksum bytes 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38" "checksum bytes 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" -"checksum bytesize 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a3e368af43e418a04d52505cf3dbc23dda4e3407ae2fa99fd0e4f308ce546acc" "checksum bzip2 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" "checksum bzip2-sys 0.1.11+1.0.8 (registry+https://github.com/rust-lang/crates.io-index)" = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" "checksum cairo-rs 0.15.12 (registry+https://github.com/rust-lang/crates.io-index)" = "c76ee391b03d35510d9fa917357c7f1855bd9a6659c95a1b392e33f49b3369bc" @@ -9236,8 +8668,6 @@ dependencies = [ "checksum chacha20 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818" "checksum chacha20poly1305 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "10cd79432192d1c0f4e1a0fef9527696cc039165d729fb41b3f4f4f354c2dc35" "checksum chrono 0.4.38 (registry+https://github.com/rust-lang/crates.io-index)" = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" -"checksum chrono-tz 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "29c39203181991a7dd4343b8005bd804e7a9a37afb8ac070e43771e8c820bbde" -"checksum chrono-tz-build 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6f509c3a87b33437b05e2458750a0700e5bdd6956176773e6c7d6dd15a283a0c" "checksum chunked_transfer 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6e4de3bc4ea267985becf712dc6d9eed8b04c953b3fcfb339ebc87acd9804901" "checksum cipher 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" "checksum clap 4.5.8 (registry+https://github.com/rust-lang/crates.io-index)" = "84b3edb18336f4df585bc9aa31dd99c036dfa5dc5e9a2939a722a188f3a8970d" @@ -9261,7 +8691,6 @@ dependencies = [ "checksum convert_case 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" "checksum convert_case 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fb4a24b1aaf0fd0ce8b45161144d6f42cd91677fd5940fd431183eb023b3a2b8" "checksum convert_case 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca" -"checksum cookie 0.16.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e859cd57d0710d9e06c381b550c06e76992472a8c6d527aecd2fc673dcc231fb" "checksum core-foundation 0.9.4 (registry+https://github.com/rust-lang/crates.io-index)" = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" "checksum core-foundation-sys 0.8.6 (registry+https://github.com/rust-lang/crates.io-index)" = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" "checksum core-graphics 0.22.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2581bbab3b8ffc6fcbd550bf46c355135d16e9ff2a6ea032ad6b9bf1d7efe4fb" @@ -9310,7 +8739,6 @@ dependencies = [ "checksum dissimilar 1.0.9 (registry+https://github.com/rust-lang/crates.io-index)" = "59f8e79d1fbf76bdfbde321e902714bf6c49df88a7dda6fc682fc2979226962d" "checksum dlib 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" "checksum dmmf 0.1.0 (git+https://github.com/Brendonovich/prisma-engines?branch=5.1.0-patched)" = "" -"checksum document-features 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "ef5282ad69563b5fc40319526ba27e0e7363d552a896f0297d54f767717f9b95" "checksum dotenvy 0.15.7 (registry+https://github.com/rust-lang/crates.io-index)" = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" "checksum downcast-rs 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" "checksum dtoa 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "56899898ce76aaf4a0f24d914c97ea6ed976d42fec6ad33fcbb0a1103e07b2b0" @@ -9355,7 +8783,6 @@ dependencies = [ "checksum form_urlencoded 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" "checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" "checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" -"checksum funty 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" "checksum futf 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "df420e2e84819663797d1ec6544b13c5be84629e7bb00dc960d6917db2987843" "checksum futures 0.3.30 (registry+https://github.com/rust-lang/crates.io-index)" = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" "checksum futures-channel 0.3.30 (registry+https://github.com/rust-lang/crates.io-index)" = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" @@ -9384,7 +8811,6 @@ dependencies = [ "checksum gio 0.15.12 (registry+https://github.com/rust-lang/crates.io-index)" = "68fdbc90312d462781a395f7a16d96a2b379bb6ef8cd6310a2df272771c4283b" "checksum gio-sys 0.15.10 (registry+https://github.com/rust-lang/crates.io-index)" = "32157a475271e2c4a023382e9cab31c4584ee30a97da41d3c4e9fdd605abcf8d" "checksum git2 0.18.3 (registry+https://github.com/rust-lang/crates.io-index)" = "232e6a7bfe35766bf715e55a88b39a700596c0ccfd88cd3680b4cdb40d66ef70" -"checksum glam 0.22.0 (registry+https://github.com/rust-lang/crates.io-index)" = "12f597d56c1bd55a811a1be189459e8fad2bbc272616375602443bdfb37fa774" "checksum glib 0.15.12 (registry+https://github.com/rust-lang/crates.io-index)" = "edb0306fbad0ab5428b0ca674a23893db909a98582969c9b537be4ced78c505d" "checksum glib-macros 0.15.13 (registry+https://github.com/rust-lang/crates.io-index)" = "10c6ae9f6fa26f4fb2ac16b528d138d971ead56141de489f8111e259b9df3c4a" "checksum glib-sys 0.15.10 (registry+https://github.com/rust-lang/crates.io-index)" = "ef4b192f8e65e9cf76cbf4ea71fa8e3be4a0e18ffe3d68b8da6836974cc5bad4" @@ -9419,11 +8845,9 @@ dependencies = [ "checksum http-body 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643" "checksum http-body-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" "checksum http-range 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "21dec9db110f5f872ed9699c3ecf50cf16f423502706ba5c72462e28d3157573" -"checksum http-serde 1.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6f560b665ad9f1572cfcaf034f7fb84338a7ce945216d64a90fd81f046a3caee" "checksum httparse 1.9.4 (registry+https://github.com/rust-lang/crates.io-index)" = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" "checksum httpdate 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "494b4d60369511e7dea41cf646832512a94e542f68bb9c49e54518e0f468eb47" "checksum httpdate 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" -"checksum httpz 0.0.3 (git+https://github.com/oscartbeaumont/httpz.git?rev=a5020adecb15b55d84a8330b4680eba82fa6b820)" = "" "checksum hyper 0.13.10 (registry+https://github.com/rust-lang/crates.io-index)" = "8a6f157065790a3ed2f88679250419b5cdd96e714a0d65f7797fd337186e96bb" "checksum hyper 0.14.29 (registry+https://github.com/rust-lang/crates.io-index)" = "f361cde2f109281a220d4307746cdfd5ee3f410da58a70377762396775634b33" "checksum hyper 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "fe575dd17d0862a9a33781c8c4696a55c320909004a67a00fb286ba8b1bc496d" @@ -9443,14 +8867,12 @@ dependencies = [ "checksum include_dir_macros 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)" = "7cab85a7ed0bd5f0e76d93846e0147172bed2e2d3f859bcc33a8d9699cad1a75" "checksum indexmap 1.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" "checksum indexmap 2.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" -"checksum indoc 1.0.9 (registry+https://github.com/rust-lang/crates.io-index)" = "bfa799dd5ed20a7e349f3b4639aa80d74549c81716d9ec4f994c9b5815598306" "checksum indoc 2.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5" "checksum infer 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f551f8c3a39f68f986517db0d1759de85881894fdc7db798bd2a9df9cb04b7fc" "checksum inout 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" "checksum instant 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" "checksum iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" "checksum ipnet 2.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" -"checksum ipnetwork 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bf466541e9d546596ee94f9f69590f89473455f88372423e0008fc1a7daf100e" "checksum is-docker 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "928bae27f42bc99b60d9ac7334e3a21d10ad8f1835a4e12ec3ec0464765ed1b3" "checksum is-wsl 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "173609498df190136aa7dea1a91db051746d339e18476eed5ca40521f02d7aa5" "checksum is_terminal_polyfill 1.70.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800" @@ -9472,9 +8894,6 @@ dependencies = [ "checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" "checksum keyvalues-parser 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7e4c8354918309196302015ac9cae43362f1a13d0d5c5539a33b4c2fd2cd6d25" "checksum kuchikiki 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f29e4755b7b995046f510a7520c42b2fed58b77bd94d5a87a8eb43d2fd126da8" -"checksum lambda_http 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "16fd842ce9fc6908f1688030cf8b6841e2009bd874eb21244f124570ac06264f" -"checksum lambda_runtime 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "bd32d5799db2155ae4d47116bb3e169b59f531ced4d5762a10c2125bdd2bf134" -"checksum lambda_runtime_api_client 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7210012be904051520f0dc502140ba599bae3042b65b3737b87727f1aa88a7d6" "checksum lazy-regex 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5d12be4595afdf58bd19e4a9f4e24187da2a66700786ff660a418e9059937a4c" "checksum lazy-regex-proc_macros 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "44bcd58e6c97a7fcbaffcdc95728b393b8d98933bfadad49ed4097845b57ef0b" "checksum lazy_static 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" @@ -9487,7 +8906,6 @@ dependencies = [ "checksum libssh2-sys 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2dc8a030b787e2119a731f1951d6a773e2280c660f8ec4b0f5e1505a386e71ee" "checksum libz-sys 1.1.18 (registry+https://github.com/rust-lang/crates.io-index)" = "c15da26e5af7e25c90b37a2d75cdbf940cf4a55316de9d84c679c9b8bfabf82e" "checksum linux-raw-sys 0.4.14 (registry+https://github.com/rust-lang/crates.io-index)" = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" -"checksum litrs 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b4ce301924b7887e9d637144fdade93f9dfff9b60981d4ac161db09720d39aa5" "checksum lock_api 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)" = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" "checksum lockfree-object-pool 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "9374ef4228402d4b7e403e5838cb880d9ee663314b0a900d5a6aabf0c213552e" "checksum log 0.4.22 (registry+https://github.com/rust-lang/crates.io-index)" = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" @@ -9498,14 +8916,12 @@ dependencies = [ "checksum lzma-sys 0.1.20 (registry+https://github.com/rust-lang/crates.io-index)" = "5fda04ab3764e6cde78b9974eec4f779acaba7c4e84b36eca3cf77c581b85d27" "checksum mac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" "checksum mac-notification-sys 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "51fca4d74ff9dbaac16a01b924bc3693fa2bba0862c2c633abc73f9a8ea21f64" -"checksum mac_address 1.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "8836fae9d0d4be2c8b4efcdd79e828a2faa058a90d005abf42f91cac5493a08e" "checksum mach 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b823e83b2affd8f40a9ee8c29dbc56404c1e34cd2710921f2801e2cf29527afa" "checksum malloc_buf 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" "checksum markup5ever 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a2629bb1404f3d34c2e921f21fd34ba00b206124c81f65c50b43b6aaefeb016" "checksum match_cfg 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4" "checksum matchers 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" "checksum matches 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" -"checksum matchit 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "9376a4f0340565ad675d11fc1419227faf5f60cd7ac9cb2e7185a471f30af833" "checksum matchit 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" "checksum memchr 2.7.4 (registry+https://github.com/rust-lang/crates.io-index)" = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" "checksum memoffset 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" @@ -9591,7 +9007,6 @@ dependencies = [ "checksum parking_lot 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)" = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" "checksum parking_lot_core 0.8.6 (registry+https://github.com/rust-lang/crates.io-index)" = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" "checksum parking_lot_core 0.9.10 (registry+https://github.com/rust-lang/crates.io-index)" = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" -"checksum parse-zoneinfo 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1f2a05b18d44e2957b88f96ba460715e295bc1d7510468a2f3d3b44535d26c24" "checksum parser-database 0.1.0 (git+https://github.com/Brendonovich/prisma-engines?branch=5.1.0-patched)" = "" "checksum paste 1.0.15 (registry+https://github.com/rust-lang/crates.io-index)" = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" "checksum pathdiff 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" @@ -9607,7 +9022,6 @@ dependencies = [ "checksum phf 0.11.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" "checksum phf 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3dfb61232e34fcb633f43d12c58f83c1df82962dcdfa565a4e866ffc17dafe12" "checksum phf_codegen 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4fb1c3a8bc4dd4e5cfce29b44ffc14bedd2ee294559a294e2a4d4c9e9a6a13cd" -"checksum phf_codegen 0.11.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e8d39688d359e6b34654d328e262234662d16cc0f60ec8dcbe5e718709342a5a" "checksum phf_codegen 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cbffee61585b0411840d3ece935cce9cb6321f01c45477d30066498cd5e1a815" "checksum phf_generator 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6" "checksum phf_generator 0.11.2 (registry+https://github.com/rust-lang/crates.io-index)" = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" @@ -9654,14 +9068,12 @@ dependencies = [ "checksum query-connector 0.1.0 (git+https://github.com/Brendonovich/prisma-engines?branch=5.1.0-patched)" = "" "checksum query-core 0.1.0 (git+https://github.com/Brendonovich/prisma-engines?branch=5.1.0-patched)" = "" "checksum query-engine-metrics 0.1.0 (git+https://github.com/Brendonovich/prisma-engines?branch=5.1.0-patched)" = "" -"checksum query_map 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4465aacac3bebc9484cf7a56dc8b2d7feacb657da6002a9198b4f7af4247a204" "checksum quick-xml 0.31.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1004a344b30a54e2ee58d66a71b32d2db2feb0a31f9a2d302bf0536f15de2a33" "checksum quick-xml 0.32.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d3a6e5838b60e0e8fa7a43f22ade549a37d61f8bdbe636d0d7816191de969c2" "checksum quinn 0.11.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e4ceeeeabace7857413798eb1ffa1e9c905a9946a57d81fb69b4b71c4d8eb3ad" "checksum quinn-proto 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddf517c03a109db8100448a4be38d498df8a210a99fe0e1b9eaf39e78c640efe" "checksum quinn-udp 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9096629c45860fc7fb143e125eb826b5e721e10be3263160c7d60ca832cf8c46" "checksum quote 1.0.36 (registry+https://github.com/rust-lang/crates.io-index)" = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" -"checksum radium 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" "checksum radix_trie 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c069c179fcdc6a2fe24d8d18305cf085fdbd4f922c041943e203685d6a1c58fd" "checksum rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" "checksum rand 0.8.5 (registry+https://github.com/rust-lang/crates.io-index)" = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" @@ -9690,9 +9102,7 @@ dependencies = [ "checksum reqwest 0.12.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c7d6d2a27d57148378eb5e111173f4276ad26340ecc5c49a4a2152167a2d6a37" "checksum rfd 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0149778bd99b6959285b0933288206090c50e2327f47a9c463bfdbf45c8823ea" "checksum ring 0.17.8 (registry+https://github.com/rust-lang/crates.io-index)" = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" -"checksum rspc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7e058686e5fd778bae4f6e8ebae041dc58ce60479a686f11002d146c9e59c2ab" "checksum rusqlite 0.29.0 (registry+https://github.com/rust-lang/crates.io-index)" = "549b9d036d571d42e6e85d1c1425e2ac83491075078ca9a15be021c56b1641f2" -"checksum rust_decimal 1.35.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1790d1c4c0ca81211399e0e0af16333276f375209e71a37b67698a373db5b47a" "checksum rustc-demangle 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)" = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" "checksum rustc-hash 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" "checksum rustc_version 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" @@ -9721,7 +9131,6 @@ dependencies = [ "checksum semver 1.0.23 (registry+https://github.com/rust-lang/crates.io-index)" = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" "checksum serde 1.0.203 (registry+https://github.com/rust-lang/crates.io-index)" = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094" "checksum serde-value 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c" -"checksum serde_bytes 0.11.15 (registry+https://github.com/rust-lang/crates.io-index)" = "387cc504cb06bb40a96c8e04e951fe01854cf6bc921053c954e4a606d9675c6a" "checksum serde_derive 1.0.203 (registry+https://github.com/rust-lang/crates.io-index)" = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" "checksum serde_either 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "689643f4e7826ffcd227d2cc166bfdf5869750191ffe9fd593531e6ba351f2fb" "checksum serde_json 1.0.119 (registry+https://github.com/rust-lang/crates.io-index)" = "e8eddb61f0697cc3989c5d64b452f5488e2b8a60fd7d5076a3045076ffef8cb0" @@ -9755,9 +9164,7 @@ dependencies = [ "checksum socket2 0.5.7 (registry+https://github.com/rust-lang/crates.io-index)" = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" "checksum soup2 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b2b4d76501d8ba387cf0fefbe055c3e0a59891d09f0f995ae4e4b16f6b60f3c0" "checksum soup2-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "009ef427103fcb17f802871647a7fa6c60cbb654b4c4e4c0ac60a31c5f6dc9cf" -"checksum specta 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c2240c3aa020aa61d2c569087d213baafbb212f4ceb9de9dd162376ea6aa0fe3" "checksum specta 2.0.0-rc.13 (registry+https://github.com/rust-lang/crates.io-index)" = "4ebf48e468c721a5c988aaad26f671d749a2831cf92ef3fcc89b3ac033392c62" -"checksum specta-macros 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "4605306321c356e03873b8ee71d7592a5e7c508add325c3ed0677c16fdf1bcfb" "checksum specta-macros 2.0.0-rc.13 (registry+https://github.com/rust-lang/crates.io-index)" = "1dbb681fb9262be852c614fd7633b46081131fc63b445345b2d8f870ec751ac8" "checksum spin 0.9.8 (registry+https://github.com/rust-lang/crates.io-index)" = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" "checksum sql-ddl 0.1.0 (git+https://github.com/Brendonovich/prisma-engines?branch=5.1.0-patched)" = "" @@ -9788,7 +9195,6 @@ dependencies = [ "checksum system-deps 6.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349" "checksum tao 0.16.9 (registry+https://github.com/rust-lang/crates.io-index)" = "575c856fc21e551074869dcfaad8f706412bd5b803dfa0fbf6881c4ff4bfafab" "checksum tao-macros 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ec114582505d158b669b136e6851f85840c109819d77c42bb7c0709f727d18c2" -"checksum tap 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" "checksum tar 0.4.41 (registry+https://github.com/rust-lang/crates.io-index)" = "cb797dad5fb5b76fcf519e702f4a589483b5ef06567f160c392832c1f5e44909" "checksum target-lexicon 0.12.14 (registry+https://github.com/rust-lang/crates.io-index)" = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f" "checksum tauri 1.6.8 (registry+https://github.com/rust-lang/crates.io-index)" = "77567d2b3b74de4588d544147142d02297f3eaa171a25a065252141d8597a516" @@ -9849,15 +9255,12 @@ dependencies = [ "checksum tree_magic_mini 3.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "469a727cac55b41448315cc10427c069c618ac59bb6a4480283fcd811749bdc2" "checksum try-lock 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" "checksum trybuild 1.0.96 (registry+https://github.com/rust-lang/crates.io-index)" = "33a5f13f11071020bb12de7a16b925d2d58636175c20c11dc5f96cb64bb6c9b3" -"checksum tungstenite 0.18.0 (registry+https://github.com/rust-lang/crates.io-index)" = "30ee6ab729cd4cf0fd55218530c4522ed30b7b6081752839b68fcec8d0960788" "checksum tungstenite 0.20.1 (git+https://github.com/snapview/tungstenite-rs?rev=fc17f73)" = "" "checksum tungstenite 0.21.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9ef1a641ea34f399a848dea702823bbecfb4c486f911735368f1f137cb8257e1" "checksum tungstenite 0.23.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6e2e2ce1e47ed2994fd43b04c8f618008d4cabdd5ee34027cf14f9d918edd9c8" "checksum typenum 1.17.0 (registry+https://github.com/rust-lang/crates.io-index)" = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" "checksum ucd-trie 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" "checksum uds_windows 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" -"checksum uhlc 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "8d291a7454d390b753ef68df8145da18367e32883ec2fa863959f0aefb915cdb" -"checksum uncased 0.9.10 (registry+https://github.com/rust-lang/crates.io-index)" = "e1b88fcfe09e89d3866a5c11019378088af2d24c3fbd4f0543f96b479ec90697" "checksum unicase 2.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" "checksum unicode-bidi 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)" = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" "checksum unicode-ident 1.0.12 (registry+https://github.com/rust-lang/crates.io-index)" = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" @@ -9895,7 +9298,6 @@ dependencies = [ "checksum wasm-bindgen-macro 0.2.92 (registry+https://github.com/rust-lang/crates.io-index)" = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" "checksum wasm-bindgen-macro-support 0.2.92 (registry+https://github.com/rust-lang/crates.io-index)" = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" "checksum wasm-bindgen-shared 0.2.92 (registry+https://github.com/rust-lang/crates.io-index)" = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" -"checksum wasm-streams 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6bbae3363c08332cadccd13b67db371814cd214c2524020932f0804b8cf7c078" "checksum wasm-streams 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b65dc4c90b63b118468cf747d8bf3566c1913ef60be765b5730ead9e0a3ba129" "checksum wayland-backend 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "34e9e6b6d4a2bb4e7e69433e0b35c7923b95d4dc8503a84d25ec917a4bbfdf07" "checksum wayland-client 0.31.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1e63801c85358a431f986cffa74ba9599ff571fc5774ac113ed3b490c19a1133" @@ -9977,13 +9379,8 @@ dependencies = [ "checksum winreg 0.52.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5" "checksum winreg 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0120db82e8a1e0b9fb3345a539c478767c0048d842860994d96113d5b667bd69" "checksum wl-clipboard-rs 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "12b41773911497b18ca8553c3daaf8ec9fe9819caf93d451d3055f69de028adb" -"checksum worker 0.0.12 (registry+https://github.com/rust-lang/crates.io-index)" = "0ca55ce51b3bf01da5a20598af220c5d3abf91f1978a50a0620ef966c39e3180" -"checksum worker-kv 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "682cbd728f179cc810b2ab77a2534da817b973e190ab184ab8efe1058b0dba84" -"checksum worker-macros 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "1c29ce5a41f5e7e644bc683681b62aed3adac838e01d18eb4e02a4dc30d4ac69" -"checksum worker-sys 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "825732b9b6360d6b1f5f614248317826cebf4878e36f61ccc71ca9dd53de8b41" "checksum wry 0.24.10 (registry+https://github.com/rust-lang/crates.io-index)" = "00711278ed357350d44c749c286786ecac644e044e4da410d466212152383b45" "checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" -"checksum wyz 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" "checksum x11 2.21.0 (registry+https://github.com/rust-lang/crates.io-index)" = "502da5464ccd04011667b11c435cb992822c2c0dbde1770c988480d312a0db2e" "checksum x11-dl 2.21.0 (registry+https://github.com/rust-lang/crates.io-index)" = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" "checksum x11rb 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5d91ffca73ee7f68ce055750bf9f6eca0780b8c85eff9bc046a3b0da41755e12" diff --git a/Cargo.toml b/Cargo.toml index 9374cf8..aa0834c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -81,10 +81,9 @@ libc = "0.2.155" thiserror = "1.0.61" murmur2 = "0.1.0" serde_repr = "0.1.19" -rspc = { path = "./external/rspc", features = ["tauri", "axum"] } tungstenite = { features = ["rustls"], git = "https://github.com/snapview/tungstenite-rs", version = "0.20.1", rev = "fc17f73" } -prisma-client-rust = { git = "https://github.com/Brendonovich/prisma-client-rust", rev = "4f9ef9d", features = ["rspc", "specta", "sqlite"] } -prisma-client-rust-cli = { git = "https://github.com/Brendonovich/prisma-client-rust", rev = "4f9ef9d", features = ["rspc", "specta", "sqlite"] } +prisma-client-rust = { git = "https://github.com/Brendonovich/prisma-client-rust", rev = "4f9ef9d", features = ["specta", "sqlite"] } +prisma-client-rust-cli = { git = "https://github.com/Brendonovich/prisma-client-rust", rev = "4f9ef9d", features = ["specta", "sqlite"] } wormhole-cli = { path = "./apps/cli" } wormhole-gui = { path = "./apps/gui" } @@ -111,9 +110,6 @@ bindings = { path = "./apps/bindings" } commands = { path = "./crates/commands" } plugins = { path = "./crates/plugins" } -[patch."https://github.com/Brendonovich/prisma-client-rust"] -rspc = { path = "./external/rspc" } - [workspace] resolver = "2" @@ -143,5 +139,4 @@ members = [ "crates/plugins", "crates/pack", "tools/prisma", - "external/rspc", ] diff --git a/apps/gui/Cargo.toml b/apps/gui/Cargo.toml index 44a954f..c75c064 100644 --- a/apps/gui/Cargo.toml +++ b/apps/gui/Cargo.toml @@ -43,7 +43,6 @@ log.workspace = true mcmeta.workspace = true commands.workspace = true plugins.workspace = true -rspc.workspace = true [features] default = ["custom-protocol"] diff --git a/apps/webui/Cargo.toml b/apps/webui/Cargo.toml index 44fd1c4..4e7233e 100644 --- a/apps/webui/Cargo.toml +++ b/apps/webui/Cargo.toml @@ -36,5 +36,4 @@ futures-util.workspace = true tokio-util.workspace = true tokio-stream.workspace = true axumite.workspace = true -rspc.workspace = true commands.workspace = true diff --git a/crates/api/Cargo.toml b/crates/api/Cargo.toml index 68e4f69..4f84c3f 100644 --- a/crates/api/Cargo.toml +++ b/crates/api/Cargo.toml @@ -30,4 +30,3 @@ tracing.workspace = true install.workspace = true reqwest.workspace = true tokio-stream.workspace = true -rspc.workspace = true diff --git a/crates/commands/Cargo.toml b/crates/commands/Cargo.toml index f84f47d..a912d24 100644 --- a/crates/commands/Cargo.toml +++ b/crates/commands/Cargo.toml @@ -33,6 +33,5 @@ tracing-appender.workspace = true tracing.workspace = true log.workspace = true mcmeta.workspace = true -rspc.workspace = true midlog.workspace = true prisma-client-rust.workspace = true diff --git a/crates/rpc-rs/README.md b/crates/rpc-rs/README.md new file mode 100644 index 0000000..89d8e6b --- /dev/null +++ b/crates/rpc-rs/README.md @@ -0,0 +1,105 @@ +# rpc-rs + +A blazingly fast, lightweight, idiomatic, and type-safe RPC/IPC framework for +Rust and Web/Tauri-based applications, based on `specta`. + +## Introduction + +`rpc-rs` is an idiomatic and type-safe Rust framework for building JSON RPCs and IPCs +for use with Web technologies, such as JavaScript and TypeScript. It follows the basic +CRUD (Create, Read, Update, Delete) pattern, and its syntax allows developers to easily +create complex applications with relatively simple code. + +## Syntax + +```rust +//! This code may not be completely accurate! I haven't yet built the library and this +//! is all plans! I also don't have ANY intellisense in a markdown file, so I can't check +//! for dumb syntactical errors! + +use std::sync::Arc; +use serde::{Serialize, Deserialize}; +use specta::Type; +use database::{prisma::{PrismaClient, game}, Game}; +use rpc_rs::{Router, Module, ModuleBuilder, PrismaObject}; + +// The `PrismaObject` derive macro and trait handle the `db_params` function, +// which transforms this struct into a `Vec`. This struct is also +// read from the request body via Serde, hence the `Deserialize` derive macro +// being used here. The `#[prisma(module = ...)]` helper ensures that the derive +// macro finds the correct place to resolve all of the `SetParam` creation +// functions. +#[derive(Debug, Clone, Serialize, Deserialize, Type, PrismaObject)] +#[prisma(module = "database::prisma::game")] +pub struct GameCreation { + pub name: String, + #[serde(skip_serializing_if = "Option::is_none")] + pub curseforge: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub thunderstore: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub spacedock: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub ckan: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub modrinth: Option, +} + +pub fn games_module(mut module: ModuleBuilder>) -> Module> { + module + // This closure is: FnMut(ModuleBuilder::State, GameCreation) -> impl Future> + Send + Sync + 'static + // The error conversion is handled automatically (via traits) + .create(|db, data: GameCreation| (async move { + // [C]RUD + db.game().create(data.name.clone(), data.db_params()).exec().await + })()) // <- Async closures have to be executed to get the `impl Future<...>`. + // This closure is: FnMut(ModuleBuilder::State, i32) -> impl Future> + Send + Sync + 'static + .read(|db, id: i32| (async move { // The `id: i32` can be `_: ()` if you don't need any input here. + // C[R]UD + db.game().find_first(vec![game::id::equals(id)]).exec().await + })()) + .update(...) // Insert your own functionality here. + .delete(...) + // All the operations get assigned to the `Option<...>` fields in the `ModuleBuilder` + // struct. These will get reassigned to the ones in the `Module` struct and finalized + // when the `build` method is called. + .build() +} + +pub fn build_router() -> Router> { + Router::>::new() + .attach(games_module) // Accepts: FnOnce(ModuleBuilder) -> Module + // This closure is: FnMut(Router::State, ()) -> impl Future, Error>> + Send + Sync + 'static + .query("games", |db, _: ()| (async move { // This is useful if you just need a read function. + db.game().find_many(vec![]).exec().await + })()) + // The `finish` function finalizes all the state holders and prepares it to be + // mounted with either `axum` or `tauri`. + .finish() +} + +#[tokio::main] +pub async fn main() { + let router = build_router(); + let db = Arc::new(PrismaClient::_builder().build().await.unwrap()); + // Creating the endpoint for axum or the plugin for tauri requires the state object. + let endpoint = router.axum(db); + + let router = ...; // Axum stuff. + + router.nest("/rpc", endpoint); + + // Start your app with axum! +} +``` + +## Integrations + +rpc-rs integrates extremely well with the following libraries and tools: + +- `axum` +- `tauri` +- `prisma-client-rust` +- `specta` +- `serde` +- `serde_json` diff --git a/external/rspc/.cargo/config.toml b/external/rspc/.cargo/config.toml deleted file mode 100644 index f5d0fc5..0000000 --- a/external/rspc/.cargo/config.toml +++ /dev/null @@ -1,2 +0,0 @@ -[alias] -test-ws = "test --all --exclude create-rspc-app --all-features" \ No newline at end of file diff --git a/external/rspc/.github/FUNDING.yml b/external/rspc/.github/FUNDING.yml deleted file mode 100644 index 8bba081..0000000 --- a/external/rspc/.github/FUNDING.yml +++ /dev/null @@ -1,2 +0,0 @@ -github: [oscartbeaumont] -custom: ["https://paypal.me/oscartbeaumont"] \ No newline at end of file diff --git a/external/rspc/.github/dependabot.yml b/external/rspc/.github/dependabot.yml deleted file mode 100644 index 120c689..0000000 --- a/external/rspc/.github/dependabot.yml +++ /dev/null @@ -1,6 +0,0 @@ -version: 2 -updates: - - package-ecosystem: "github-actions" - directory: "/" - schedule: - interval: "weekly" \ No newline at end of file diff --git a/external/rspc/.github/scripts/setPackageVersions.js b/external/rspc/.github/scripts/setPackageVersions.js deleted file mode 100644 index 76aa9dd..0000000 --- a/external/rspc/.github/scripts/setPackageVersions.js +++ /dev/null @@ -1,71 +0,0 @@ -/** - * Updates the package.json files with a version to release to npm under - * the main tag. - * - * Based on https://github.com/facebook/relay/blob/main/gulpfile.js - */ - -const fs = require("fs/promises"); -const path = require("path"); - -const RELEASE_COMMIT_SHA = process.env.RELEASE_COMMIT_SHA; - -if (RELEASE_COMMIT_SHA && RELEASE_COMMIT_SHA.length !== 40) { - throw new Error( - "If the RELEASE_COMMIT_SHA env variable is set, it should be set to the " + - "40 character git commit hash." - ); -} - -const VERSION = RELEASE_COMMIT_SHA - ? `0.0.0-main-${RELEASE_COMMIT_SHA.substring(0, 8)}` - : process.env.npm_package_version; - -console.log(RELEASE_COMMIT_SHA); - -async function main() { - const packages = await ( - await fs.readdir(path.join(__dirname, "../../packages")) - ).filter((pkg) => pkg !== ".DS_Store" && pkg !== "tsconfig.json"); - const pkgJsons = {}; - const pkgJsonPaths = {}; - - for (pkg of packages) { - const pkgJsonPath = path.join( - __dirname, - "../../packages", - pkg, - "package.json" - ); - pkgJsonPaths[pkg] = pkgJsonPath; - const packageJson = JSON.parse(await fs.readFile(pkgJsonPath, "utf8")); - - pkgJsons[pkg] = packageJson; - } - - const packageNames = Object.values(pkgJsons).map((pkg) => pkg.name); - - for (const pkg of packages) { - let packageJson = pkgJsons[pkg]; - packageJson.version = VERSION; - for (const depKind of [ - "dependencies", - "devDependencies", - "peerDependencies", - ]) { - const deps = packageJson[depKind]; - for (const dep in deps) { - if (packageNames.includes(dep)) { - deps[dep] = VERSION; - } - } - } - await fs.writeFile( - pkgJsonPaths[pkg], - JSON.stringify(packageJson, null, 2) + "\n", - "utf8" - ); - } -} - -main(); diff --git a/external/rspc/.github/workflows/ci.yml b/external/rspc/.github/workflows/ci.yml deleted file mode 100644 index 31c0e86..0000000 --- a/external/rspc/.github/workflows/ci.yml +++ /dev/null @@ -1,115 +0,0 @@ -name: CI - -on: - push: - branches: [main] - pull_request: - branches: [main] - workflow_dispatch: - -jobs: - test: - name: Test - runs-on: ubuntu-latest - outputs: - filter: ${{ steps.filter.outputs.workflows }} - steps: - - name: Checkout repository - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - - name: Install NodeJS - uses: actions/setup-node@v3 - with: - node-version: '16' - - - name: Install pnpm - uses: pnpm/action-setup@v2.2.4 - with: - version: latest - - - name: Install system dependencies # Pull this step from `oscartbeaumont/specta` - run: sudo apt-get update && sudo apt-get install librust-atk-dev libwebkit2gtk-4.0-dev build-essential libssl-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev - - - name: Install Rust toolchain - run: rustup toolchain install stable --profile minimal - - - name: Rust cache - uses: Swatinem/rust-cache@v2 - - - name: Install npm dependencies - run: pnpm i --frozen-lockfile - - # TODO: Enabling this breaks the CI build with SolidJS Typescript errors and I don't get it. - # - name: Build npm packages - # run: pnpm build - - - name: Build Rust crate - run: cargo build --all-features - - # - name: Generate test bindings for typecheck - # run: cargo test -p example tests::test_rspc_router -- --exact # TODO: Move this into a the first unit test - - - name: Typecheck - run: pnpm typecheck - - - name: Test Rust crate - run: cargo test --all --exclude create-rspc-app --all-features - - - uses: dorny/paths-filter@v2 - id: filter - with: - filters: | - workflows: - - 'packages/**' - - build-publish: - name: Publish to NPM - runs-on: ubuntu-latest - needs: test - if: (github.event_name == 'workflow_dispatch' || (needs.test.outputs.filter == 'true' && github.event_name == 'push')) && github.repository == 'oscartbeaumont/rspc' - steps: - - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - - uses: pnpm/action-setup@v2.2.4 - with: - version: latest - - - uses: actions/setup-node@v3 - with: - node-version: '16' - cache: 'pnpm' - - - name: Setup npmrc - run: echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > .npmrc - - - name: Install dependencies - run: pnpm i --frozen-lockfile - - - name: Build - run: pnpm build - - - name: Configure main version - if: github.ref == 'refs/heads/main' - run: pnpm set-package-versions - env: - RELEASE_COMMIT_SHA: ${{ github.sha }} - - - name: Publish main to npm - if: github.ref == 'refs/heads/main' - run: pnpm publish -r ${TAG} --no-git-checks --filter "@rspc/*" --access public - env: - TAG: ${{ (github.ref == 'refs/heads/main' && '--tag=main') || '' }} - - # - name: Configure release version - # if: github.ref_type == 'tag' - # run: pnpm set-package-versions - - # - name: Publish release to npm - # if: github.ref_type == 'tag' - # run: pnpm publish -r ${TAG} --no-git-checks --filter "@rspc/*" --access public - # env: - # TAG: ${{ (contains(github.ref_name, '-beta.') && '--tag=beta') || ''}} diff --git a/external/rspc/.github/workflows/clippy.yml b/external/rspc/.github/workflows/clippy.yml deleted file mode 100644 index 82f75d2..0000000 --- a/external/rspc/.github/workflows/clippy.yml +++ /dev/null @@ -1,28 +0,0 @@ -name: Clippy - -on: - workflow_dispatch: - push: - branches: - - main - pull_request: - -jobs: - clippy_check: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - name: Setup # Pull this step from `oscartbeaumont/specta` - run: sudo apt-get install librust-atk-dev libwebkit2gtk-4.0-dev build-essential libssl-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev - - - name: Install Rust toolchain - run: rustup toolchain install stable --profile minimal --component clippy - - - name: Rust cache - uses: Swatinem/rust-cache@v2 - - - uses: actions-rs/clippy-check@v1 - with: - token: ${{ secrets.GITHUB_TOKEN }} - args: --all-features \ No newline at end of file diff --git a/external/rspc/.gitignore b/external/rspc/.gitignore deleted file mode 100644 index 61143f0..0000000 --- a/external/rspc/.gitignore +++ /dev/null @@ -1,32 +0,0 @@ -# Generated by Cargo -# will have compiled files and executables -target/ -test-target/ - -# Remove Cargo.lock from gitignore if creating an executable, leave it for libraries -# More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html -Cargo.lock - -# These are backup files generated by rustfmt -**/*.rs.bk - -# System Files -.DS_Store - -# Typescript bindings exported by the examples -bindings.ts - -# Node -node_modules -.pnpm-debug.log* -*.tsbuildinfo -/packages/*/dist - -# Compiled vscode extension -*.vsix - -# Trybuild -crates/*/wip - -# Rollup plugin analyser -stats.html \ No newline at end of file diff --git a/external/rspc/.taplo.toml b/external/rspc/.taplo.toml deleted file mode 100644 index d3b8de3..0000000 --- a/external/rspc/.taplo.toml +++ /dev/null @@ -1,2 +0,0 @@ -[formatting] -column_width = 150 diff --git a/external/rspc/Cargo.toml b/external/rspc/Cargo.toml deleted file mode 100644 index 94efc66..0000000 --- a/external/rspc/Cargo.toml +++ /dev/null @@ -1,67 +0,0 @@ -[package] -name = "rspc" -description = "A blazingly fast and easy to use TRPC server for Rust." -version = "0.1.2" -authors = ["Oscar Beaumont "] -edition = "2021" -license = "MIT" -include = ["/src", "/LICENCE", "/README.md"] -repository = "https://github.com/oscartbeaumont/rspc" -documentation = "https://docs.rs/rspc/latest/rspc" -keywords = ["async", "specta", "rust-to-ts", "typescript", "typesafe"] -categories = ["web-programming", "asynchronous"] - -[features] -default = ["warnings"] -warnings = [] -warning = [] -tauri = ["dep:tauri"] -tracing = ["dep:tracing"] -httpz = ["dep:httpz", "httpz/cookies"] -# openapi = ["dep:openapiv3", "dep:httpz", "dep:include_dir", "dep:mime_guess", "specta/openapi"] -# playground = [] - -# Webservers # Axum feature basically always enabled because we use the extractors regardless of webserver -axum = ["httpz", "httpz/axum", "httpz/tokio-ws", "httpz/axum"] -# actix-web = ["httpz", "httpz/actix-web", "httpz/tokio-ws", "httpz/axum"] -# poem = ["httpz", "httpz/poem"] -# rocket = ["httpz", "httpz/rocket", "httpz/tokio-ws", "httpz/axum"] -# warp = ["httpz", "httpz/warp"] -lambda = ["httpz", "httpz/lambda", "httpz/ws", "httpz/axum"] -workers = ["httpz", "httpz/workers", "httpz/ws"] - -# Specta -uuid = ["specta/uuid"] -chrono = ["specta/chrono"] -time = ["specta/time"] -bigdecimal = ["specta/bigdecimal"] -rust_decimal = ["specta/rust_decimal"] -indexmap = ["specta/indexmap"] -ipnetwork = ["specta/ipnetwork"] -mac_address = ["specta/mac_address"] -bit-vec = ["specta/bit-vec"] -bson = ["specta/bson"] -uhlc = ["specta/uhlc"] -bytesize = ["specta/bytesize"] -glam = ["specta/glam"] - -[dependencies] -specta = { version = "1.0.0", features = ["serde", "tokio"] } -httpz = { git = "https://github.com/oscartbeaumont/httpz.git", rev = "a5020adecb15b55d84a8330b4680eba82fa6b820", optional = true } # TODO: Move back to crates.io release -serde = { version = "1", features = ["derive"] } -serde_json = "1" -thiserror = "1" -futures = "0.3" -tokio = { version = "1", features = ["sync", "rt", "macros"] } # TODO: Make tokio an optional dep to allow for other async runtimes to be supported & then remove `tokio` from features rspc passes to Specta by default -tauri = { version = "1.2.4", optional = true } -tracing = { version = "0.1.37", optional = true } -# async-stream = "0.3.4" # TODO: Remove this dep -# openapiv3 = { version = "1.0.2", optional = true } -# include_dir = { version = "0.7.3", optional = true, features = ["metadata"] } -# mime_guess = { version = "2.0.4", optional = true } -worker = { version = "0.0.12", optional = true } -async-stream = "0.3.4" - -[patch.crates-io] -# specta = { git = "https://github.com/oscartbeaumont/specta.git", rev = "6790b2da8ed680cc96e804d258e0eeffc26a8a92" } -# specta = { path = "../specta" } diff --git a/external/rspc/LICENSE b/external/rspc/LICENSE deleted file mode 100644 index 6d135f3..0000000 --- a/external/rspc/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2022 Oscar Beaumont - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/external/rspc/README.md b/external/rspc/README.md deleted file mode 100644 index 5c4ad69..0000000 --- a/external/rspc/README.md +++ /dev/null @@ -1,59 +0,0 @@ -

- Logo -

-

rspc

-

🚧 Work in progress 🚧

-
- - A blazingly fast and easy to use TRPC-like server for Rust. - -
- -

Website

-
- -
- - -
- -## Example - -You define a `rspc` router and attach procedures to it like below. This will be very familiar if you have used [trpc](https://trpc.io/) or [GraphQL](https://graphql.org) before. - -```rust -let router = ::new() - .query("version", |t| { - t(|ctx, input: ()| "0.0.1") - }) - .mutation("helloWorld", |t| { - t(|ctx, input: ()| async { "Hello World!" }) - }); -``` - -## Features: - - - Per Request Context - Great for database connection & authentication data - - Middleware - With support for context switching - - Merging routers - Great for separating code between files - -### Inspiration - -This project is based off [trpc](https://trpc.io) and was inspired by the bridge system [Jamie Pine](https://github.com/jamiepine) designed for [Spacedrive](https://www.spacedrive.com). A huge thanks to everyone who helped inspire this project! diff --git a/external/rspc/create-rspc-app/.gitignore b/external/rspc/create-rspc-app/.gitignore deleted file mode 100644 index 298fc1e..0000000 --- a/external/rspc/create-rspc-app/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -my-app -./templates/**/node_modules \ No newline at end of file diff --git a/external/rspc/create-rspc-app/Cargo.toml b/external/rspc/create-rspc-app/Cargo.toml deleted file mode 100644 index 6ed2e29..0000000 --- a/external/rspc/create-rspc-app/Cargo.toml +++ /dev/null @@ -1,30 +0,0 @@ -[package] -name = "create-rspc-app" -description = "Get started with your next rspc app!" -version = "0.0.2" -authors = ["Oscar Beaumont "] -edition = "2021" -license = "MIT" -include = ["/src", "/LICENCE", "/README.md", "/templates"] -repository = "https://github.com/oscartbeaumont/rspc" -documentation = "https://docs.rs/create-rspc-app" -keywords = ["rspc", "prisma-client-rust", "pcr", "tauri", "axum"] -categories = ["web-programming", "asynchronous"] - -[dependencies] -include_dir = "0.7.3" -requestty = "0.5.0" -strum = { version = "0.24.1", features = ["derive"] } -rustc_version = "0.4.0" -ureq = { version = "2.6.2", features = ["json"] } -serde_json = "1.0.93" -ctrlc = "3.2.5" -thiserror = "1.0.38" -walkdir = "2" - -[dev-dependencies] -tempdir = "0.3.7" -cargo = "0.67.1" -tokio = { version = "1.25.0", features = ["full", "process"] } -ssh2 = { version = "0.9.3", features = ["vendored-openssl"] } # This is need for M1 support -futures = "0.3.26" diff --git a/external/rspc/create-rspc-app/README.md b/external/rspc/create-rspc-app/README.md deleted file mode 100644 index e5561ce..0000000 --- a/external/rspc/create-rspc-app/README.md +++ /dev/null @@ -1,67 +0,0 @@ -

-Logo -

create-rspc-app

-

- - - - -

Interactive CLI to create a new app using rspc.

-

- -Get started by running `cargo install create-rspc-app` and then `create-rspc-app` in your terminal. - -

- - -## Stack - -The stack is based on the following technologies: -- Languages - - [Rust](https://www.rust-lang.org/) - - [TypeScript](https://www.typescriptlang.org/) -- Frameworks - - [React](https://reactjs.org/) - - [Solid](https://www.solidjs.com/) -- Database ORMs - - [prisma-client-rust](https://prisma.brendonovich.dev/introduction) -- [RSPC](https://rspc.dev) - -## Getting Started - -```sh -# Install the CLI -cargo install create-rspc-app -``` - -```sh -# Create a new app -create-rspc-app -``` - -Additionally you can `create-rspc-app ` to create a new app in a specific directory. - -`create-rspc-app` will ask for the following information: -- `Name`: The name of your app. -- `Backend Framwork (Tauri, Axum)`: The backend framework you want to use. -- `Database ORM (Prisma, None):` The database ORM you want to use. -- `Frontend Framework (React, Solid)`: The frontend framework you want to use. -- `Package Manager (npm, yarn, pnpm)`: The package manager you want to use. - -If you use prisma then create-rspc-app will automatically run `prisma generate` - -## Issues - -If you find any issue with the CLI please open an issue in the [rspc issues](https://github.com/oscartbeaumont/rspc/issues). \ No newline at end of file diff --git a/external/rspc/create-rspc-app/build.rs b/external/rspc/create-rspc-app/build.rs deleted file mode 100644 index 931b302..0000000 --- a/external/rspc/create-rspc-app/build.rs +++ /dev/null @@ -1,3 +0,0 @@ -fn main() { - println!("cargo:rerun-if-changed=templates/"); -} diff --git a/external/rspc/create-rspc-app/src/database.rs b/external/rspc/create-rspc-app/src/database.rs deleted file mode 100644 index f0474e9..0000000 --- a/external/rspc/create-rspc-app/src/database.rs +++ /dev/null @@ -1,72 +0,0 @@ -use std::{fs::create_dir_all, io, path::Path, str::FromStr}; - -use include_dir::{include_dir, Dir}; -use strum::EnumIter; - -use crate::{framework::Framework, utils::replace_in_file}; - -static BASE: Dir<'_> = include_dir!("$CARGO_MANIFEST_DIR/templates/base"); -static PCR_BASE: Dir<'_> = include_dir!("$CARGO_MANIFEST_DIR/templates/pcr_base"); -static AXUM_BASE_TEMPLATE: Dir<'_> = include_dir!("$CARGO_MANIFEST_DIR/templates/axum_pcr_base"); -static TAURI_BASE_TEMPLATE: Dir<'_> = include_dir!("$CARGO_MANIFEST_DIR/templates/tauri_pcr_base"); - -#[derive(Debug, Clone, EnumIter, PartialEq, Eq)] -pub enum Database { - PrismaClientRust, - None, -} - -impl ToString for Database { - fn to_string(&self) -> String { - match self { - Self::PrismaClientRust => "Prisma Client Rust", - Self::None => "None", - } - .to_string() - } -} - -impl FromStr for Database { - type Err = String; - - fn from_str(s: &str) -> Result { - match s { - "Prisma Client Rust" => Ok(Self::PrismaClientRust), - "None" => Ok(Self::None), - _ => Err(format!("{} is not a valid database", s)), - } - } -} - -impl Database { - pub fn render(&self, path: &Path, project_name: &str, framework: Framework) -> io::Result<()> { - match framework { - Framework::Tauri => { - create_dir_all(path).unwrap(); - BASE.extract(path)?; - TAURI_BASE_TEMPLATE.extract(path)?; - PCR_BASE.extract(path)?; - - replace_in_file( - path.join("src-tauri").join("Cargo__toml").as_path(), - "__name__", - project_name, - )?; - } - Framework::Axum => { - create_dir_all(path).unwrap(); - BASE.extract(path)?; - AXUM_BASE_TEMPLATE.extract(path)?; - PCR_BASE.extract(path)?; - - replace_in_file( - path.join("api").join("Cargo__toml").as_path(), - "__name__", - project_name, - )?; - } - } - - Ok(()) - } -} diff --git a/external/rspc/create-rspc-app/src/errors.rs b/external/rspc/create-rspc-app/src/errors.rs deleted file mode 100644 index 8b33d87..0000000 --- a/external/rspc/create-rspc-app/src/errors.rs +++ /dev/null @@ -1,20 +0,0 @@ -use requestty::ErrorKind; -use thiserror::Error; - -#[derive(Error, Debug)] -pub enum Error { - #[error("Prompt Error: {0}")] - RequestTty(#[from] ErrorKind), - - #[error("Standard IO Error: {0}")] - StandardIO(#[from] std::io::Error), - - #[error("Rustc Error: {0}")] - Rustc(#[from] rustc_version::Error), - - #[error("Error: {0}")] - Standard(#[from] Box), - - #[error("Other Error: {0}")] - Other(String), -} diff --git a/external/rspc/create-rspc-app/src/framework.rs b/external/rspc/create-rspc-app/src/framework.rs deleted file mode 100644 index d60a7b1..0000000 --- a/external/rspc/create-rspc-app/src/framework.rs +++ /dev/null @@ -1,44 +0,0 @@ -use std::{io, path::Path}; - -use crate::utils::replace_in_file; -use include_dir::{include_dir, Dir}; -use strum::{Display, EnumIter, EnumString}; - -static AXUM_BASE_TEMPLATE: Dir<'_> = include_dir!("$CARGO_MANIFEST_DIR/templates/axum_base"); -static TAURI_BASE_TEMPLATE: Dir<'_> = include_dir!("$CARGO_MANIFEST_DIR/templates/tauri_base"); - -#[derive(Debug, Clone, Display, EnumIter, EnumString, PartialEq, Eq)] -pub enum Framework { - Axum, - Tauri, -} - -impl Framework { - pub fn render(&self, path: &Path, project_name: &str) -> io::Result<()> { - match self { - Self::Axum => { - std::fs::create_dir_all(path)?; - AXUM_BASE_TEMPLATE.extract(path)?; - replace_in_file(path.join("Cargo__toml").as_path(), "__name__", project_name)?; - replace_in_file( - path.join("Cargo__toml").as_path(), - "__cra_version__", - env!("CARGO_PKG_VERSION"), - )?; - } - Self::Tauri => { - std::fs::create_dir_all(path)?; - TAURI_BASE_TEMPLATE.extract(path)?; - let path = path.join("src-tauri"); - replace_in_file(path.join("Cargo__toml").as_path(), "__name__", project_name)?; - replace_in_file( - path.join("Cargo__toml").as_path(), - "__cra_version__", - env!("CARGO_PKG_VERSION"), - )?; - } - } - - Ok(()) - } -} diff --git a/external/rspc/create-rspc-app/src/frontend_framework.rs b/external/rspc/create-rspc-app/src/frontend_framework.rs deleted file mode 100644 index bcc2af3..0000000 --- a/external/rspc/create-rspc-app/src/frontend_framework.rs +++ /dev/null @@ -1,74 +0,0 @@ -use std::{fs::create_dir_all, io, path::Path}; - -use crate::utils::replace_in_file; -use include_dir::{include_dir, Dir}; -use strum::{Display, EnumIter, EnumString}; - -use crate::framework::Framework; - -static REACT_TEMPLATE_TAURI: Dir<'_> = - include_dir!("$CARGO_MANIFEST_DIR/templates/react_base_tauri"); -static REACT_TEMPLATE_AXUM: Dir<'_> = include_dir!("$CARGO_MANIFEST_DIR/templates/react_base_axum"); - -static SOLID_TEMPLATE_TAURI: Dir<'_> = - include_dir!("$CARGO_MANIFEST_DIR/templates/solid_base_tauri"); -static SOLID_TEMPLATE_AXUM: Dir<'_> = include_dir!("$CARGO_MANIFEST_DIR/templates/solid_base_axum"); - -#[derive(Debug, Clone, Display, EnumIter, EnumString)] -pub enum FrontendFramework { - React, - SolidJS, - // None, -} - -impl FrontendFramework { - pub fn render(&self, path: &Path, project_name: &str, framework: Framework) -> io::Result<()> { - let path = path.join("web"); - create_dir_all(&path).unwrap(); - - match framework { - Framework::Tauri => match self { - FrontendFramework::React => { - REACT_TEMPLATE_TAURI.extract(path.clone()).unwrap(); - - replace_in_file( - path.join("package.json").as_path(), - "{{name}}", - project_name, - )?; - } - FrontendFramework::SolidJS => { - SOLID_TEMPLATE_TAURI.extract(path.clone()).unwrap(); - - replace_in_file( - path.join("package.json").as_path(), - "{{name}}", - project_name, - )?; - } // FrontendFramework::None => {} - }, - Framework::Axum => match self { - FrontendFramework::React => { - REACT_TEMPLATE_AXUM.extract(path.clone()).unwrap(); - - replace_in_file( - path.join("package.json").as_path(), - "{{name}}", - project_name, - )?; - } - FrontendFramework::SolidJS => { - SOLID_TEMPLATE_AXUM.extract(path.clone()).unwrap(); - - replace_in_file( - path.join("package.json").as_path(), - "{{name}}", - project_name, - )?; - } // FrontendFramework::None => {} - }, - } - - Ok(()) - } -} diff --git a/external/rspc/create-rspc-app/src/generator.rs b/external/rspc/create-rspc-app/src/generator.rs deleted file mode 100644 index 12d1343..0000000 --- a/external/rspc/create-rspc-app/src/generator.rs +++ /dev/null @@ -1,36 +0,0 @@ -use std::{io, path::Path}; - -use walkdir::WalkDir; - -use crate::{ - database::Database, framework::Framework, frontend_framework::FrontendFramework, - utils::replace_in_file, -}; - -pub fn code_generator( - framework: Framework, - database: Database, - frontend_framework: FrontendFramework, - path: &Path, - project_name: &str, -) -> io::Result<()> { - if database == Database::None { - framework.render(path, project_name)?; - } else { - database.render(path, project_name, framework.clone())?; - } - - frontend_framework.render(path, project_name, framework)?; - - for entry in WalkDir::new(path) { - let entry = entry.unwrap(); - if entry.file_name().to_str() == Some("Cargo__toml") { - replace_in_file(entry.path(), "__cra_version__", env!("CARGO_PKG_VERSION"))?; - std::fs::rename(entry.path(), entry.path().with_file_name("Cargo.toml"))?; - } - } - - println!("Generated project at '{}'", path.display()); - - Ok(()) -} diff --git a/external/rspc/create-rspc-app/src/internal.rs b/external/rspc/create-rspc-app/src/internal.rs deleted file mode 100644 index fcaae81..0000000 --- a/external/rspc/create-rspc-app/src/internal.rs +++ /dev/null @@ -1,22 +0,0 @@ -//! These are the internals of create-rspc-app -//! -//! ## Warning -//! -//! These APIs are meant for internal use so you are using them at your own risk. -//! Expect APIs to break without a prior notice and without semver. - -pub mod database { - pub use crate::database::*; -} - -pub mod framework { - pub use crate::framework::*; -} - -pub mod frontend_framework { - pub use crate::frontend_framework::*; -} - -pub mod generator { - pub use crate::generator::*; -} diff --git a/external/rspc/create-rspc-app/src/lib.rs b/external/rspc/create-rspc-app/src/lib.rs deleted file mode 100644 index 71e68c1..0000000 --- a/external/rspc/create-rspc-app/src/lib.rs +++ /dev/null @@ -1,6 +0,0 @@ -pub(crate) mod database; -pub(crate) mod framework; -pub(crate) mod frontend_framework; -pub(crate) mod generator; -pub mod internal; -mod utils; diff --git a/external/rspc/create-rspc-app/src/main.rs b/external/rspc/create-rspc-app/src/main.rs deleted file mode 100644 index 2ac1a08..0000000 --- a/external/rspc/create-rspc-app/src/main.rs +++ /dev/null @@ -1,152 +0,0 @@ -use std::{env::current_dir, fs::remove_dir_all, str::FromStr}; - -use requestty::{prompt_one, ErrorKind, Question}; -use strum::IntoEnumIterator; - -use crate::{ - database::Database, - framework::Framework, - frontend_framework::FrontendFramework, - generator::code_generator, - post_gen::{run_cargo_steps, PackageManager}, - utils::{check_rust_msrv, check_version}, -}; - -pub(crate) mod database; -mod errors; -pub(crate) mod framework; -pub(crate) mod frontend_framework; -pub(crate) mod generator; -pub mod internal; -pub(crate) mod post_gen; -mod utils; - -const BANNER: &str = r#" -██████╗ ███████╗██████╗ ██████╗ -██╔══██╗██╔════╝██╔══██╗██╔════╝ -██████╔╝███████╗██████╔╝██║ -██╔══██╗╚════██║██╔═══╝ ██║ -██║ ██║███████║██║ ╚██████╗ -╚═╝ ╚═╝╚══════╝╚═╝ ╚═════╝"#; - -fn try_main() -> Result<(), errors::Error> { - println!("\n{}\n", BANNER); - - check_rust_msrv()?; - check_version()?; - - ctrlc::set_handler(|| { - println!("Operation cancelled by user"); - }) - .expect("Unable to setup ctrl+c handler"); - - let project_name = prompt_one( - Question::input("project_name") - .message("What will your project be called?") - .default("my-app") - .build(), - )?; - let project_name = project_name.as_string().unwrap(); - - if !project_name - .chars() - .all(|x| x.is_alphanumeric() || x == '-' || x == '_') - { - println!("Aborting your project name may only contain alphanumeric characters along with '-' and '_'..."); - } - - // First argument is the path where the project has to be created - let dir_path = match std::env::args().nth(1) { - Some(value) => value, - None => project_name.to_string(), - }; - - let path = current_dir()?.join(dir_path); - if path.exists() { - let force = prompt_one( - Question::confirm("force_delete") - .message(format!( - "{} directory is not empty, do you want to overwrite?", - project_name - )) - .default(false) - .build(), - )?; - - match !force.as_bool().unwrap() { - true => { - println!("Aborting project creation..."); - return Err(errors::Error::Other( - "Aborting project creation...".to_string(), - )); - } - false => { - remove_dir_all(&path)?; - } - } - } - - // Framework - let framework = prompt_one( - Question::select("framework") - .message("What backend framework would you like to use?") - .choices(Framework::iter().map(|v| v.to_string())) - .build(), - )?; - let framework = Framework::from_str(&framework.as_list_item().unwrap().text).unwrap(); - - // Database selection - Prisma Client Rust, None - let database = prompt_one( - Question::select("database") - .message("What database ORM would you like to use?") - .choices(Database::iter().map(|v| v.to_string())) - .build(), - )?; - let database = Database::from_str(&database.as_list_item().unwrap().text).unwrap(); - - // Frontend selection - React, SolidJS, None - let frontend_framework = prompt_one( - Question::select("frontend_framework") - .message("What frontend framework would you like to use?") - .choices(FrontendFramework::iter().map(|v| v.to_string())) - .build(), - )?; - let frontend_framework = - FrontendFramework::from_str(&frontend_framework.as_list_item().unwrap().text).unwrap(); - - let package_manager = prompt_one( - Question::select("package_manager") - .message("What package manager would you like to use?") - .choices(PackageManager::iter().map(|v| v.to_string())) - .build(), - )?; - let package_manager = - PackageManager::from_str(&package_manager.as_list_item().unwrap().text).unwrap(); - - code_generator( - framework, - database.clone(), - frontend_framework, - // extras, - &path, - project_name, - )?; - - package_manager.exec(path.clone())?; - - run_cargo_steps(path, database)?; - - Ok(()) -} - -fn main() { - if let Err(e) = try_main() { - if matches!(e, errors::Error::RequestTty(ErrorKind::Interrupted)) { - return; - } - - println!("\n{}", e); - println!("\nNOTE: If this error persists please consider opening an issue at"); - println!(" https://github.com/oscartbeaumont/rspc/issues\n") - } -} diff --git a/external/rspc/create-rspc-app/src/post_gen.rs b/external/rspc/create-rspc-app/src/post_gen.rs deleted file mode 100644 index 4a14870..0000000 --- a/external/rspc/create-rspc-app/src/post_gen.rs +++ /dev/null @@ -1,91 +0,0 @@ -use std::{io, path::PathBuf}; - -use strum::{Display, EnumIter, EnumString}; - -use crate::database::Database; - -#[derive(Debug, Display, EnumIter, EnumString)] -#[allow(clippy::upper_case_acronyms)] -pub enum PackageManager { - NPM, - Yarn, - PNPM, - None, -} - -pub fn run_cargo_steps(path: PathBuf, db: Database) -> io::Result<()> { - std::env::set_current_dir(path)?; - if db == Database::PrismaClientRust { - #[cfg(target_os = "windows")] - let mut child = std::process::Command::new("cmd") - .args(["/C", "cargo", "prisma", "generate"]) - .spawn()?; - - #[cfg(not(target_os = "windows"))] - let mut child = std::process::Command::new("cargo") - .args(["prisma", "generate"]) - .spawn()?; - - child.wait()?; - } - - Ok(()) -} - -impl PackageManager { - pub fn exec(&self, path: PathBuf) -> io::Result<()> { - let pkg_path = path.join("web"); - std::env::set_current_dir(pkg_path)?; - - match self { - PackageManager::NPM => { - println!("$ npm install"); - #[cfg(target_os = "windows")] - let mut child = std::process::Command::new("cmd") - .args(["/C", "npm", "install"]) - .spawn()?; - - #[cfg(not(target_os = "windows"))] - let mut child = std::process::Command::new("npm") - .args(["install"]) - .spawn()?; - - child.wait()?; - println!("Successfully installed npm packages"); - } - PackageManager::Yarn => { - println!("$ yarn install"); - #[cfg(target_os = "windows")] - let mut child = std::process::Command::new("cmd") - .args(["/C", "yarn", "install"]) - .spawn()?; - - #[cfg(not(target_os = "windows"))] - let mut child = std::process::Command::new("yarn") - .args(["install"]) - .spawn()?; - - child.wait()?; - println!("Successfully installed yarn packages"); - } - PackageManager::PNPM => { - println!("$ pnpm install"); - #[cfg(target_os = "windows")] - let mut child = std::process::Command::new("cmd") - .args(["/C", "pnpm", "install"]) - .spawn()?; - - #[cfg(not(target_os = "windows"))] - let mut child = std::process::Command::new("pnpm") - .args(["install"]) - .spawn()?; - - child.wait()?; - println!("Successfully installed pnpm packages"); - } - PackageManager::None => {} - }; - - Ok(()) - } -} diff --git a/external/rspc/create-rspc-app/src/utils.rs b/external/rspc/create-rspc-app/src/utils.rs deleted file mode 100644 index 8d155b3..0000000 --- a/external/rspc/create-rspc-app/src/utils.rs +++ /dev/null @@ -1,65 +0,0 @@ -use serde_json::Value; -use std::{ - fs::File, - io::{self, Read, Write}, - path::Path, - process::exit, -}; - -pub fn replace_in_file(path: &Path, from: &str, to: &str) -> io::Result<()> { - let data = { - let mut src = File::open(path)?; - let mut data = String::new(); - src.read_to_string(&mut data)?; - data - }; - - let data = data.replace(from, to); - - { - let mut dst = File::create(path)?; - dst.write_all(data.as_bytes())?; - } - - Ok(()) -} - -#[allow(unused)] -pub(crate) fn check_rust_msrv() -> Result<(), rustc_version::Error> { - let version = rustc_version::version()?; - - if version.minor < 64 { - println!("You are using an unsupported version of Rust, please update to 1.64 or higher."); - println!("To update, run `rustup update`."); - exit(1); - }; - - Ok(()) -} - -#[allow(unused)] -pub(crate) fn check_version() -> Result<(), Box> { - let resp: Value = ureq::get(&format!( - "https://crates.io/api/v1/crates/{}", - env!("CARGO_PKG_NAME") - )) - .call()? - .into_json()?; - - let latest = resp.get("crate") - .ok_or("Unable to find crate key in response from crates.io, please try again later.")? - .get("max_version") - .ok_or("Unable to find crate>max_version key in response from crates.io, please try again later.")? - .as_str() - .unwrap(); - - if env!("CARGO_PKG_VERSION") != latest { - println!( - "A new version of create-rspc-app is available, please update to {}.", - latest - ); - println!("To update, run `cargo install create-rspc-app --force`.\n"); - } - - Ok(()) -} diff --git a/external/rspc/create-rspc-app/templates/axum_base/Cargo__toml b/external/rspc/create-rspc-app/templates/axum_base/Cargo__toml deleted file mode 100644 index 0cf8a8b..0000000 --- a/external/rspc/create-rspc-app/templates/axum_base/Cargo__toml +++ /dev/null @@ -1,15 +0,0 @@ -[package] -name = "__name__" -version = "0.1.0" -edition = "2021" -rust-version = "1.64" -publish = false - -[dependencies] -tokio = { version = "1.21.2", features = ["rt-multi-thread", "macros", "signal"] } -axum = "0.5.17" -rspc = { version = "0.1.2", features = ["axum"] } -dotenv = "0.15.0" - -[package.metadata.pkg-config] -openssl = "__cra_version__" \ No newline at end of file diff --git a/external/rspc/create-rspc-app/templates/axum_base/README.md b/external/rspc/create-rspc-app/templates/axum_base/README.md deleted file mode 100644 index 6e73484..0000000 --- a/external/rspc/create-rspc-app/templates/axum_base/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# Create rspc app - -This app was scaffolded using the [create-rspc-app](https://rspc.dev) CLI. - -## Usage - -```bash -# Terminal One -cd web -pnpm i -pnpm dev - -# Terminal Two -cd api/ -cargo run -``` \ No newline at end of file diff --git a/external/rspc/create-rspc-app/templates/axum_base/src/api/mod.rs b/external/rspc/create-rspc-app/templates/axum_base/src/api/mod.rs deleted file mode 100644 index 0536649..0000000 --- a/external/rspc/create-rspc-app/templates/axum_base/src/api/mod.rs +++ /dev/null @@ -1,10 +0,0 @@ -pub use rspc::RouterBuilder; - -#[derive(Clone)] -pub struct Ctx {} - -pub type Router = rspc::Router; - -pub(crate) fn new() -> RouterBuilder { - Router::new().query("version", |t| t(|_, _: ()| env!("CARGO_PKG_VERSION"))) -} diff --git a/external/rspc/create-rspc-app/templates/axum_base/src/main.rs b/external/rspc/create-rspc-app/templates/axum_base/src/main.rs deleted file mode 100644 index b2003d9..0000000 --- a/external/rspc/create-rspc-app/templates/axum_base/src/main.rs +++ /dev/null @@ -1,28 +0,0 @@ -use crate::api::Ctx; -use axum::routing::get; -use std::net::SocketAddr; - -mod api; -mod utils; - -fn router() -> axum::Router { - let router = api::new().build().arced(); - - axum::Router::new() - .route("/", get(|| async { "Welcome to your new rspc app!" })) - .route("/health", get(|| async { "Ok!" })) - .route("/rspc/:id", router.endpoint(|| Ctx {}).axum()) -} - -#[tokio::main] -async fn main() { - dotenv::dotenv().ok(); - - let addr = "[::]:9000".parse::().unwrap(); // This listens on IPv6 and IPv4 - println!("{} listening on http://{}", env!("CARGO_CRATE_NAME"), addr); - axum::Server::bind(&addr) - .serve(router().into_make_service()) - .with_graceful_shutdown(utils::axum_shutdown_signal()) - .await - .expect("Error with HTTP server!"); -} diff --git a/external/rspc/create-rspc-app/templates/axum_base/src/utils.rs b/external/rspc/create-rspc-app/templates/axum_base/src/utils.rs deleted file mode 100644 index 6f35af5..0000000 --- a/external/rspc/create-rspc-app/templates/axum_base/src/utils.rs +++ /dev/null @@ -1,28 +0,0 @@ -use tokio::signal; - -/// shutdown_signal will inform axum to gracefully shutdown when the process is asked to shutdown. -pub async fn axum_shutdown_signal() { - let ctrl_c = async { - signal::ctrl_c() - .await - .expect("failed to install Ctrl+C handler"); - }; - - #[cfg(unix)] - let terminate = async { - signal::unix::signal(signal::unix::SignalKind::terminate()) - .expect("failed to install signal handler") - .recv() - .await; - }; - - #[cfg(not(unix))] - let terminate = std::future::pending::<()>(); - - tokio::select! { - _ = ctrl_c => {}, - _ = terminate => {}, - } - - println!("signal received, starting graceful shutdown"); -} diff --git a/external/rspc/create-rspc-app/templates/axum_pcr_base/.env b/external/rspc/create-rspc-app/templates/axum_pcr_base/.env deleted file mode 100644 index 22554fe..0000000 --- a/external/rspc/create-rspc-app/templates/axum_pcr_base/.env +++ /dev/null @@ -1,7 +0,0 @@ -# Environment variables declared in this file are automatically made available to Prisma. -# See the documentation for more detail: https://pris.ly/d/prisma-schema#accessing-environment-variables-from-the-schema - -# Prisma supports the native connection string format for PostgreSQL, MySQL, SQLite, SQL Server, MongoDB and CockroachDB. -# See the documentation for all the connection string options: https://pris.ly/d/connection-strings - -DATABASE_URL="file:./file.db" \ No newline at end of file diff --git a/external/rspc/create-rspc-app/templates/axum_pcr_base/Cargo__toml b/external/rspc/create-rspc-app/templates/axum_pcr_base/Cargo__toml deleted file mode 100644 index 0136abf..0000000 --- a/external/rspc/create-rspc-app/templates/axum_pcr_base/Cargo__toml +++ /dev/null @@ -1,20 +0,0 @@ -[workspace] -resolver = "2" -members = ["prisma", "api"] -default-members = ["api"] - -[workspace.dependencies] -prisma-client-rust-cli = { git = "https://github.com/Brendonovich/prisma-client-rust.git", rev = "078919e3724f35cc00c2402c66ba585b61c88d47", features = [ - "sqlite", - "rspc", - "migrations", -], default-features = false } -prisma-client-rust = { git = "https://github.com/Brendonovich/prisma-client-rust.git", rev = "078919e3724f35cc00c2402c66ba585b61c88d47", features = [ - "sqlite", - "rspc", - "migrations", -], default-features = false } -rspc = { version = "0.1.2", features = ["axum"] } - -[workspace.metadata.pkg-config] -openssl = "__cra_version__" \ No newline at end of file diff --git a/external/rspc/create-rspc-app/templates/axum_pcr_base/README.md b/external/rspc/create-rspc-app/templates/axum_pcr_base/README.md deleted file mode 100644 index 59296dd..0000000 --- a/external/rspc/create-rspc-app/templates/axum_pcr_base/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# Create rspc app - -This app was scaffolded using the [create-rspc-app](https://rspc.dev) CLI. - -## Usage - -```bash -# Terminal One -cd web -pnpm i -pnpm dev - -# Terminal Two -cd api/ -cargo prisma generate -cargo prisma db push -cargo run -``` \ No newline at end of file diff --git a/external/rspc/create-rspc-app/templates/axum_pcr_base/api/Cargo__toml b/external/rspc/create-rspc-app/templates/axum_pcr_base/api/Cargo__toml deleted file mode 100644 index b92333a..0000000 --- a/external/rspc/create-rspc-app/templates/axum_pcr_base/api/Cargo__toml +++ /dev/null @@ -1,17 +0,0 @@ -[package] -name = "__name__" -default-run = "__name__" -version = "0.1.0" -edition = "2021" -rust-version = "1.64" -publish = false - -[dependencies] -serde_json = "1.0.85" -serde = { version = "1.0.145", features = ["derive"] } -axum = "0.5.16" -rspc = { workspace = true } -tokio = { version = "1.21.2", features = ["full"] } -prisma-client-rust = { workspace = true } -dotenv = "0.15.0" -tower-http = { version = "0.3.4", features = ["cors"] } diff --git a/external/rspc/create-rspc-app/templates/axum_pcr_base/api/src/api/mod.rs b/external/rspc/create-rspc-app/templates/axum_pcr_base/api/src/api/mod.rs deleted file mode 100644 index 93d42cd..0000000 --- a/external/rspc/create-rspc-app/templates/axum_pcr_base/api/src/api/mod.rs +++ /dev/null @@ -1,21 +0,0 @@ -use std::sync::Arc; - -use crate::prisma; -use rspc::Config; -use rspc::RouterBuilder; -use std::path::PathBuf; - -pub struct Ctx { - pub client: Arc, -} - -pub type Router = rspc::Router; - -pub(crate) fn new() -> RouterBuilder { - Router::new() - .config( - Config::new() - .export_ts_bindings(PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("bindings.ts")), - ) - .query("version", |t| t(|_, _: ()| env!("CARGO_PKG_VERSION"))) -} diff --git a/external/rspc/create-rspc-app/templates/axum_pcr_base/api/src/main.rs b/external/rspc/create-rspc-app/templates/axum_pcr_base/api/src/main.rs deleted file mode 100644 index a890193..0000000 --- a/external/rspc/create-rspc-app/templates/axum_pcr_base/api/src/main.rs +++ /dev/null @@ -1,44 +0,0 @@ -use std::{net::SocketAddr, sync::Arc}; -use axum::{ - http::{HeaderValue, Method}, - routing::get, -}; -use tower_http::cors::CorsLayer; - -mod api; -mod utils; -mod prisma; - -fn router(client: Arc) -> axum::Router { - let router = api::new().build().arced(); - - axum::Router::new() - .route("/", get(|| async { "Hello 'rspc'!" })) - .route( - "/rspc/:id", - router - .endpoint(move || api::Ctx { - client: Arc::clone(&client), - }) - .axum(), - ) - .layer( - CorsLayer::new() - .allow_origin("http://localhost:3000".parse::().unwrap()) - .allow_methods([Method::GET]), - ) -} - -#[tokio::main] -async fn main() { - dotenv::dotenv().ok(); - let client = Arc::new(prisma::new_client().await.unwrap()); - - let addr = "[::]:9000".parse::().unwrap(); // This listens on IPv6 and IPv4 - println!("{} listening on http://{}", env!("CARGO_CRATE_NAME"), addr); - axum::Server::bind(&addr) - .serve(router(client).into_make_service()) - .with_graceful_shutdown(utils::axum_shutdown_signal()) - .await - .expect("Error with HTTP server!"); -} diff --git a/external/rspc/create-rspc-app/templates/axum_pcr_base/api/src/utils.rs b/external/rspc/create-rspc-app/templates/axum_pcr_base/api/src/utils.rs deleted file mode 100644 index 6f35af5..0000000 --- a/external/rspc/create-rspc-app/templates/axum_pcr_base/api/src/utils.rs +++ /dev/null @@ -1,28 +0,0 @@ -use tokio::signal; - -/// shutdown_signal will inform axum to gracefully shutdown when the process is asked to shutdown. -pub async fn axum_shutdown_signal() { - let ctrl_c = async { - signal::ctrl_c() - .await - .expect("failed to install Ctrl+C handler"); - }; - - #[cfg(unix)] - let terminate = async { - signal::unix::signal(signal::unix::SignalKind::terminate()) - .expect("failed to install signal handler") - .recv() - .await; - }; - - #[cfg(not(unix))] - let terminate = std::future::pending::<()>(); - - tokio::select! { - _ = ctrl_c => {}, - _ = terminate => {}, - } - - println!("signal received, starting graceful shutdown"); -} diff --git a/external/rspc/create-rspc-app/templates/axum_pcr_base/prisma/schema.prisma b/external/rspc/create-rspc-app/templates/axum_pcr_base/prisma/schema.prisma deleted file mode 100644 index 0aea6bc..0000000 --- a/external/rspc/create-rspc-app/templates/axum_pcr_base/prisma/schema.prisma +++ /dev/null @@ -1,18 +0,0 @@ -// This is your Prisma schema file, -// learn more about it in the docs: https://pris.ly/d/prisma-schema - -datasource db { - provider = "sqlite" - url = env("DATABASE_URL") -} - -generator client { - provider = "cargo prisma" - output = "../api/src/prisma.rs" -} - -model User { - id Int @id @default(autoincrement()) - name String - email String @unique -} diff --git a/external/rspc/create-rspc-app/templates/base/.gitignore b/external/rspc/create-rspc-app/templates/base/.gitignore deleted file mode 100644 index afcf234..0000000 --- a/external/rspc/create-rspc-app/templates/base/.gitignore +++ /dev/null @@ -1,17 +0,0 @@ -# System files -.DS_Store - -# Generated by Cargo -# will have compiled files and executables -target - -# These are backup files generated by rustfmt -**/*.rs.bk - -# Node -node_modules -dist - -# Env file -.env -.env.local \ No newline at end of file diff --git a/external/rspc/create-rspc-app/templates/base/.vscode/extensions.json b/external/rspc/create-rspc-app/templates/base/.vscode/extensions.json deleted file mode 100644 index a1c513f..0000000 --- a/external/rspc/create-rspc-app/templates/base/.vscode/extensions.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "recommendations": ["rust-lang.rust-analyzer", "oscartbeaumont.rspc-vscode"] -} diff --git a/external/rspc/create-rspc-app/templates/pcr_base/.cargo/config.toml b/external/rspc/create-rspc-app/templates/pcr_base/.cargo/config.toml deleted file mode 100644 index 2090db1..0000000 --- a/external/rspc/create-rspc-app/templates/pcr_base/.cargo/config.toml +++ /dev/null @@ -1,2 +0,0 @@ -[alias] -prisma = "run -p prisma-cli --" diff --git a/external/rspc/create-rspc-app/templates/pcr_base/.gitignore b/external/rspc/create-rspc-app/templates/pcr_base/.gitignore deleted file mode 100644 index 352ec80..0000000 --- a/external/rspc/create-rspc-app/templates/pcr_base/.gitignore +++ /dev/null @@ -1,21 +0,0 @@ -# System files -.DS_Store - -# Generated by Cargo -# will have compiled files and executables -target - -# These are backup files generated by rustfmt -**/*.rs.bk - -# Node -node_modules -dist - -# Env file -.env -.env.local - -# Prisma Client Rust -*.db -functions/*/src/prisma.rs \ No newline at end of file diff --git a/external/rspc/create-rspc-app/templates/pcr_base/prisma/Cargo__toml b/external/rspc/create-rspc-app/templates/pcr_base/prisma/Cargo__toml deleted file mode 100644 index 94d564a..0000000 --- a/external/rspc/create-rspc-app/templates/pcr_base/prisma/Cargo__toml +++ /dev/null @@ -1,12 +0,0 @@ -[package] -name = "prisma-cli" -version = "0.1.0" -edition = "2021" - -[dependencies] -prisma-client-rust-cli = { workspace = true, features = [ - "migrations", -] } -serde = { version = "1.0", features = ["derive"] } -serde_json = "1.0" -tokio = { version = "1.13.0", features = ["full"] } diff --git a/external/rspc/create-rspc-app/templates/pcr_base/prisma/migrations/.gitkeep b/external/rspc/create-rspc-app/templates/pcr_base/prisma/migrations/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/external/rspc/create-rspc-app/templates/pcr_base/prisma/src/main.rs b/external/rspc/create-rspc-app/templates/pcr_base/prisma/src/main.rs deleted file mode 100644 index f758015..0000000 --- a/external/rspc/create-rspc-app/templates/pcr_base/prisma/src/main.rs +++ /dev/null @@ -1,3 +0,0 @@ -fn main() { - prisma_client_rust_cli::run(); -} diff --git a/external/rspc/create-rspc-app/templates/react_base_axum/.gitignore b/external/rspc/create-rspc-app/templates/react_base_axum/.gitignore deleted file mode 100644 index a547bf3..0000000 --- a/external/rspc/create-rspc-app/templates/react_base_axum/.gitignore +++ /dev/null @@ -1,24 +0,0 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* -lerna-debug.log* - -node_modules -dist -dist-ssr -*.local - -# Editor directories and files -.vscode/* -!.vscode/extensions.json -.idea -.DS_Store -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? diff --git a/external/rspc/create-rspc-app/templates/react_base_axum/index.html b/external/rspc/create-rspc-app/templates/react_base_axum/index.html deleted file mode 100644 index e0d1c84..0000000 --- a/external/rspc/create-rspc-app/templates/react_base_axum/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - Vite + React + TS - - -
- - - diff --git a/external/rspc/create-rspc-app/templates/react_base_axum/package.json b/external/rspc/create-rspc-app/templates/react_base_axum/package.json deleted file mode 100644 index a1c1365..0000000 --- a/external/rspc/create-rspc-app/templates/react_base_axum/package.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "name": "{{name}}", - "private": true, - "version": "0.0.0", - "type": "module", - "scripts": { - "dev": "vite", - "build": "tsc && vite build", - "preview": "vite preview", - "typecheck": "tsc --noEmit" - }, - "dependencies": { - "@rspc/client": "^0.1.2", - "@tanstack/react-query": "^4.10.1", - "react": "^18.2.0", - "react-dom": "^18.2.0" - }, - "devDependencies": { - "@rspc/react": "^0.1.2", - "@types/react": "^18.0.17", - "@types/react-dom": "^18.0.6", - "@vitejs/plugin-react": "^2.1.0", - "typescript": "^4.6.4", - "vite": "^3.1.0" - } -} diff --git a/external/rspc/create-rspc-app/templates/react_base_axum/public/vite.svg b/external/rspc/create-rspc-app/templates/react_base_axum/public/vite.svg deleted file mode 100644 index e7b8dfb..0000000 --- a/external/rspc/create-rspc-app/templates/react_base_axum/public/vite.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/external/rspc/create-rspc-app/templates/react_base_axum/src/App.tsx b/external/rspc/create-rspc-app/templates/react_base_axum/src/App.tsx deleted file mode 100644 index 0afe7f2..0000000 --- a/external/rspc/create-rspc-app/templates/react_base_axum/src/App.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import rspc from "./utils/rspc"; - -function App() { - const { data } = rspc.useQuery(["version"]); - - return ( -
-

You are running v{data}

-

This data is from the rust side

-
- ); -} - -export default App; diff --git a/external/rspc/create-rspc-app/templates/react_base_axum/src/main.tsx b/external/rspc/create-rspc-app/templates/react_base_axum/src/main.tsx deleted file mode 100644 index 6b3dc19..0000000 --- a/external/rspc/create-rspc-app/templates/react_base_axum/src/main.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import React from "react"; -import ReactDOM from "react-dom/client"; -import App from "./App"; -import { rspc, client, queryClient } from "./utils/rspc"; - -ReactDOM.createRoot(document.getElementById("root")!).render( - - - - - - - -); diff --git a/external/rspc/create-rspc-app/templates/react_base_axum/src/utils/rspc.ts b/external/rspc/create-rspc-app/templates/react_base_axum/src/utils/rspc.ts deleted file mode 100644 index 6355e7f..0000000 --- a/external/rspc/create-rspc-app/templates/react_base_axum/src/utils/rspc.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { QueryClient } from "@tanstack/react-query"; -import { FetchTransport, createClient } from "@rspc/client"; -import { createReactQueryHooks } from "@rspc/react"; - -import type { Procedures } from "./bindings"; // These are generated by rspc in Rust for you. - -const client = createClient({ - transport: new FetchTransport("http://localhost:9000/rspc"), -}); - -const queryClient = new QueryClient(); -const rspc = createReactQueryHooks(); - -export { rspc, client, queryClient }; diff --git a/external/rspc/create-rspc-app/templates/react_base_axum/src/vite-env.d.ts b/external/rspc/create-rspc-app/templates/react_base_axum/src/vite-env.d.ts deleted file mode 100644 index 11f02fe..0000000 --- a/external/rspc/create-rspc-app/templates/react_base_axum/src/vite-env.d.ts +++ /dev/null @@ -1 +0,0 @@ -/// diff --git a/external/rspc/create-rspc-app/templates/react_base_axum/tsconfig.json b/external/rspc/create-rspc-app/templates/react_base_axum/tsconfig.json deleted file mode 100644 index 3d0a51a..0000000 --- a/external/rspc/create-rspc-app/templates/react_base_axum/tsconfig.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "compilerOptions": { - "target": "ESNext", - "useDefineForClassFields": true, - "lib": ["DOM", "DOM.Iterable", "ESNext"], - "allowJs": false, - "skipLibCheck": true, - "esModuleInterop": false, - "allowSyntheticDefaultImports": true, - "strict": true, - "forceConsistentCasingInFileNames": true, - "module": "ESNext", - "moduleResolution": "Node", - "resolveJsonModule": true, - "isolatedModules": true, - "noEmit": true, - "jsx": "react-jsx" - }, - "include": ["src"], - "references": [{ "path": "./tsconfig.node.json" }] -} diff --git a/external/rspc/create-rspc-app/templates/react_base_axum/tsconfig.node.json b/external/rspc/create-rspc-app/templates/react_base_axum/tsconfig.node.json deleted file mode 100644 index 9d31e2a..0000000 --- a/external/rspc/create-rspc-app/templates/react_base_axum/tsconfig.node.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "compilerOptions": { - "composite": true, - "module": "ESNext", - "moduleResolution": "Node", - "allowSyntheticDefaultImports": true - }, - "include": ["vite.config.ts"] -} diff --git a/external/rspc/create-rspc-app/templates/react_base_axum/vite.config.ts b/external/rspc/create-rspc-app/templates/react_base_axum/vite.config.ts deleted file mode 100644 index 3d63048..0000000 --- a/external/rspc/create-rspc-app/templates/react_base_axum/vite.config.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { defineConfig } from 'vite' -import react from '@vitejs/plugin-react' - -// https://vitejs.dev/config/ -export default defineConfig({ - plugins: [react()], - server: { - port: 3000, - strictPort: true - } -}) diff --git a/external/rspc/create-rspc-app/templates/react_base_tauri/.gitignore b/external/rspc/create-rspc-app/templates/react_base_tauri/.gitignore deleted file mode 100644 index a547bf3..0000000 --- a/external/rspc/create-rspc-app/templates/react_base_tauri/.gitignore +++ /dev/null @@ -1,24 +0,0 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* -lerna-debug.log* - -node_modules -dist -dist-ssr -*.local - -# Editor directories and files -.vscode/* -!.vscode/extensions.json -.idea -.DS_Store -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? diff --git a/external/rspc/create-rspc-app/templates/react_base_tauri/index.html b/external/rspc/create-rspc-app/templates/react_base_tauri/index.html deleted file mode 100644 index e0d1c84..0000000 --- a/external/rspc/create-rspc-app/templates/react_base_tauri/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - Vite + React + TS - - -
- - - diff --git a/external/rspc/create-rspc-app/templates/react_base_tauri/package.json b/external/rspc/create-rspc-app/templates/react_base_tauri/package.json deleted file mode 100644 index ae24a19..0000000 --- a/external/rspc/create-rspc-app/templates/react_base_tauri/package.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "name": "{{name}}", - "private": true, - "version": "0.0.0", - "type": "module", - "scripts": { - "dev": "vite", - "build": "tsc && vite build", - "preview": "vite preview", - "typecheck": "tsc --noEmit" - }, - "dependencies": { - "@rspc/client": "^0.1.2", - "@rspc/tauri": "^0.1.2", - "@tanstack/react-query": "^4.10.1", - "react": "^18.2.0", - "react-dom": "^18.2.0" - }, - "devDependencies": { - "@rspc/react": "^0.1.2", - "@types/react": "^18.0.17", - "@types/react-dom": "^18.0.6", - "@vitejs/plugin-react": "^2.1.0", - "typescript": "^4.6.4", - "vite": "^3.1.0" - } -} diff --git a/external/rspc/create-rspc-app/templates/react_base_tauri/public/vite.svg b/external/rspc/create-rspc-app/templates/react_base_tauri/public/vite.svg deleted file mode 100644 index e7b8dfb..0000000 --- a/external/rspc/create-rspc-app/templates/react_base_tauri/public/vite.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/external/rspc/create-rspc-app/templates/react_base_tauri/src/App.tsx b/external/rspc/create-rspc-app/templates/react_base_tauri/src/App.tsx deleted file mode 100644 index 34fb0f9..0000000 --- a/external/rspc/create-rspc-app/templates/react_base_tauri/src/App.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import { rspc } from "./utils/rspc"; - -function App() { - const { data } = rspc.useQuery(["version"]); - - return ( -
-

You are running v{data}

-

This data is from the rust side

-
- ); -} - -export default App; diff --git a/external/rspc/create-rspc-app/templates/react_base_tauri/src/main.tsx b/external/rspc/create-rspc-app/templates/react_base_tauri/src/main.tsx deleted file mode 100644 index 28090ae..0000000 --- a/external/rspc/create-rspc-app/templates/react_base_tauri/src/main.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import React from "react"; -import ReactDOM from "react-dom/client"; -import App from "./App"; -import { rspc, client, queryClient } from "./utils/rspc"; - -ReactDOM.createRoot(document.getElementById("root")!).render( - - - - - -); diff --git a/external/rspc/create-rspc-app/templates/react_base_tauri/src/utils/rspc.ts b/external/rspc/create-rspc-app/templates/react_base_tauri/src/utils/rspc.ts deleted file mode 100644 index ff29832..0000000 --- a/external/rspc/create-rspc-app/templates/react_base_tauri/src/utils/rspc.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { QueryClient } from "@tanstack/react-query"; -import { FetchTransport, createClient } from "@rspc/client"; -import { createReactQueryHooks } from "@rspc/react"; - -import type { Procedures } from "./bindings"; // These are generated by rspc in Rust for you. - -const client = createClient({ - transport: new TauriTransport(), -}); - -const queryClient = new QueryClient(); -const rspc = createReactQueryHooks(); - -export { rspc, client, queryClient }; diff --git a/external/rspc/create-rspc-app/templates/react_base_tauri/src/vite-env.d.ts b/external/rspc/create-rspc-app/templates/react_base_tauri/src/vite-env.d.ts deleted file mode 100644 index 11f02fe..0000000 --- a/external/rspc/create-rspc-app/templates/react_base_tauri/src/vite-env.d.ts +++ /dev/null @@ -1 +0,0 @@ -/// diff --git a/external/rspc/create-rspc-app/templates/react_base_tauri/tsconfig.json b/external/rspc/create-rspc-app/templates/react_base_tauri/tsconfig.json deleted file mode 100644 index 3d0a51a..0000000 --- a/external/rspc/create-rspc-app/templates/react_base_tauri/tsconfig.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "compilerOptions": { - "target": "ESNext", - "useDefineForClassFields": true, - "lib": ["DOM", "DOM.Iterable", "ESNext"], - "allowJs": false, - "skipLibCheck": true, - "esModuleInterop": false, - "allowSyntheticDefaultImports": true, - "strict": true, - "forceConsistentCasingInFileNames": true, - "module": "ESNext", - "moduleResolution": "Node", - "resolveJsonModule": true, - "isolatedModules": true, - "noEmit": true, - "jsx": "react-jsx" - }, - "include": ["src"], - "references": [{ "path": "./tsconfig.node.json" }] -} diff --git a/external/rspc/create-rspc-app/templates/react_base_tauri/tsconfig.node.json b/external/rspc/create-rspc-app/templates/react_base_tauri/tsconfig.node.json deleted file mode 100644 index 9d31e2a..0000000 --- a/external/rspc/create-rspc-app/templates/react_base_tauri/tsconfig.node.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "compilerOptions": { - "composite": true, - "module": "ESNext", - "moduleResolution": "Node", - "allowSyntheticDefaultImports": true - }, - "include": ["vite.config.ts"] -} diff --git a/external/rspc/create-rspc-app/templates/react_base_tauri/vite.config.ts b/external/rspc/create-rspc-app/templates/react_base_tauri/vite.config.ts deleted file mode 100644 index bb2f425..0000000 --- a/external/rspc/create-rspc-app/templates/react_base_tauri/vite.config.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { defineConfig } from 'vite' -import react from '@vitejs/plugin-react' - -// https://vitejs.dev/config/ -export default defineConfig({ - plugins: [react()], - server: { - port: 3000, - strictPort: true, - } -}) diff --git a/external/rspc/create-rspc-app/templates/solid_base_axum/.gitignore b/external/rspc/create-rspc-app/templates/solid_base_axum/.gitignore deleted file mode 100644 index 76add87..0000000 --- a/external/rspc/create-rspc-app/templates/solid_base_axum/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -node_modules -dist \ No newline at end of file diff --git a/external/rspc/create-rspc-app/templates/solid_base_axum/README.md b/external/rspc/create-rspc-app/templates/solid_base_axum/README.md deleted file mode 100644 index 434f7bb..0000000 --- a/external/rspc/create-rspc-app/templates/solid_base_axum/README.md +++ /dev/null @@ -1,34 +0,0 @@ -## Usage - -Those templates dependencies are maintained via [pnpm](https://pnpm.io) via `pnpm up -Lri`. - -This is the reason you see a `pnpm-lock.yaml`. That being said, any package manager will work. This file can be safely be removed once you clone a template. - -```bash -$ npm install # or pnpm install or yarn install -``` - -### Learn more on the [Solid Website](https://solidjs.com) and come chat with us on our [Discord](https://discord.com/invite/solidjs) - -## Available Scripts - -In the project directory, you can run: - -### `npm dev` or `npm start` - -Runs the app in the development mode.
-Open [http://localhost:3000](http://localhost:3000) to view it in the browser. - -The page will reload if you make edits.
- -### `npm run build` - -Builds the app for production to the `dist` folder.
-It correctly bundles Solid in production mode and optimizes the build for the best performance. - -The build is minified and the filenames include the hashes.
-Your app is ready to be deployed! - -## Deployment - -You can deploy the `dist` folder to any static host provider (netlify, surge, now, etc.) diff --git a/external/rspc/create-rspc-app/templates/solid_base_axum/index.html b/external/rspc/create-rspc-app/templates/solid_base_axum/index.html deleted file mode 100644 index 1905a04..0000000 --- a/external/rspc/create-rspc-app/templates/solid_base_axum/index.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - Solid App - - - -
- - - - diff --git a/external/rspc/create-rspc-app/templates/solid_base_axum/package.json b/external/rspc/create-rspc-app/templates/solid_base_axum/package.json deleted file mode 100644 index cbce4b5..0000000 --- a/external/rspc/create-rspc-app/templates/solid_base_axum/package.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "{{name}}", - "version": "0.0.0", - "description": "", - "scripts": { - "dev": "vite", - "build": "vite build", - "serve": "vite preview", - "typecheck": "tsc --noEmit" - }, - "license": "MIT", - "devDependencies": { - "@rspc/client": "^0.1.2", - "@rspc/solid": "^0.1.2", - "@rspc/tauri": "^0.1.2", - "@tanstack/solid-query": "^4.10.1", - "@tauri-apps/api": "^1.1.0", - "typescript": "^4.8.2", - "vite": "^3.0.9", - "vite-plugin-solid": "^2.3.0" - }, - "dependencies": { - "solid-js": "^1.5.1" - } -} diff --git a/external/rspc/create-rspc-app/templates/solid_base_axum/pnpm-lock.yaml b/external/rspc/create-rspc-app/templates/solid_base_axum/pnpm-lock.yaml deleted file mode 100644 index d0a8bdb..0000000 --- a/external/rspc/create-rspc-app/templates/solid_base_axum/pnpm-lock.yaml +++ /dev/null @@ -1,910 +0,0 @@ -lockfileVersion: 5.4 - -specifiers: - solid-js: ^1.5.1 - typescript: ^4.8.2 - vite: ^3.0.9 - vite-plugin-solid: ^2.3.0 - -dependencies: - solid-js: 1.5.1 - -devDependencies: - typescript: 4.8.2 - vite: 3.0.9 - vite-plugin-solid: 2.3.0_solid-js@1.5.1+vite@3.0.9 - -packages: - - /@ampproject/remapping/2.2.0: - resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/gen-mapping': 0.1.1 - '@jridgewell/trace-mapping': 0.3.14 - dev: true - - /@babel/code-frame/7.18.6: - resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/highlight': 7.18.6 - dev: true - - /@babel/compat-data/7.18.8: - resolution: {integrity: sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/core/7.18.6: - resolution: {integrity: sha512-cQbWBpxcbbs/IUredIPkHiAGULLV8iwgNRMFzvbhEXISp4f3rUUXE5+TIw6KwUWUR3DwyI6gmBRnmAtYaWehwQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.2.0 - '@babel/code-frame': 7.18.6 - '@babel/generator': 7.18.7 - '@babel/helper-compilation-targets': 7.18.6_@babel+core@7.18.6 - '@babel/helper-module-transforms': 7.18.8 - '@babel/helpers': 7.18.6 - '@babel/parser': 7.18.8 - '@babel/template': 7.18.6 - '@babel/traverse': 7.18.8 - '@babel/types': 7.18.8 - convert-source-map: 1.8.0 - debug: 4.3.4 - gensync: 1.0.0-beta.2 - json5: 2.2.1 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/generator/7.18.7: - resolution: {integrity: sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.18.8 - '@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.8 - dev: true - - /@babel/helper-compilation-targets/7.18.6_@babel+core@7.18.6: - resolution: {integrity: sha512-vFjbfhNCzqdeAtZflUFrG5YIFqGTqsctrtkZ1D/NB0mDW9TwW3GmmUepYY4G9wCET5rY5ugz4OGTcLd614IzQg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/compat-data': 7.18.8 - '@babel/core': 7.18.6 - '@babel/helper-validator-option': 7.18.6 - browserslist: 4.21.2 - semver: 6.3.0 - dev: true - - /@babel/helper-create-class-features-plugin/7.18.6_@babel+core@7.18.6: - resolution: {integrity: sha512-YfDzdnoxHGV8CzqHGyCbFvXg5QESPFkXlHtvdCkesLjjVMT2Adxe4FGUR5ChIb3DxSaXO12iIOCWoXdsUVwnqw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.18.6 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-environment-visitor': 7.18.6 - '@babel/helper-function-name': 7.18.6 - '@babel/helper-member-expression-to-functions': 7.18.6 - '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/helper-replace-supers': 7.18.6 - '@babel/helper-split-export-declaration': 7.18.6 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/helper-environment-visitor/7.18.6: - resolution: {integrity: sha512-8n6gSfn2baOY+qlp+VSzsosjCVGFqWKmDF0cCWOybh52Dw3SEyoWR1KrhMJASjLwIEkkAufZ0xvr+SxLHSpy2Q==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-function-name/7.18.6: - resolution: {integrity: sha512-0mWMxV1aC97dhjCah5U5Ua7668r5ZmSC2DLfH2EZnf9c3/dHZKiFa5pRLMH5tjSl471tY6496ZWk/kjNONBxhw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.18.6 - '@babel/types': 7.18.8 - dev: true - - /@babel/helper-hoist-variables/7.18.6: - resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.18.8 - dev: true - - /@babel/helper-member-expression-to-functions/7.18.6: - resolution: {integrity: sha512-CeHxqwwipekotzPDUuJOfIMtcIHBuc7WAzLmTYWctVigqS5RktNMQ5bEwQSuGewzYnCtTWa3BARXeiLxDTv+Ng==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.18.8 - dev: true - - /@babel/helper-module-imports/7.16.0: - resolution: {integrity: sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.18.8 - dev: true - - /@babel/helper-module-imports/7.18.6: - resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.18.8 - dev: true - - /@babel/helper-module-transforms/7.18.8: - resolution: {integrity: sha512-che3jvZwIcZxrwh63VfnFTUzcAM9v/lznYkkRxIBGMPt1SudOKHAEec0SIRCfiuIzTcF7VGj/CaTT6gY4eWxvA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-environment-visitor': 7.18.6 - '@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/template': 7.18.6 - '@babel/traverse': 7.18.8 - '@babel/types': 7.18.8 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/helper-optimise-call-expression/7.18.6: - resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.18.8 - dev: true - - /@babel/helper-plugin-utils/7.18.6: - resolution: {integrity: sha512-gvZnm1YAAxh13eJdkb9EWHBnF3eAub3XTLCZEehHT2kWxiKVRL64+ae5Y6Ivne0mVHmMYKT+xWgZO+gQhuLUBg==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-replace-supers/7.18.6: - resolution: {integrity: sha512-fTf7zoXnUGl9gF25fXCWE26t7Tvtyn6H4hkLSYhATwJvw2uYxd3aoXplMSe0g9XbwK7bmxNes7+FGO0rB/xC0g==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-environment-visitor': 7.18.6 - '@babel/helper-member-expression-to-functions': 7.18.6 - '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/traverse': 7.18.8 - '@babel/types': 7.18.8 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/helper-simple-access/7.18.6: - resolution: {integrity: sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.18.8 - dev: true - - /@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.8 - dev: true - - /@babel/helper-validator-identifier/7.18.6: - resolution: {integrity: sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-validator-option/7.18.6: - resolution: {integrity: sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helpers/7.18.6: - resolution: {integrity: sha512-vzSiiqbQOghPngUYt/zWGvK3LAsPhz55vc9XNN0xAl2gV4ieShI2OQli5duxWHD+72PZPTKAcfcZDE1Cwc5zsQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.18.6 - '@babel/traverse': 7.18.8 - '@babel/types': 7.18.8 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/highlight/7.18.6: - resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.18.6 - chalk: 2.4.2 - js-tokens: 4.0.0 - dev: true - - /@babel/parser/7.18.8: - resolution: {integrity: sha512-RSKRfYX20dyH+elbJK2uqAkVyucL+xXzhqlMD5/ZXx+dAAwpyB7HsvnHe/ZUGOF+xLr5Wx9/JoXVTj6BQE2/oA==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.18.8 - dev: true - - /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.18.6: - resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 - dev: true - - /@babel/plugin-syntax-typescript/7.18.6_@babel+core@7.18.6: - resolution: {integrity: sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 - dev: true - - /@babel/plugin-transform-typescript/7.18.8_@babel+core@7.18.6: - resolution: {integrity: sha512-p2xM8HI83UObjsZGofMV/EdYjamsDm6MoN3hXPYIT0+gxIoopE+B7rPYKAxfrz9K9PK7JafTTjqYC6qipLExYA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.6 - '@babel/helper-create-class-features-plugin': 7.18.6_@babel+core@7.18.6 - '@babel/helper-plugin-utils': 7.18.6 - '@babel/plugin-syntax-typescript': 7.18.6_@babel+core@7.18.6 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/preset-typescript/7.18.6_@babel+core@7.18.6: - resolution: {integrity: sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 - '@babel/helper-validator-option': 7.18.6 - '@babel/plugin-transform-typescript': 7.18.8_@babel+core@7.18.6 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/template/7.18.6: - resolution: {integrity: sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.18.6 - '@babel/parser': 7.18.8 - '@babel/types': 7.18.8 - dev: true - - /@babel/traverse/7.18.8: - resolution: {integrity: sha512-UNg/AcSySJYR/+mIcJQDCv00T+AqRO7j/ZEJLzpaYtgM48rMg5MnkJgyNqkzo88+p4tfRvZJCEiwwfG6h4jkRg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.18.6 - '@babel/generator': 7.18.7 - '@babel/helper-environment-visitor': 7.18.6 - '@babel/helper-function-name': 7.18.6 - '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/parser': 7.18.8 - '@babel/types': 7.18.8 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/types/7.18.8: - resolution: {integrity: sha512-qwpdsmraq0aJ3osLJRApsc2ouSJCdnMeZwB0DhbtHAtRpZNZCdlbRnHIgcRKzdE1g0iOGg644fzjOBcdOz9cPw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.18.6 - to-fast-properties: 2.0.0 - dev: true - - /@esbuild/linux-loong64/0.14.54: - resolution: {integrity: sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@jridgewell/gen-mapping/0.1.1: - resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.14 - dev: true - - /@jridgewell/gen-mapping/0.3.2: - resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.14 - '@jridgewell/trace-mapping': 0.3.14 - dev: true - - /@jridgewell/resolve-uri/3.1.0: - resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} - engines: {node: '>=6.0.0'} - dev: true - - /@jridgewell/set-array/1.1.2: - resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} - engines: {node: '>=6.0.0'} - dev: true - - /@jridgewell/sourcemap-codec/1.4.14: - resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} - dev: true - - /@jridgewell/trace-mapping/0.3.14: - resolution: {integrity: sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==} - dependencies: - '@jridgewell/resolve-uri': 3.1.0 - '@jridgewell/sourcemap-codec': 1.4.14 - dev: true - - /ansi-styles/3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} - dependencies: - color-convert: 1.9.3 - dev: true - - /babel-plugin-jsx-dom-expressions/0.33.12_@babel+core@7.18.6: - resolution: {integrity: sha512-FQeNcBvC+PrPYGpeUztI7AiiAqJL2H8e7mL4L6qHZ7B4wZfbgyREsHZwKmmDqxAehlyAUolTdhDNk9xfyHdIZw==} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.18.6 - '@babel/helper-module-imports': 7.16.0 - '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.18.6 - '@babel/types': 7.18.8 - html-entities: 2.3.2 - dev: true - - /babel-preset-solid/1.4.6_@babel+core@7.18.6: - resolution: {integrity: sha512-5n+nm1zgj7BK9cv0kYu0p+kbsXgGbrxLmA5bv5WT0V5WnqRgshWILInPWLJNZbvP5gBj+huDKwk3J4RhhbFlhA==} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.18.6 - babel-plugin-jsx-dom-expressions: 0.33.12_@babel+core@7.18.6 - dev: true - - /browserslist/4.21.2: - resolution: {integrity: sha512-MonuOgAtUB46uP5CezYbRaYKBNt2LxP0yX+Pmj4LkcDFGkn9Cbpi83d9sCjwQDErXsIJSzY5oKGDbgOlF/LPAA==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - dependencies: - caniuse-lite: 1.0.30001366 - electron-to-chromium: 1.4.189 - node-releases: 2.0.6 - update-browserslist-db: 1.0.4_browserslist@4.21.2 - dev: true - - /caniuse-lite/1.0.30001366: - resolution: {integrity: sha512-yy7XLWCubDobokgzudpkKux8e0UOOnLHE6mlNJBzT3lZJz6s5atSEzjoL+fsCPkI0G8MP5uVdDx1ur/fXEWkZA==} - dev: true - - /chalk/2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} - dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 - dev: true - - /color-convert/1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - dependencies: - color-name: 1.1.3 - dev: true - - /color-name/1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - dev: true - - /convert-source-map/1.8.0: - resolution: {integrity: sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==} - dependencies: - safe-buffer: 5.1.2 - dev: true - - /csstype/3.1.0: - resolution: {integrity: sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==} - - /debug/4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.2 - dev: true - - /electron-to-chromium/1.4.189: - resolution: {integrity: sha512-dQ6Zn4ll2NofGtxPXaDfY2laIa6NyCQdqXYHdwH90GJQW0LpJJib0ZU/ERtbb0XkBEmUD2eJtagbOie3pdMiPg==} - dev: true - - /esbuild-android-64/0.14.54: - resolution: {integrity: sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - dev: true - optional: true - - /esbuild-android-arm64/0.14.54: - resolution: {integrity: sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true - - /esbuild-darwin-64/0.14.54: - resolution: {integrity: sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /esbuild-darwin-arm64/0.14.54: - resolution: {integrity: sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /esbuild-freebsd-64/0.14.54: - resolution: {integrity: sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - - /esbuild-freebsd-arm64/0.14.54: - resolution: {integrity: sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-32/0.14.54: - resolution: {integrity: sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-64/0.14.54: - resolution: {integrity: sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-arm/0.14.54: - resolution: {integrity: sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-arm64/0.14.54: - resolution: {integrity: sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-mips64le/0.14.54: - resolution: {integrity: sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-ppc64le/0.14.54: - resolution: {integrity: sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-riscv64/0.14.54: - resolution: {integrity: sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-s390x/0.14.54: - resolution: {integrity: sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-netbsd-64/0.14.54: - resolution: {integrity: sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: true - optional: true - - /esbuild-openbsd-64/0.14.54: - resolution: {integrity: sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: true - optional: true - - /esbuild-sunos-64/0.14.54: - resolution: {integrity: sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: true - optional: true - - /esbuild-windows-32/0.14.54: - resolution: {integrity: sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /esbuild-windows-64/0.14.54: - resolution: {integrity: sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /esbuild-windows-arm64/0.14.54: - resolution: {integrity: sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /esbuild/0.14.54: - resolution: {integrity: sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/linux-loong64': 0.14.54 - esbuild-android-64: 0.14.54 - esbuild-android-arm64: 0.14.54 - esbuild-darwin-64: 0.14.54 - esbuild-darwin-arm64: 0.14.54 - esbuild-freebsd-64: 0.14.54 - esbuild-freebsd-arm64: 0.14.54 - esbuild-linux-32: 0.14.54 - esbuild-linux-64: 0.14.54 - esbuild-linux-arm: 0.14.54 - esbuild-linux-arm64: 0.14.54 - esbuild-linux-mips64le: 0.14.54 - esbuild-linux-ppc64le: 0.14.54 - esbuild-linux-riscv64: 0.14.54 - esbuild-linux-s390x: 0.14.54 - esbuild-netbsd-64: 0.14.54 - esbuild-openbsd-64: 0.14.54 - esbuild-sunos-64: 0.14.54 - esbuild-windows-32: 0.14.54 - esbuild-windows-64: 0.14.54 - esbuild-windows-arm64: 0.14.54 - dev: true - - /escalade/3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} - engines: {node: '>=6'} - dev: true - - /escape-string-regexp/1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - dev: true - - /fsevents/2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /function-bind/1.1.1: - resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} - dev: true - - /gensync/1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - dev: true - - /globals/11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - dev: true - - /has-flag/3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - dev: true - - /has/1.0.3: - resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} - engines: {node: '>= 0.4.0'} - dependencies: - function-bind: 1.1.1 - dev: true - - /html-entities/2.3.2: - resolution: {integrity: sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==} - dev: true - - /is-core-module/2.10.0: - resolution: {integrity: sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==} - dependencies: - has: 1.0.3 - dev: true - - /is-what/4.1.7: - resolution: {integrity: sha512-DBVOQNiPKnGMxRMLIYSwERAS5MVY1B7xYiGnpgctsOFvVDz9f9PFXXxMcTOHuoqYp4NK9qFYQaIC1NRRxLMpBQ==} - engines: {node: '>=12.13'} - dev: true - - /js-tokens/4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - dev: true - - /jsesc/2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} - hasBin: true - dev: true - - /json5/2.2.1: - resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==} - engines: {node: '>=6'} - hasBin: true - dev: true - - /merge-anything/5.0.2: - resolution: {integrity: sha512-POPQBWkBC0vxdgzRJ2Mkj4+2NTKbvkHo93ih+jGDhNMLzIw+rYKjO7949hOQM2X7DxMHH1uoUkwWFLIzImw7gA==} - engines: {node: '>=12.13'} - dependencies: - is-what: 4.1.7 - ts-toolbelt: 9.6.0 - dev: true - - /ms/2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - dev: true - - /nanoid/3.3.4: - resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - dev: true - - /node-releases/2.0.6: - resolution: {integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==} - dev: true - - /path-parse/1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - dev: true - - /picocolors/1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - dev: true - - /postcss/8.4.16: - resolution: {integrity: sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==} - engines: {node: ^10 || ^12 || >=14} - dependencies: - nanoid: 3.3.4 - picocolors: 1.0.0 - source-map-js: 1.0.2 - dev: true - - /resolve/1.22.1: - resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} - hasBin: true - dependencies: - is-core-module: 2.10.0 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - dev: true - - /rollup/2.77.3: - resolution: {integrity: sha512-/qxNTG7FbmefJWoeeYJFbHehJ2HNWnjkAFRKzWN/45eNBBF/r8lo992CwcJXEzyVxs5FmfId+vTSTQDb+bxA+g==} - engines: {node: '>=10.0.0'} - hasBin: true - optionalDependencies: - fsevents: 2.3.2 - dev: true - - /safe-buffer/5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - dev: true - - /semver/6.3.0: - resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} - hasBin: true - dev: true - - /solid-js/1.5.1: - resolution: {integrity: sha512-Y6aKystIxnrB0quV5nhqNuJV+l2Fk3/PQy1mMya/bzxlGiMHAym7v1NaqEgqDIvctbkxOi5dBj0ER/ewrH060g==} - dependencies: - csstype: 3.1.0 - - /solid-refresh/0.4.1_solid-js@1.5.1: - resolution: {integrity: sha512-v3tD/OXQcUyXLrWjPW1dXZyeWwP7/+GQNs8YTL09GBq+5FguA6IejJWUvJDrLIA4M0ho9/5zK2e9n+uy+4488g==} - peerDependencies: - solid-js: ^1.3 - dependencies: - '@babel/generator': 7.18.7 - '@babel/helper-module-imports': 7.18.6 - '@babel/types': 7.18.8 - solid-js: 1.5.1 - dev: true - - /source-map-js/1.0.2: - resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} - engines: {node: '>=0.10.0'} - dev: true - - /supports-color/5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} - dependencies: - has-flag: 3.0.0 - dev: true - - /supports-preserve-symlinks-flag/1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - dev: true - - /to-fast-properties/2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} - dev: true - - /ts-toolbelt/9.6.0: - resolution: {integrity: sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==} - dev: true - - /typescript/4.8.2: - resolution: {integrity: sha512-C0I1UsrrDHo2fYI5oaCGbSejwX4ch+9Y5jTQELvovfmFkK3HHSZJB8MSJcWLmCUBzQBchCrZ9rMRV6GuNrvGtw==} - engines: {node: '>=4.2.0'} - hasBin: true - dev: true - - /update-browserslist-db/1.0.4_browserslist@4.21.2: - resolution: {integrity: sha512-jnmO2BEGUjsMOe/Fg9u0oczOe/ppIDZPebzccl1yDWGLFP16Pa1/RM5wEoKYPG2zstNcDuAStejyxsOuKINdGA==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - dependencies: - browserslist: 4.21.2 - escalade: 3.1.1 - picocolors: 1.0.0 - dev: true - - /vite-plugin-solid/2.3.0_solid-js@1.5.1+vite@3.0.9: - resolution: {integrity: sha512-N2sa54C3UZC2nN5vpj5o6YP+XdIAZW6n6xv8OasxNAcAJPFeZT7EOVvumL0V4c8hBz1yuYniMWdESY8807fVSg==} - peerDependencies: - solid-js: ^1.3.17 - vite: ^3.0.0 - dependencies: - '@babel/core': 7.18.6 - '@babel/preset-typescript': 7.18.6_@babel+core@7.18.6 - babel-preset-solid: 1.4.6_@babel+core@7.18.6 - merge-anything: 5.0.2 - solid-js: 1.5.1 - solid-refresh: 0.4.1_solid-js@1.5.1 - vite: 3.0.9 - transitivePeerDependencies: - - supports-color - dev: true - - /vite/3.0.9: - resolution: {integrity: sha512-waYABTM+G6DBTCpYAxvevpG50UOlZuynR0ckTK5PawNVt7ebX6X7wNXHaGIO6wYYFXSM7/WcuFuO2QzhBB6aMw==} - engines: {node: ^14.18.0 || >=16.0.0} - hasBin: true - peerDependencies: - less: '*' - sass: '*' - stylus: '*' - terser: ^5.4.0 - peerDependenciesMeta: - less: - optional: true - sass: - optional: true - stylus: - optional: true - terser: - optional: true - dependencies: - esbuild: 0.14.54 - postcss: 8.4.16 - resolve: 1.22.1 - rollup: 2.77.3 - optionalDependencies: - fsevents: 2.3.2 - dev: true diff --git a/external/rspc/create-rspc-app/templates/solid_base_axum/src/App.tsx b/external/rspc/create-rspc-app/templates/solid_base_axum/src/App.tsx deleted file mode 100644 index d31d587..0000000 --- a/external/rspc/create-rspc-app/templates/solid_base_axum/src/App.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import { rspc } from "./utils/rspc"; - -function App() { - const { data } = rspc.createQuery(() => ["version"]); - - return

Hello world!!!! You are running v{data}

; -} - -export default App; diff --git a/external/rspc/create-rspc-app/templates/solid_base_axum/src/index.tsx b/external/rspc/create-rspc-app/templates/solid_base_axum/src/index.tsx deleted file mode 100644 index f1a8abd..0000000 --- a/external/rspc/create-rspc-app/templates/solid_base_axum/src/index.tsx +++ /dev/null @@ -1,13 +0,0 @@ -/* @refresh reload */ -import { render } from "solid-js/web"; -import rspc, { client, queryClient } from "./query.axum"; -import App from "./App"; - -render( - () => ( - - - - ), - document.getElementById("root") as HTMLElement -); diff --git a/external/rspc/create-rspc-app/templates/solid_base_axum/src/utils/rspc.ts b/external/rspc/create-rspc-app/templates/solid_base_axum/src/utils/rspc.ts deleted file mode 100644 index 2882b8d..0000000 --- a/external/rspc/create-rspc-app/templates/solid_base_axum/src/utils/rspc.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { QueryClient } from "@tanstack/react-query"; -import { FetchTransport, createClient } from "@rspc/client"; -import { createSolidQueryHooks } from "@rspc/solid"; - -import type { Procedures } from "./bindings"; // These are generated by rspc in Rust for you. - -const client = createClient({ - transport: new FetchTransport("http://localhost:9000/rspc"), -}); - -const queryClient = new QueryClient(); -const rspc = createSolidQueryHooks(); - -export { rspc, client, queryClient }; diff --git a/external/rspc/create-rspc-app/templates/solid_base_axum/tsconfig.json b/external/rspc/create-rspc-app/templates/solid_base_axum/tsconfig.json deleted file mode 100644 index 5d2faf0..0000000 --- a/external/rspc/create-rspc-app/templates/solid_base_axum/tsconfig.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "compilerOptions": { - "target": "ESNext", - "module": "ESNext", - "moduleResolution": "node", - "allowSyntheticDefaultImports": true, - "esModuleInterop": true, - "jsx": "preserve", - "jsxImportSource": "solid-js", - "types": ["vite/client"], - "noEmit": true, - "isolatedModules": true - } -} diff --git a/external/rspc/create-rspc-app/templates/solid_base_axum/vite.config.ts b/external/rspc/create-rspc-app/templates/solid_base_axum/vite.config.ts deleted file mode 100644 index 9ff59a1..0000000 --- a/external/rspc/create-rspc-app/templates/solid_base_axum/vite.config.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { defineConfig } from 'vite'; -import solidPlugin from 'vite-plugin-solid'; - -export default defineConfig({ - plugins: [solidPlugin()], - server: { - port: 3000, - }, - build: { - target: 'esnext', - }, -}); diff --git a/external/rspc/create-rspc-app/templates/solid_base_tauri/.gitignore b/external/rspc/create-rspc-app/templates/solid_base_tauri/.gitignore deleted file mode 100644 index 76add87..0000000 --- a/external/rspc/create-rspc-app/templates/solid_base_tauri/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -node_modules -dist \ No newline at end of file diff --git a/external/rspc/create-rspc-app/templates/solid_base_tauri/README.md b/external/rspc/create-rspc-app/templates/solid_base_tauri/README.md deleted file mode 100644 index 434f7bb..0000000 --- a/external/rspc/create-rspc-app/templates/solid_base_tauri/README.md +++ /dev/null @@ -1,34 +0,0 @@ -## Usage - -Those templates dependencies are maintained via [pnpm](https://pnpm.io) via `pnpm up -Lri`. - -This is the reason you see a `pnpm-lock.yaml`. That being said, any package manager will work. This file can be safely be removed once you clone a template. - -```bash -$ npm install # or pnpm install or yarn install -``` - -### Learn more on the [Solid Website](https://solidjs.com) and come chat with us on our [Discord](https://discord.com/invite/solidjs) - -## Available Scripts - -In the project directory, you can run: - -### `npm dev` or `npm start` - -Runs the app in the development mode.
-Open [http://localhost:3000](http://localhost:3000) to view it in the browser. - -The page will reload if you make edits.
- -### `npm run build` - -Builds the app for production to the `dist` folder.
-It correctly bundles Solid in production mode and optimizes the build for the best performance. - -The build is minified and the filenames include the hashes.
-Your app is ready to be deployed! - -## Deployment - -You can deploy the `dist` folder to any static host provider (netlify, surge, now, etc.) diff --git a/external/rspc/create-rspc-app/templates/solid_base_tauri/index.html b/external/rspc/create-rspc-app/templates/solid_base_tauri/index.html deleted file mode 100644 index 1905a04..0000000 --- a/external/rspc/create-rspc-app/templates/solid_base_tauri/index.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - Solid App - - - -
- - - - diff --git a/external/rspc/create-rspc-app/templates/solid_base_tauri/package.json b/external/rspc/create-rspc-app/templates/solid_base_tauri/package.json deleted file mode 100644 index cbce4b5..0000000 --- a/external/rspc/create-rspc-app/templates/solid_base_tauri/package.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "{{name}}", - "version": "0.0.0", - "description": "", - "scripts": { - "dev": "vite", - "build": "vite build", - "serve": "vite preview", - "typecheck": "tsc --noEmit" - }, - "license": "MIT", - "devDependencies": { - "@rspc/client": "^0.1.2", - "@rspc/solid": "^0.1.2", - "@rspc/tauri": "^0.1.2", - "@tanstack/solid-query": "^4.10.1", - "@tauri-apps/api": "^1.1.0", - "typescript": "^4.8.2", - "vite": "^3.0.9", - "vite-plugin-solid": "^2.3.0" - }, - "dependencies": { - "solid-js": "^1.5.1" - } -} diff --git a/external/rspc/create-rspc-app/templates/solid_base_tauri/pnpm-lock.yaml b/external/rspc/create-rspc-app/templates/solid_base_tauri/pnpm-lock.yaml deleted file mode 100644 index d0a8bdb..0000000 --- a/external/rspc/create-rspc-app/templates/solid_base_tauri/pnpm-lock.yaml +++ /dev/null @@ -1,910 +0,0 @@ -lockfileVersion: 5.4 - -specifiers: - solid-js: ^1.5.1 - typescript: ^4.8.2 - vite: ^3.0.9 - vite-plugin-solid: ^2.3.0 - -dependencies: - solid-js: 1.5.1 - -devDependencies: - typescript: 4.8.2 - vite: 3.0.9 - vite-plugin-solid: 2.3.0_solid-js@1.5.1+vite@3.0.9 - -packages: - - /@ampproject/remapping/2.2.0: - resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/gen-mapping': 0.1.1 - '@jridgewell/trace-mapping': 0.3.14 - dev: true - - /@babel/code-frame/7.18.6: - resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/highlight': 7.18.6 - dev: true - - /@babel/compat-data/7.18.8: - resolution: {integrity: sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/core/7.18.6: - resolution: {integrity: sha512-cQbWBpxcbbs/IUredIPkHiAGULLV8iwgNRMFzvbhEXISp4f3rUUXE5+TIw6KwUWUR3DwyI6gmBRnmAtYaWehwQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.2.0 - '@babel/code-frame': 7.18.6 - '@babel/generator': 7.18.7 - '@babel/helper-compilation-targets': 7.18.6_@babel+core@7.18.6 - '@babel/helper-module-transforms': 7.18.8 - '@babel/helpers': 7.18.6 - '@babel/parser': 7.18.8 - '@babel/template': 7.18.6 - '@babel/traverse': 7.18.8 - '@babel/types': 7.18.8 - convert-source-map: 1.8.0 - debug: 4.3.4 - gensync: 1.0.0-beta.2 - json5: 2.2.1 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/generator/7.18.7: - resolution: {integrity: sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.18.8 - '@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.8 - dev: true - - /@babel/helper-compilation-targets/7.18.6_@babel+core@7.18.6: - resolution: {integrity: sha512-vFjbfhNCzqdeAtZflUFrG5YIFqGTqsctrtkZ1D/NB0mDW9TwW3GmmUepYY4G9wCET5rY5ugz4OGTcLd614IzQg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/compat-data': 7.18.8 - '@babel/core': 7.18.6 - '@babel/helper-validator-option': 7.18.6 - browserslist: 4.21.2 - semver: 6.3.0 - dev: true - - /@babel/helper-create-class-features-plugin/7.18.6_@babel+core@7.18.6: - resolution: {integrity: sha512-YfDzdnoxHGV8CzqHGyCbFvXg5QESPFkXlHtvdCkesLjjVMT2Adxe4FGUR5ChIb3DxSaXO12iIOCWoXdsUVwnqw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.18.6 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-environment-visitor': 7.18.6 - '@babel/helper-function-name': 7.18.6 - '@babel/helper-member-expression-to-functions': 7.18.6 - '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/helper-replace-supers': 7.18.6 - '@babel/helper-split-export-declaration': 7.18.6 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/helper-environment-visitor/7.18.6: - resolution: {integrity: sha512-8n6gSfn2baOY+qlp+VSzsosjCVGFqWKmDF0cCWOybh52Dw3SEyoWR1KrhMJASjLwIEkkAufZ0xvr+SxLHSpy2Q==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-function-name/7.18.6: - resolution: {integrity: sha512-0mWMxV1aC97dhjCah5U5Ua7668r5ZmSC2DLfH2EZnf9c3/dHZKiFa5pRLMH5tjSl471tY6496ZWk/kjNONBxhw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.18.6 - '@babel/types': 7.18.8 - dev: true - - /@babel/helper-hoist-variables/7.18.6: - resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.18.8 - dev: true - - /@babel/helper-member-expression-to-functions/7.18.6: - resolution: {integrity: sha512-CeHxqwwipekotzPDUuJOfIMtcIHBuc7WAzLmTYWctVigqS5RktNMQ5bEwQSuGewzYnCtTWa3BARXeiLxDTv+Ng==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.18.8 - dev: true - - /@babel/helper-module-imports/7.16.0: - resolution: {integrity: sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.18.8 - dev: true - - /@babel/helper-module-imports/7.18.6: - resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.18.8 - dev: true - - /@babel/helper-module-transforms/7.18.8: - resolution: {integrity: sha512-che3jvZwIcZxrwh63VfnFTUzcAM9v/lznYkkRxIBGMPt1SudOKHAEec0SIRCfiuIzTcF7VGj/CaTT6gY4eWxvA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-environment-visitor': 7.18.6 - '@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/template': 7.18.6 - '@babel/traverse': 7.18.8 - '@babel/types': 7.18.8 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/helper-optimise-call-expression/7.18.6: - resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.18.8 - dev: true - - /@babel/helper-plugin-utils/7.18.6: - resolution: {integrity: sha512-gvZnm1YAAxh13eJdkb9EWHBnF3eAub3XTLCZEehHT2kWxiKVRL64+ae5Y6Ivne0mVHmMYKT+xWgZO+gQhuLUBg==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-replace-supers/7.18.6: - resolution: {integrity: sha512-fTf7zoXnUGl9gF25fXCWE26t7Tvtyn6H4hkLSYhATwJvw2uYxd3aoXplMSe0g9XbwK7bmxNes7+FGO0rB/xC0g==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-environment-visitor': 7.18.6 - '@babel/helper-member-expression-to-functions': 7.18.6 - '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/traverse': 7.18.8 - '@babel/types': 7.18.8 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/helper-simple-access/7.18.6: - resolution: {integrity: sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.18.8 - dev: true - - /@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.8 - dev: true - - /@babel/helper-validator-identifier/7.18.6: - resolution: {integrity: sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-validator-option/7.18.6: - resolution: {integrity: sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helpers/7.18.6: - resolution: {integrity: sha512-vzSiiqbQOghPngUYt/zWGvK3LAsPhz55vc9XNN0xAl2gV4ieShI2OQli5duxWHD+72PZPTKAcfcZDE1Cwc5zsQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.18.6 - '@babel/traverse': 7.18.8 - '@babel/types': 7.18.8 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/highlight/7.18.6: - resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.18.6 - chalk: 2.4.2 - js-tokens: 4.0.0 - dev: true - - /@babel/parser/7.18.8: - resolution: {integrity: sha512-RSKRfYX20dyH+elbJK2uqAkVyucL+xXzhqlMD5/ZXx+dAAwpyB7HsvnHe/ZUGOF+xLr5Wx9/JoXVTj6BQE2/oA==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.18.8 - dev: true - - /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.18.6: - resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 - dev: true - - /@babel/plugin-syntax-typescript/7.18.6_@babel+core@7.18.6: - resolution: {integrity: sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 - dev: true - - /@babel/plugin-transform-typescript/7.18.8_@babel+core@7.18.6: - resolution: {integrity: sha512-p2xM8HI83UObjsZGofMV/EdYjamsDm6MoN3hXPYIT0+gxIoopE+B7rPYKAxfrz9K9PK7JafTTjqYC6qipLExYA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.6 - '@babel/helper-create-class-features-plugin': 7.18.6_@babel+core@7.18.6 - '@babel/helper-plugin-utils': 7.18.6 - '@babel/plugin-syntax-typescript': 7.18.6_@babel+core@7.18.6 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/preset-typescript/7.18.6_@babel+core@7.18.6: - resolution: {integrity: sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.6 - '@babel/helper-plugin-utils': 7.18.6 - '@babel/helper-validator-option': 7.18.6 - '@babel/plugin-transform-typescript': 7.18.8_@babel+core@7.18.6 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/template/7.18.6: - resolution: {integrity: sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.18.6 - '@babel/parser': 7.18.8 - '@babel/types': 7.18.8 - dev: true - - /@babel/traverse/7.18.8: - resolution: {integrity: sha512-UNg/AcSySJYR/+mIcJQDCv00T+AqRO7j/ZEJLzpaYtgM48rMg5MnkJgyNqkzo88+p4tfRvZJCEiwwfG6h4jkRg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.18.6 - '@babel/generator': 7.18.7 - '@babel/helper-environment-visitor': 7.18.6 - '@babel/helper-function-name': 7.18.6 - '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/parser': 7.18.8 - '@babel/types': 7.18.8 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/types/7.18.8: - resolution: {integrity: sha512-qwpdsmraq0aJ3osLJRApsc2ouSJCdnMeZwB0DhbtHAtRpZNZCdlbRnHIgcRKzdE1g0iOGg644fzjOBcdOz9cPw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.18.6 - to-fast-properties: 2.0.0 - dev: true - - /@esbuild/linux-loong64/0.14.54: - resolution: {integrity: sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@jridgewell/gen-mapping/0.1.1: - resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.14 - dev: true - - /@jridgewell/gen-mapping/0.3.2: - resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.14 - '@jridgewell/trace-mapping': 0.3.14 - dev: true - - /@jridgewell/resolve-uri/3.1.0: - resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} - engines: {node: '>=6.0.0'} - dev: true - - /@jridgewell/set-array/1.1.2: - resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} - engines: {node: '>=6.0.0'} - dev: true - - /@jridgewell/sourcemap-codec/1.4.14: - resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} - dev: true - - /@jridgewell/trace-mapping/0.3.14: - resolution: {integrity: sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==} - dependencies: - '@jridgewell/resolve-uri': 3.1.0 - '@jridgewell/sourcemap-codec': 1.4.14 - dev: true - - /ansi-styles/3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} - dependencies: - color-convert: 1.9.3 - dev: true - - /babel-plugin-jsx-dom-expressions/0.33.12_@babel+core@7.18.6: - resolution: {integrity: sha512-FQeNcBvC+PrPYGpeUztI7AiiAqJL2H8e7mL4L6qHZ7B4wZfbgyREsHZwKmmDqxAehlyAUolTdhDNk9xfyHdIZw==} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.18.6 - '@babel/helper-module-imports': 7.16.0 - '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.18.6 - '@babel/types': 7.18.8 - html-entities: 2.3.2 - dev: true - - /babel-preset-solid/1.4.6_@babel+core@7.18.6: - resolution: {integrity: sha512-5n+nm1zgj7BK9cv0kYu0p+kbsXgGbrxLmA5bv5WT0V5WnqRgshWILInPWLJNZbvP5gBj+huDKwk3J4RhhbFlhA==} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.18.6 - babel-plugin-jsx-dom-expressions: 0.33.12_@babel+core@7.18.6 - dev: true - - /browserslist/4.21.2: - resolution: {integrity: sha512-MonuOgAtUB46uP5CezYbRaYKBNt2LxP0yX+Pmj4LkcDFGkn9Cbpi83d9sCjwQDErXsIJSzY5oKGDbgOlF/LPAA==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - dependencies: - caniuse-lite: 1.0.30001366 - electron-to-chromium: 1.4.189 - node-releases: 2.0.6 - update-browserslist-db: 1.0.4_browserslist@4.21.2 - dev: true - - /caniuse-lite/1.0.30001366: - resolution: {integrity: sha512-yy7XLWCubDobokgzudpkKux8e0UOOnLHE6mlNJBzT3lZJz6s5atSEzjoL+fsCPkI0G8MP5uVdDx1ur/fXEWkZA==} - dev: true - - /chalk/2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} - dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 - dev: true - - /color-convert/1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - dependencies: - color-name: 1.1.3 - dev: true - - /color-name/1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - dev: true - - /convert-source-map/1.8.0: - resolution: {integrity: sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==} - dependencies: - safe-buffer: 5.1.2 - dev: true - - /csstype/3.1.0: - resolution: {integrity: sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==} - - /debug/4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.2 - dev: true - - /electron-to-chromium/1.4.189: - resolution: {integrity: sha512-dQ6Zn4ll2NofGtxPXaDfY2laIa6NyCQdqXYHdwH90GJQW0LpJJib0ZU/ERtbb0XkBEmUD2eJtagbOie3pdMiPg==} - dev: true - - /esbuild-android-64/0.14.54: - resolution: {integrity: sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - dev: true - optional: true - - /esbuild-android-arm64/0.14.54: - resolution: {integrity: sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true - - /esbuild-darwin-64/0.14.54: - resolution: {integrity: sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /esbuild-darwin-arm64/0.14.54: - resolution: {integrity: sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /esbuild-freebsd-64/0.14.54: - resolution: {integrity: sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - - /esbuild-freebsd-arm64/0.14.54: - resolution: {integrity: sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-32/0.14.54: - resolution: {integrity: sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-64/0.14.54: - resolution: {integrity: sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-arm/0.14.54: - resolution: {integrity: sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-arm64/0.14.54: - resolution: {integrity: sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-mips64le/0.14.54: - resolution: {integrity: sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-ppc64le/0.14.54: - resolution: {integrity: sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-riscv64/0.14.54: - resolution: {integrity: sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-s390x/0.14.54: - resolution: {integrity: sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-netbsd-64/0.14.54: - resolution: {integrity: sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: true - optional: true - - /esbuild-openbsd-64/0.14.54: - resolution: {integrity: sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: true - optional: true - - /esbuild-sunos-64/0.14.54: - resolution: {integrity: sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: true - optional: true - - /esbuild-windows-32/0.14.54: - resolution: {integrity: sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /esbuild-windows-64/0.14.54: - resolution: {integrity: sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /esbuild-windows-arm64/0.14.54: - resolution: {integrity: sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /esbuild/0.14.54: - resolution: {integrity: sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/linux-loong64': 0.14.54 - esbuild-android-64: 0.14.54 - esbuild-android-arm64: 0.14.54 - esbuild-darwin-64: 0.14.54 - esbuild-darwin-arm64: 0.14.54 - esbuild-freebsd-64: 0.14.54 - esbuild-freebsd-arm64: 0.14.54 - esbuild-linux-32: 0.14.54 - esbuild-linux-64: 0.14.54 - esbuild-linux-arm: 0.14.54 - esbuild-linux-arm64: 0.14.54 - esbuild-linux-mips64le: 0.14.54 - esbuild-linux-ppc64le: 0.14.54 - esbuild-linux-riscv64: 0.14.54 - esbuild-linux-s390x: 0.14.54 - esbuild-netbsd-64: 0.14.54 - esbuild-openbsd-64: 0.14.54 - esbuild-sunos-64: 0.14.54 - esbuild-windows-32: 0.14.54 - esbuild-windows-64: 0.14.54 - esbuild-windows-arm64: 0.14.54 - dev: true - - /escalade/3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} - engines: {node: '>=6'} - dev: true - - /escape-string-regexp/1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - dev: true - - /fsevents/2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /function-bind/1.1.1: - resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} - dev: true - - /gensync/1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - dev: true - - /globals/11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - dev: true - - /has-flag/3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - dev: true - - /has/1.0.3: - resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} - engines: {node: '>= 0.4.0'} - dependencies: - function-bind: 1.1.1 - dev: true - - /html-entities/2.3.2: - resolution: {integrity: sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==} - dev: true - - /is-core-module/2.10.0: - resolution: {integrity: sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==} - dependencies: - has: 1.0.3 - dev: true - - /is-what/4.1.7: - resolution: {integrity: sha512-DBVOQNiPKnGMxRMLIYSwERAS5MVY1B7xYiGnpgctsOFvVDz9f9PFXXxMcTOHuoqYp4NK9qFYQaIC1NRRxLMpBQ==} - engines: {node: '>=12.13'} - dev: true - - /js-tokens/4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - dev: true - - /jsesc/2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} - hasBin: true - dev: true - - /json5/2.2.1: - resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==} - engines: {node: '>=6'} - hasBin: true - dev: true - - /merge-anything/5.0.2: - resolution: {integrity: sha512-POPQBWkBC0vxdgzRJ2Mkj4+2NTKbvkHo93ih+jGDhNMLzIw+rYKjO7949hOQM2X7DxMHH1uoUkwWFLIzImw7gA==} - engines: {node: '>=12.13'} - dependencies: - is-what: 4.1.7 - ts-toolbelt: 9.6.0 - dev: true - - /ms/2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - dev: true - - /nanoid/3.3.4: - resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - dev: true - - /node-releases/2.0.6: - resolution: {integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==} - dev: true - - /path-parse/1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - dev: true - - /picocolors/1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - dev: true - - /postcss/8.4.16: - resolution: {integrity: sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==} - engines: {node: ^10 || ^12 || >=14} - dependencies: - nanoid: 3.3.4 - picocolors: 1.0.0 - source-map-js: 1.0.2 - dev: true - - /resolve/1.22.1: - resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} - hasBin: true - dependencies: - is-core-module: 2.10.0 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - dev: true - - /rollup/2.77.3: - resolution: {integrity: sha512-/qxNTG7FbmefJWoeeYJFbHehJ2HNWnjkAFRKzWN/45eNBBF/r8lo992CwcJXEzyVxs5FmfId+vTSTQDb+bxA+g==} - engines: {node: '>=10.0.0'} - hasBin: true - optionalDependencies: - fsevents: 2.3.2 - dev: true - - /safe-buffer/5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - dev: true - - /semver/6.3.0: - resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} - hasBin: true - dev: true - - /solid-js/1.5.1: - resolution: {integrity: sha512-Y6aKystIxnrB0quV5nhqNuJV+l2Fk3/PQy1mMya/bzxlGiMHAym7v1NaqEgqDIvctbkxOi5dBj0ER/ewrH060g==} - dependencies: - csstype: 3.1.0 - - /solid-refresh/0.4.1_solid-js@1.5.1: - resolution: {integrity: sha512-v3tD/OXQcUyXLrWjPW1dXZyeWwP7/+GQNs8YTL09GBq+5FguA6IejJWUvJDrLIA4M0ho9/5zK2e9n+uy+4488g==} - peerDependencies: - solid-js: ^1.3 - dependencies: - '@babel/generator': 7.18.7 - '@babel/helper-module-imports': 7.18.6 - '@babel/types': 7.18.8 - solid-js: 1.5.1 - dev: true - - /source-map-js/1.0.2: - resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} - engines: {node: '>=0.10.0'} - dev: true - - /supports-color/5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} - dependencies: - has-flag: 3.0.0 - dev: true - - /supports-preserve-symlinks-flag/1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - dev: true - - /to-fast-properties/2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} - dev: true - - /ts-toolbelt/9.6.0: - resolution: {integrity: sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==} - dev: true - - /typescript/4.8.2: - resolution: {integrity: sha512-C0I1UsrrDHo2fYI5oaCGbSejwX4ch+9Y5jTQELvovfmFkK3HHSZJB8MSJcWLmCUBzQBchCrZ9rMRV6GuNrvGtw==} - engines: {node: '>=4.2.0'} - hasBin: true - dev: true - - /update-browserslist-db/1.0.4_browserslist@4.21.2: - resolution: {integrity: sha512-jnmO2BEGUjsMOe/Fg9u0oczOe/ppIDZPebzccl1yDWGLFP16Pa1/RM5wEoKYPG2zstNcDuAStejyxsOuKINdGA==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - dependencies: - browserslist: 4.21.2 - escalade: 3.1.1 - picocolors: 1.0.0 - dev: true - - /vite-plugin-solid/2.3.0_solid-js@1.5.1+vite@3.0.9: - resolution: {integrity: sha512-N2sa54C3UZC2nN5vpj5o6YP+XdIAZW6n6xv8OasxNAcAJPFeZT7EOVvumL0V4c8hBz1yuYniMWdESY8807fVSg==} - peerDependencies: - solid-js: ^1.3.17 - vite: ^3.0.0 - dependencies: - '@babel/core': 7.18.6 - '@babel/preset-typescript': 7.18.6_@babel+core@7.18.6 - babel-preset-solid: 1.4.6_@babel+core@7.18.6 - merge-anything: 5.0.2 - solid-js: 1.5.1 - solid-refresh: 0.4.1_solid-js@1.5.1 - vite: 3.0.9 - transitivePeerDependencies: - - supports-color - dev: true - - /vite/3.0.9: - resolution: {integrity: sha512-waYABTM+G6DBTCpYAxvevpG50UOlZuynR0ckTK5PawNVt7ebX6X7wNXHaGIO6wYYFXSM7/WcuFuO2QzhBB6aMw==} - engines: {node: ^14.18.0 || >=16.0.0} - hasBin: true - peerDependencies: - less: '*' - sass: '*' - stylus: '*' - terser: ^5.4.0 - peerDependenciesMeta: - less: - optional: true - sass: - optional: true - stylus: - optional: true - terser: - optional: true - dependencies: - esbuild: 0.14.54 - postcss: 8.4.16 - resolve: 1.22.1 - rollup: 2.77.3 - optionalDependencies: - fsevents: 2.3.2 - dev: true diff --git a/external/rspc/create-rspc-app/templates/solid_base_tauri/src/App.tsx b/external/rspc/create-rspc-app/templates/solid_base_tauri/src/App.tsx deleted file mode 100644 index 875f897..0000000 --- a/external/rspc/create-rspc-app/templates/solid_base_tauri/src/App.tsx +++ /dev/null @@ -1,7 +0,0 @@ -import { rspc } from "./utils/rspc"; - -function App() { - const { data } = rspc.createQuery(() => ["version"]); - - return

Hello world!!!! You are running v{data}

; -} diff --git a/external/rspc/create-rspc-app/templates/solid_base_tauri/src/index.tsx b/external/rspc/create-rspc-app/templates/solid_base_tauri/src/index.tsx deleted file mode 100644 index 3e1cdfe..0000000 --- a/external/rspc/create-rspc-app/templates/solid_base_tauri/src/index.tsx +++ /dev/null @@ -1,13 +0,0 @@ -/* @refresh reload */ -import { render } from "solid-js/web"; -import rspc, { client, queryClient } from "./query.tauri"; -import App from "./App"; - -render( - () => ( - - - - ), - document.getElementById("root") as HTMLElement -); diff --git a/external/rspc/create-rspc-app/templates/solid_base_tauri/src/query.tauri.ts b/external/rspc/create-rspc-app/templates/solid_base_tauri/src/query.tauri.ts deleted file mode 100644 index e7c3c40..0000000 --- a/external/rspc/create-rspc-app/templates/solid_base_tauri/src/query.tauri.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { createClient } from '@rspc/client'; -import { QueryClient } from '@tanstack/solid-query'; -import { createSolidQueryHooks } from '@rspc/solid'; -import { TauriTransport } from '@rspc/tauri'; -import type { Procedures } from "./bindings"; // These were the bindings exported from your Rust code! - -const client = createClient({ - transport: new TauriTransport() -}); - -const queryClient = new QueryClient(); -const rspc = createSolidQueryHooks(); - -export { client, queryClient }; -export default rspc; \ No newline at end of file diff --git a/external/rspc/create-rspc-app/templates/solid_base_tauri/src/utils/rspc.ts b/external/rspc/create-rspc-app/templates/solid_base_tauri/src/utils/rspc.ts deleted file mode 100644 index daddfac..0000000 --- a/external/rspc/create-rspc-app/templates/solid_base_tauri/src/utils/rspc.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { QueryClient } from "@tanstack/react-query"; -import { FetchTransport, createClient } from "@rspc/client"; -import { createSolidQueryHooks } from "@rspc/solid"; - -import type { Procedures } from "./bindings"; // These are generated by rspc in Rust for you. - -const client = createClient({ - transport: new TauriTransport(), -}); - -const queryClient = new QueryClient(); -const rspc = createSolidQueryHooks(); - -export { rspc, client, queryClient }; diff --git a/external/rspc/create-rspc-app/templates/solid_base_tauri/tsconfig.json b/external/rspc/create-rspc-app/templates/solid_base_tauri/tsconfig.json deleted file mode 100644 index 5d2faf0..0000000 --- a/external/rspc/create-rspc-app/templates/solid_base_tauri/tsconfig.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "compilerOptions": { - "target": "ESNext", - "module": "ESNext", - "moduleResolution": "node", - "allowSyntheticDefaultImports": true, - "esModuleInterop": true, - "jsx": "preserve", - "jsxImportSource": "solid-js", - "types": ["vite/client"], - "noEmit": true, - "isolatedModules": true - } -} diff --git a/external/rspc/create-rspc-app/templates/solid_base_tauri/vite.config.ts b/external/rspc/create-rspc-app/templates/solid_base_tauri/vite.config.ts deleted file mode 100644 index 9ff59a1..0000000 --- a/external/rspc/create-rspc-app/templates/solid_base_tauri/vite.config.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { defineConfig } from 'vite'; -import solidPlugin from 'vite-plugin-solid'; - -export default defineConfig({ - plugins: [solidPlugin()], - server: { - port: 3000, - }, - build: { - target: 'esnext', - }, -}); diff --git a/external/rspc/create-rspc-app/templates/tauri_base/.vscode/extensions.json b/external/rspc/create-rspc-app/templates/tauri_base/.vscode/extensions.json deleted file mode 100644 index f594850..0000000 --- a/external/rspc/create-rspc-app/templates/tauri_base/.vscode/extensions.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "recommendations": [ - "tauri-apps.tauri-vscode", - "rust-lang.rust-analyzer", - "oscartbeaumont.rspc-vscode" - ] -} diff --git a/external/rspc/create-rspc-app/templates/tauri_base/Cargo__toml b/external/rspc/create-rspc-app/templates/tauri_base/Cargo__toml deleted file mode 100644 index 787e7b7..0000000 --- a/external/rspc/create-rspc-app/templates/tauri_base/Cargo__toml +++ /dev/null @@ -1,4 +0,0 @@ -[workspace] -resolver = "2" -members = ["src-tauri"] -default-members = ["src-tauri"] \ No newline at end of file diff --git a/external/rspc/create-rspc-app/templates/tauri_base/README.md b/external/rspc/create-rspc-app/templates/tauri_base/README.md deleted file mode 100644 index 0395f11..0000000 --- a/external/rspc/create-rspc-app/templates/tauri_base/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# Create rspc app - -This app was scaffolded using the [create-rspc-app](https://rspc.dev) CLI. - -## Usage - -```bash -cargo tauri dev -``` \ No newline at end of file diff --git a/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/Cargo__toml b/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/Cargo__toml deleted file mode 100644 index 40d0eb6..0000000 --- a/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/Cargo__toml +++ /dev/null @@ -1,25 +0,0 @@ -[package] -name = "__name__" -default-run = "__name__" -version = "0.1.0" -edition = "2021" -rust-version = "1.64" -publish = false - -[dependencies] -serde_json = "1.0.87" -serde = { version = "1.0.145", features = ["derive"] } -tauri = { version = "1.2.1", features = ["api-all"] } -tokio = { version = "1.21.2", features = ["rt-multi-thread", "macros"] } -rspc = { version = "0.1.2", features = ["tauri"] } - -[build-dependencies] -tauri-build = "1.2.0" - -[features] -# by default Tauri runs in production mode -# when `tauri dev` runs it is executed with `cargo run --no-default-features` if `devPath` is an URL -default = ["custom-protocol"] -# this feature is used used for production builds where `devPath` points to the filesystem -# DO NOT remove this -custom-protocol = ["tauri/custom-protocol"] diff --git a/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/build.rs b/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/build.rs deleted file mode 100644 index 795b9b7..0000000 --- a/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/build.rs +++ /dev/null @@ -1,3 +0,0 @@ -fn main() { - tauri_build::build() -} diff --git a/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/icons/128x128.png b/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/icons/128x128.png deleted file mode 100644 index 6be5e50..0000000 Binary files a/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/icons/128x128.png and /dev/null differ diff --git a/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/icons/128x128@2x.png b/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/icons/128x128@2x.png deleted file mode 100644 index e81bece..0000000 Binary files a/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/icons/128x128@2x.png and /dev/null differ diff --git a/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/icons/32x32.png b/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/icons/32x32.png deleted file mode 100644 index a437dd5..0000000 Binary files a/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/icons/32x32.png and /dev/null differ diff --git a/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/icons/Square107x107Logo.png b/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/icons/Square107x107Logo.png deleted file mode 100644 index 0ca4f27..0000000 Binary files a/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/icons/Square107x107Logo.png and /dev/null differ diff --git a/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/icons/Square142x142Logo.png b/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/icons/Square142x142Logo.png deleted file mode 100644 index b81f820..0000000 Binary files a/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/icons/Square142x142Logo.png and /dev/null differ diff --git a/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/icons/Square150x150Logo.png b/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/icons/Square150x150Logo.png deleted file mode 100644 index 624c7bf..0000000 Binary files a/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/icons/Square150x150Logo.png and /dev/null differ diff --git a/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/icons/Square284x284Logo.png b/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/icons/Square284x284Logo.png deleted file mode 100644 index c021d2b..0000000 Binary files a/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/icons/Square284x284Logo.png and /dev/null differ diff --git a/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/icons/Square30x30Logo.png b/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/icons/Square30x30Logo.png deleted file mode 100644 index 6219700..0000000 Binary files a/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/icons/Square30x30Logo.png and /dev/null differ diff --git a/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/icons/Square310x310Logo.png b/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/icons/Square310x310Logo.png deleted file mode 100644 index f9bc048..0000000 Binary files a/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/icons/Square310x310Logo.png and /dev/null differ diff --git a/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/icons/Square44x44Logo.png b/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/icons/Square44x44Logo.png deleted file mode 100644 index d5fbfb2..0000000 Binary files a/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/icons/Square44x44Logo.png and /dev/null differ diff --git a/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/icons/Square71x71Logo.png b/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/icons/Square71x71Logo.png deleted file mode 100644 index 63440d7..0000000 Binary files a/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/icons/Square71x71Logo.png and /dev/null differ diff --git a/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/icons/Square89x89Logo.png b/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/icons/Square89x89Logo.png deleted file mode 100644 index f3f705a..0000000 Binary files a/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/icons/Square89x89Logo.png and /dev/null differ diff --git a/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/icons/StoreLogo.png b/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/icons/StoreLogo.png deleted file mode 100644 index 4556388..0000000 Binary files a/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/icons/StoreLogo.png and /dev/null differ diff --git a/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/icons/icon.icns b/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/icons/icon.icns deleted file mode 100644 index 87f09b4..0000000 Binary files a/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/icons/icon.icns and /dev/null differ diff --git a/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/icons/icon.ico b/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/icons/icon.ico deleted file mode 100644 index b3636e4..0000000 Binary files a/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/icons/icon.ico and /dev/null differ diff --git a/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/icons/icon.png b/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/icons/icon.png deleted file mode 100644 index e1cd261..0000000 Binary files a/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/icons/icon.png and /dev/null differ diff --git a/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/src/api/mod.rs b/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/src/api/mod.rs deleted file mode 100644 index 0536649..0000000 --- a/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/src/api/mod.rs +++ /dev/null @@ -1,10 +0,0 @@ -pub use rspc::RouterBuilder; - -#[derive(Clone)] -pub struct Ctx {} - -pub type Router = rspc::Router; - -pub(crate) fn new() -> RouterBuilder { - Router::new().query("version", |t| t(|_, _: ()| env!("CARGO_PKG_VERSION"))) -} diff --git a/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/src/main.rs b/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/src/main.rs deleted file mode 100644 index 3affe43..0000000 --- a/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/src/main.rs +++ /dev/null @@ -1,25 +0,0 @@ -#![cfg_attr( - all(not(debug_assertions), target_os = "windows"), - windows_subsystem = "windows" -)] - -use crate::api::Ctx; - -mod api; - -// Learn more about Tauri commands at https://tauri.app/v1/guides/features/command -#[tauri::command] -fn greet(name: &str) -> String { - format!("Hello, {}! You've been greeted from Rust!", name) -} - -#[tokio::main] -async fn main() { - let router = api::new().build().arced(); - - tauri::Builder::default() - .plugin(rspc::integrations::tauri::plugin(router, || Ctx {})) - .invoke_handler(tauri::generate_handler![greet]) - .run(tauri::generate_context!()) - .expect("error while running tauri application"); -} diff --git a/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/tauri.conf.json b/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/tauri.conf.json deleted file mode 100644 index 7f837b0..0000000 --- a/external/rspc/create-rspc-app/templates/tauri_base/src-tauri/tauri.conf.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "build": { - "beforeBuildCommand": "", - "beforeDevCommand": "", - "devPath": "http://localhost:3000", - "distDir": "../web/dist" - }, - "package": { - "productName": "my-app", - "version": "0.1.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": "my-app", - "width": 800 - } - ] - } -} diff --git a/external/rspc/create-rspc-app/templates/tauri_pcr_base/.env b/external/rspc/create-rspc-app/templates/tauri_pcr_base/.env deleted file mode 100644 index 22554fe..0000000 --- a/external/rspc/create-rspc-app/templates/tauri_pcr_base/.env +++ /dev/null @@ -1,7 +0,0 @@ -# Environment variables declared in this file are automatically made available to Prisma. -# See the documentation for more detail: https://pris.ly/d/prisma-schema#accessing-environment-variables-from-the-schema - -# Prisma supports the native connection string format for PostgreSQL, MySQL, SQLite, SQL Server, MongoDB and CockroachDB. -# See the documentation for all the connection string options: https://pris.ly/d/connection-strings - -DATABASE_URL="file:./file.db" \ No newline at end of file diff --git a/external/rspc/create-rspc-app/templates/tauri_pcr_base/Cargo__toml b/external/rspc/create-rspc-app/templates/tauri_pcr_base/Cargo__toml deleted file mode 100644 index b8f54cb..0000000 --- a/external/rspc/create-rspc-app/templates/tauri_pcr_base/Cargo__toml +++ /dev/null @@ -1,20 +0,0 @@ -[workspace] -resolver = "2" -members = ["prisma", "src-tauri"] -default-members = ["src-tauri"] - -[workspace.dependencies] -prisma-client-rust-cli = { git = "https://github.com/Brendonovich/prisma-client-rust.git", rev = "078919e3724f35cc00c2402c66ba585b61c88d47", features = [ - "sqlite", - "rspc", - "migrations", -], default-features = false } -prisma-client-rust = { git = "https://github.com/Brendonovich/prisma-client-rust.git", rev = "078919e3724f35cc00c2402c66ba585b61c88d47", features = [ - "sqlite", - "rspc", - "migrations", -], default-features = false } -rspc = { version = "0.1.2", features = ["tauri"] } - -[workspace.metadata.pkg-config] -openssl = "__cra_version__" \ No newline at end of file diff --git a/external/rspc/create-rspc-app/templates/tauri_pcr_base/README.md b/external/rspc/create-rspc-app/templates/tauri_pcr_base/README.md deleted file mode 100644 index 0395f11..0000000 --- a/external/rspc/create-rspc-app/templates/tauri_pcr_base/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# Create rspc app - -This app was scaffolded using the [create-rspc-app](https://rspc.dev) CLI. - -## Usage - -```bash -cargo tauri dev -``` \ No newline at end of file diff --git a/external/rspc/create-rspc-app/templates/tauri_pcr_base/prisma/schema.prisma b/external/rspc/create-rspc-app/templates/tauri_pcr_base/prisma/schema.prisma deleted file mode 100644 index 889eff8..0000000 --- a/external/rspc/create-rspc-app/templates/tauri_pcr_base/prisma/schema.prisma +++ /dev/null @@ -1,18 +0,0 @@ -// This is your Prisma schema file, -// learn more about it in the docs: https://pris.ly/d/prisma-schema - -datasource db { - provider = "sqlite" - url = env("DATABASE_URL") -} - -generator client { - provider = "cargo prisma" - output = "../src-tauri/src/prisma.rs" -} - -model User { - id Int @id @default(autoincrement()) - name String - email String @unique -} diff --git a/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/Cargo__toml b/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/Cargo__toml deleted file mode 100644 index a16d9ea..0000000 --- a/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/Cargo__toml +++ /dev/null @@ -1,26 +0,0 @@ -[package] -name = "__name__" -default-run = "__name__" -version = "0.1.0" -edition = "2021" -rust-version = "1.64" -publish = false - -[dependencies] -serde_json = "1.0.85" -serde = { version = "1.0.145", features = ["derive"] } -tauri = { version = "1.2.1", features = ["api-all"] } -rspc = { workspace = true } -tokio = { version = "1.21.2", features = ["full"] } -prisma-client-rust = { workspace = true } - -[build-dependencies] -tauri-build = "1.1.1" - -[features] -# by default Tauri runs in production mode -# when `tauri dev` runs it is executed with `cargo run --no-default-features` if `devPath` is an URL -default = ["custom-protocol"] -# this feature is used used for production builds where `devPath` points to the filesystem -# DO NOT remove this -custom-protocol = ["tauri/custom-protocol"] diff --git a/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/build.rs b/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/build.rs deleted file mode 100644 index 795b9b7..0000000 --- a/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/build.rs +++ /dev/null @@ -1,3 +0,0 @@ -fn main() { - tauri_build::build() -} diff --git a/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/icons/128x128.png b/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/icons/128x128.png deleted file mode 100644 index 6be5e50..0000000 Binary files a/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/icons/128x128.png and /dev/null differ diff --git a/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/icons/128x128@2x.png b/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/icons/128x128@2x.png deleted file mode 100644 index e81bece..0000000 Binary files a/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/icons/128x128@2x.png and /dev/null differ diff --git a/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/icons/32x32.png b/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/icons/32x32.png deleted file mode 100644 index a437dd5..0000000 Binary files a/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/icons/32x32.png and /dev/null differ diff --git a/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/icons/Square107x107Logo.png b/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/icons/Square107x107Logo.png deleted file mode 100644 index 0ca4f27..0000000 Binary files a/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/icons/Square107x107Logo.png and /dev/null differ diff --git a/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/icons/Square142x142Logo.png b/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/icons/Square142x142Logo.png deleted file mode 100644 index b81f820..0000000 Binary files a/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/icons/Square142x142Logo.png and /dev/null differ diff --git a/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/icons/Square150x150Logo.png b/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/icons/Square150x150Logo.png deleted file mode 100644 index 624c7bf..0000000 Binary files a/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/icons/Square150x150Logo.png and /dev/null differ diff --git a/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/icons/Square284x284Logo.png b/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/icons/Square284x284Logo.png deleted file mode 100644 index c021d2b..0000000 Binary files a/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/icons/Square284x284Logo.png and /dev/null differ diff --git a/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/icons/Square30x30Logo.png b/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/icons/Square30x30Logo.png deleted file mode 100644 index 6219700..0000000 Binary files a/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/icons/Square30x30Logo.png and /dev/null differ diff --git a/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/icons/Square310x310Logo.png b/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/icons/Square310x310Logo.png deleted file mode 100644 index f9bc048..0000000 Binary files a/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/icons/Square310x310Logo.png and /dev/null differ diff --git a/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/icons/Square44x44Logo.png b/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/icons/Square44x44Logo.png deleted file mode 100644 index d5fbfb2..0000000 Binary files a/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/icons/Square44x44Logo.png and /dev/null differ diff --git a/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/icons/Square71x71Logo.png b/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/icons/Square71x71Logo.png deleted file mode 100644 index 63440d7..0000000 Binary files a/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/icons/Square71x71Logo.png and /dev/null differ diff --git a/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/icons/Square89x89Logo.png b/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/icons/Square89x89Logo.png deleted file mode 100644 index f3f705a..0000000 Binary files a/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/icons/Square89x89Logo.png and /dev/null differ diff --git a/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/icons/StoreLogo.png b/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/icons/StoreLogo.png deleted file mode 100644 index 4556388..0000000 Binary files a/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/icons/StoreLogo.png and /dev/null differ diff --git a/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/icons/icon.icns b/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/icons/icon.icns deleted file mode 100644 index 87f09b4..0000000 Binary files a/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/icons/icon.icns and /dev/null differ diff --git a/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/icons/icon.ico b/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/icons/icon.ico deleted file mode 100644 index b3636e4..0000000 Binary files a/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/icons/icon.ico and /dev/null differ diff --git a/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/icons/icon.png b/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/icons/icon.png deleted file mode 100644 index e1cd261..0000000 Binary files a/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/icons/icon.png and /dev/null differ diff --git a/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/src/api/mod.rs b/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/src/api/mod.rs deleted file mode 100644 index a8965c7..0000000 --- a/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/src/api/mod.rs +++ /dev/null @@ -1,20 +0,0 @@ -use std::sync::Arc; - -use crate::prisma; -use rspc::Config; -pub use rspc::RouterBuilder; -use std::path::PathBuf; - -pub struct Ctx { - pub client: Arc, -} - -pub type Router = rspc::Router; - -pub(crate) fn new() -> RouterBuilder { - Router::new() - .config(Config::new().export_ts_bindings( - PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("../web/src/bindings.ts"), - )) - .query("version", |t| t(|_, _: ()| env!("CARGO_PKG_VERSION"))) -} diff --git a/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/src/main.rs b/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/src/main.rs deleted file mode 100644 index e651333..0000000 --- a/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/src/main.rs +++ /dev/null @@ -1,27 +0,0 @@ -#![cfg_attr( - all(not(debug_assertions), target_os = "windows"), - windows_subsystem = "windows" -)] - -use std::sync::Arc; - -mod api; -mod utils; -mod prisma; - -#[tokio::main] -async fn main() { - let router = api::new().build().arced(); - let db = tauri::api::path::data_dir().unwrap().join("my_app").join("app.db"); - println!("Using database at: {:?}", db); - let client = Arc::new(utils::load_and_migrate(db).await); - - tauri::Builder::default() - .plugin(rspc::integrations::tauri::plugin(router, move || { - api::Ctx { - client: Arc::clone(&client), - } - })) - .run(tauri::generate_context!()) - .expect("error while running tauri application"); -} diff --git a/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/src/utils.rs b/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/src/utils.rs deleted file mode 100644 index a428af6..0000000 --- a/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/src/utils.rs +++ /dev/null @@ -1,25 +0,0 @@ -use std::{sync::Arc, fs::{create_dir_all, File}, path::PathBuf}; -use crate::prisma::{self, PrismaClient}; - -pub async fn load_and_migrate(db_url: PathBuf) -> Arc { - let db_dir = db_url.parent().unwrap(); - if !db_dir.exists() { - create_dir_all(db_dir).unwrap() - } - - if !db_url.exists() { - File::create(db_url.clone()).unwrap(); - } - - let db_url = format!("file:{}", db_url.to_str().unwrap()); - - let client = prisma::new_client_with_url(&db_url).await.unwrap(); - - #[cfg(debug_assertions)] - client._db_push().await.unwrap(); - - #[cfg(not(debug_assertions))] - client._migrate_deploy().await.unwrap(); - - Arc::new(client) -} diff --git a/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/tauri.conf.json b/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/tauri.conf.json deleted file mode 100644 index 7f837b0..0000000 --- a/external/rspc/create-rspc-app/templates/tauri_pcr_base/src-tauri/tauri.conf.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "build": { - "beforeBuildCommand": "", - "beforeDevCommand": "", - "devPath": "http://localhost:3000", - "distDir": "../web/dist" - }, - "package": { - "productName": "my-app", - "version": "0.1.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": "my-app", - "width": 800 - } - ] - } -} diff --git a/external/rspc/create-rspc-app/tests/tests.rs b/external/rspc/create-rspc-app/tests/tests.rs deleted file mode 100644 index a269c54..0000000 --- a/external/rspc/create-rspc-app/tests/tests.rs +++ /dev/null @@ -1,160 +0,0 @@ -use std::{ - env, - fs::{create_dir_all, remove_dir_all}, - path::Path, - process::Stdio, -}; - -use cargo::{ - core::{Shell, Verbosity, Workspace}, - ops::{CompileOptions, Packages}, - util::{command_prelude::CompileMode, homedir}, - Config, -}; -use create_rspc_app::internal::{ - database::Database, framework::Framework, frontend_framework::FrontendFramework, - generator::code_generator, -}; -use futures::future::join_all; -use strum::IntoEnumIterator; -use tempdir::TempDir; -use tokio::process::Command; - -#[tokio::test] -async fn test_templates() { - env::set_var( - "CARGO_TARGET_DIR", - env::current_dir().unwrap().join("test-target"), - ); - env::set_var("CARGO_TERM_VERBOSE", "false"); - env::set_var("CARGO_QUITE", "true"); - let dir = TempDir::new("create_rspc_app_test").unwrap(); - let result = _test(dir.path()).await; - env::remove_var("CARGO_TARGET_DIR"); - remove_dir_all(&dir).unwrap(); - assert_eq!(result, Ok(())); -} - -async fn _test(base_dir: &Path) -> Result<(), String> { - let x = Framework::iter().flat_map(|framework| { - Database::iter().flat_map(move |database| { - let framework = framework.clone(); - FrontendFramework::iter().map(move |frontend| { - let (framework, database) = (framework.clone(), database.clone()); - async move { - let dir = - base_dir.join(format!("{:?}-{:?}-{:?}", framework, database, frontend)); - - if let Err(err) = code_generator( - framework.clone(), - database.clone(), - frontend.clone(), - // extra.clone(), - &dir, - "rspc-test", - ) { - return Err(format!( - "Error({:?}-{:?}-{:?}): Failed to generate: {}", - framework, database, frontend, err - )); - } - - dir.exists().then_some(()).ok_or_else(|| { - format!( - "Error({:?}-{:?}-{:?}): No directory was generated!", - framework, database, frontend - ) - })?; - - // TODO: This should probs be configurable but fine for now given it's only for the test cases - Command::new("pnpm") - .args(["install"]) - .current_dir(&dir.join("web")) - .stdout(Stdio::null()) - .stderr(Stdio::null()) - .status() - .await - .map_err(|err| { - format!( - "Error({:?}-{:?}-{:?}): Failed to run 'pnpm install' in web: {}", - framework, database, frontend, err - ) - })?; - - Command::new("pnpm") - .args(["build"]) - .current_dir(&dir.join("web")) - .stdout(Stdio::null()) - .stderr(Stdio::null()) - .status() - .await - .map_err(|err| { - format!( - "Error({:?}-{:?}-{:?}): Failed to run 'pnpm build' in web: {}", - framework, database, frontend, err - ) - })?; - - // TODO: Do a Typescript typecheck - - if framework == Framework::Tauri { - create_dir_all(dir.join("./web/dist")).map_err(|err| { - format!( - "Error({:?}-{:?}-{:?}): Failed to create Prisma dist folder: {}", - framework, database, frontend, err - ) - })?; - } - - if database == Database::PrismaClientRust { - Command::new("cargo") - .args(["--quiet", "prisma", "generate"]) - .current_dir(&dir) - .stdout(Stdio::null()) - .stderr(Stdio::null()) - .status() - .await - .map_err(|err| { - format!( - "Error({:?}-{:?}-{:?}): Failed to run cargo prisma generate: {}", - framework, database, frontend, err - ) - })?; - } - - let mut shell = Shell::new(); - shell.set_verbosity(Verbosity::Quiet); - let cwd = env::current_dir().unwrap(); - let cfg = Config::new(shell, cwd.clone(), homedir(&cwd).unwrap()); - - let ws = - &Workspace::new(dir.join("Cargo.toml").as_path(), &cfg).map_err(|err| { - format!( - "Error({:?}-{:?}-{:?}): Failed to load workspace: {}", - framework, database, frontend, err - ) - })?; - - let mut compile_cfg = CompileOptions::new(&cfg, CompileMode::Check { test: false }) - .map_err(|err| { - format!( - "Error({:?}-{:?}-{:?}): Failed to load workspace: {}", - framework, database, frontend, err - ) - })?; - compile_cfg.spec = Packages::Packages(vec!["rspc-test".into()]); - if let Err(err) = cargo::ops::compile(&ws, &compile_cfg) { - return Err(format!( - "Error({:?}-{:?}-{:?}): Failed to compile: {}", - framework, database, frontend, err - )); - } - - Ok(()) - } - }) - }) - }); - - join_all(x).await.into_iter().collect::>() -} diff --git a/external/rspc/docs/.gitignore b/external/rspc/docs/.gitignore deleted file mode 100644 index 02f6e50..0000000 --- a/external/rspc/docs/.gitignore +++ /dev/null @@ -1,19 +0,0 @@ -# build output -dist/ - -# dependencies -node_modules/ - -# logs -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* - - -# environment variables -.env -.env.production - -# macOS-specific files -.DS_Store diff --git a/external/rspc/docs/.npmrc b/external/rspc/docs/.npmrc deleted file mode 100644 index 999db39..0000000 --- a/external/rspc/docs/.npmrc +++ /dev/null @@ -1,2 +0,0 @@ -# Expose Astro dependencies for `pnpm` users -shamefully-hoist=true \ No newline at end of file diff --git a/external/rspc/docs/astro.config.mjs b/external/rspc/docs/astro.config.mjs deleted file mode 100644 index a318399..0000000 --- a/external/rspc/docs/astro.config.mjs +++ /dev/null @@ -1,37 +0,0 @@ -import { defineConfig } from "astro/config"; -import tailwind from "@astrojs/tailwind"; -import solidJs from "@astrojs/solid-js"; -import sitemap from "@astrojs/sitemap"; -import compress from "astro-compress"; -import rehypeExternalLinks from "rehype-external-links"; - -// https://astro.build/config -export default defineConfig({ - site: `https://rspc.dev`, - markdown: { - rehypePlugins: [ - [ - rehypeExternalLinks, - { - target: "_blank", - rel: ["nofollow"], - }, - ], - ], - }, - integrations: [ - tailwind(), - solidJs(), - sitemap(), - compress({ - html: { - collapseWhitespace: true, - }, - }), - ], - vite: { - ssr: { - external: ["svgo"], - }, - }, -}); diff --git a/external/rspc/docs/markdown/breaking-changes.md b/external/rspc/docs/markdown/breaking-changes.md deleted file mode 100644 index 6b92243..0000000 --- a/external/rspc/docs/markdown/breaking-changes.md +++ /dev/null @@ -1,146 +0,0 @@ ---- -title: Breaking Changes -index: 3 ---- - -# 0.0.5 to 0.0.6 - rspc - -This release comes with a huge amount of breaking changes. These changes are going to allow for many benefits in the future such as a rich plugin ecosystem. If your having trouble upgrading open a GitHub Issue or jump in the Discord server. New [rspc vscode extension](https://marketplace.visualstudio.com/items?itemName=oscartbeaumont.rspc-vscode) too! - -### Httpz integration - -This update moves from offering a direct [Axum](https://github.com/tokio-rs/axum) integration to using [httpz](https://github.com/oscartbeaumont/httpz). This change is going to allow rspc to support other HTTP servers and serverless environments in the near future. - -Rust Changes: - -```diff -let app = axum::Router::new() - .route("/", get(|| async { "Hello 'rspc'!" })) -- .route("/rspc/:id", router.clone().axum_handler(|| ())) -- .route("/rspcws", router.axum_ws_handler(|| ())) -+ .route("/rspc/:id", router.endpoint(|req, cookies| ()).axum()) -``` - -Typescript Changes: - -```diff -const client = createClient({ -- transport: new WebsocketTransport("ws://localhost:8080/rspcws"), -+ transport: new WebsocketTransport("ws://localhost:8080/rspc/ws"), -}); -``` - -### New Typescript bindings format - -The internal format of the generated Typescript bindings has changed. The import has also changed so ensure you update your code as follows. - -```diff -- import type { Operations } from "./my-bindings"; -+ import type { Procedures } from "./my-bindings"; -``` - -### New middleware syntax - -```diff -let router = Router::new() -- .middleware(|ctx| async move { -- println!("MIDDLEWARE TWO"); -- ctx.next("hello").await -- }) -+ .middleware(|mw| { -+ mw.middleware(|mw| async move { -+ let state = (mw.req.clone(), mw.ctx.clone(), mw.input.clone()); -+ // state allows sharing data between the two closures and is optional. -+ Ok(mw.with_state(state).with_ctx("hello")) -+ }) -+ // The .resp() part is optional and only required if you need to modify the return value. -+ // Be aware it will be called for every value in a subscription stream. -+ .resp(|state, result| async move { -+ println!( -+ "[LOG] req='{:?}' ctx='{:?}' input='{:?}' result='{:?}'", -+ state.0, state.1, state.2, result -+ ); -+ Ok(result) -+ }) -+}) -``` - -### New procedure syntax - -The new procedure syntax is one of the biggest changes with this release. It is reccomended you install the [Visual Studio Code extension](https://marketplace.visualstudio.com/items?itemName=oscartbeaumont.rspc-vscode) which will provide many snippets to make working with rspc as easy as possible. - -#### Query - -```diff -let router = Router::new() -- .query("version", |ctx, input: ()| "1.0.0") -+ .query("version", |t| t(|ctx, input: ()| "1.0.0")) -``` - -#### Mutation - -```diff -let router = Router::new() -- .mutation("demo", |ctx, input: ()| async move { todo!() }) -+ .mutation("demo", |t| t(|ctx, input: ()| async move { todo!() }) -``` - -#### Subscription - -Rust: - -```diff -let router = Router::new() -- .subscription("version", |ctx, input: ()| stream! { yield 42; }) -+ .subscription("version", |t| t(|ctx, input: ()| stream! { yield 42; })) -``` - -Typescript: - -```diff -rspc.useSubscription(['my.subscription'], { -- onNext: (data) => { -+ onData: (data) => { - console.log(data) - } -}); -``` - -### Minor changes/new features - - - `ws`, `rpc.*` and `rspc.*` are now reserved names for procedures - - `@rspc/solid` has been upgraded to the new `@tanstack/solid-query`. - - `router.execute` now returns a `serde_json::Value` and does not support subscriptions. Use `router.execute_subscription` to execute a subscription. - - The Axum body type is now `Vec` not `hyper::Body`. This may cause issues if your extractors aren't generic enough. - - Support for up to 5 Axum extractors. This limit will increase to 16 in a future release. - -### Warning on unstable API's - - - Support for Axum extractors will likely change or be removed in the future when support for other HTTP servers is added. It exists in this release for backwards compatibility. - -# 0.0.5 to 0.0.6 - @rspc/client - -All of the frontend code have been split up into multiple npm packages. We now have [`@rspc/client`](https://www.npmjs.com/package/@rspc/client), [`@rspc/react`](https://www.npmjs.com/package/@rspc/react) and [`@rspc/tauri`](https://www.npmjs.com/package/@rspc/tauri). This will help with SSR and reducing project dependencies. - -Start by installing the new packages if your require them. - -```bash -npm install @rspc/react # If your using the React hooks -npm install @rspc/tauri # If your using the Tauri transport -``` - -Then change your imports as follows. From: - -```ts -import { createReactQueryHooks } from '@rspc/client'; -import { TauriTransport } from '@rspc/client'; -``` - -To: - -```ts -import { createReactQueryHooks } from '@rspc/react'; -import { TauriTransport } from '@rspc/tauri'; -``` - -There is no Rust release for these changes. I am going to look into following SemVer in a future release, this is just a quick patch as multiple people have reported this being an issue with [Next.js](https://nextjs.org) SSR. diff --git a/external/rspc/docs/markdown/client/index.md b/external/rspc/docs/markdown/client/index.md deleted file mode 100644 index 68c4d25..0000000 --- a/external/rspc/docs/markdown/client/index.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: Create Vanilla Client -header: Vanilla Client -index: 30 ---- - -The vanilla client allows you to consume your API on the frontend. This client is the minimal core and it is recommended that you use the [React](/client/react) or [Solid](/client/solid) integration for building application. - -To get started first install the minimal runtime package. - -```bash -npm i @rspc/client -``` - -Next you need to export the Typescript bindings from your `rspc::Router` by using either [export_ts_bindings](/server/router#exporting-the-typescript-bindings) or [export_ts](/server/router#exporting-the-typescript-bindings). - -```rust -let router = ::new() - // This will automatically export the bindings to the `./ts` directory when you run build() in a non-release Rust build - .config(Config::new().export_ts_bindings("./bindings.rs")) - .build(); -``` - -Then you can use the `@rspc/client` package to consume your API. - -```ts -import { createClient, FetchTransport } from "@rspc/client"; -import type { Procedures } from "./ts/index"; // These were the bindings exported from your Rust code! - -// You must provide the generated types as a generic and create a transport (in this example we are using HTTP Fetch) so that the client knows how to communicate with your API. -const client = createClient({ - // Refer to the integration your using for the correct transport. - transport: new FetchTransport("http://localhost:4000/rspc"), -}); - -// Now use the client in your code! -const version = await client.query(["version"]); // The types will be inferred from your backend. -const userOne = await client.query(["getUser", 1]); -const userTwo = await client.mutation(["addUser", { name: "Monty Beaumont" }]); -``` - -# Transports - -rspc has multiple different transports which can be used. - -```ts -import { createClient, FetchTransport, WebsocketTransport, NoOpTransport } from "@rspc/client"; -import type { Procedures } from "./bindings.ts"; // The bindings exported from your Rust code! - -const fetchClient = createClient({ - transport: new FetchTransport("http://localhost:4000/rspc"), -}); - -const wsClient = createClient({ - transport: new WebsocketTransport("ws://localhost:8080/rspc/ws"), -}); - - -const noOpClient = createClient({ - transport: new NoOpTransport(), -}); diff --git a/external/rspc/docs/markdown/client/react.md b/external/rspc/docs/markdown/client/react.md deleted file mode 100644 index 4d88640..0000000 --- a/external/rspc/docs/markdown/client/react.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: React -index: 31 ---- - -rspc can be used on the frontend with [React](https://reactjs.org) via the powerful [React Query](https://tanstack.com/query/v4) library which provides caching, refetching and a lot more. - -To get started first install the required packages. - -```bash -npm i @rspc/client # The core client -pnpm i @rspc/react # The React integration -``` - -Then you can do the following: - -```ts -import { QueryClient } from '@tanstack/react-query'; -import { FetchTransport, createClient } from '@rspc/client'; -import { createReactQueryHooks } from '@rspc/react'; - -import type { Procedures } from "./ts/index"; // These were the bindings exported from your Rust code! - -// You must provide the generated types as a generic and create a transport (in this example we are using HTTP Fetch) so that the client knows how to communicate with your API. -const client = createClient({ - // Refer to the integration your using for the correct transport. - transport: new FetchTransport("http://localhost:4000/rspc"), -}); - -const queryClient = new QueryClient(); -const rspc = createReactQueryHooks(); - -function SomeComponent() { - const { data, isLoading, error } = rspc.useQuery(['version']); - const { mutate } = rspc.useMutation('updateVersion'); - - return ( - <> -

{data}

- - - ) -} - -function App() { - return ( - - - - ) -} -```` \ No newline at end of file diff --git a/external/rspc/docs/markdown/client/solidjs.md b/external/rspc/docs/markdown/client/solidjs.md deleted file mode 100644 index 4267f40..0000000 --- a/external/rspc/docs/markdown/client/solidjs.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: SolidJS -index: 32 ---- - -rspc can be used on the frontend with [SolidJS](https://www.solidjs.com/) via [Tanstack Solid Query](https://tanstack.com/query/v4/docs/adapters/solid-query) which provides caching, refetching and a lot more. - -To get started first install the required packages. - -```bash -npm i @rspc/client # The core client -pnpm i @rspc/solid # The SolidJS integration -``` - -Then you can do the following: - -```ts -import { QueryClient } from '@tanstack/solid-query'; -import { FetchTransport, createClient } from '@rspc/client'; -import { createSolidQueryHooks } from '@rspc/solid'; - -import type { Procedures } from "./ts/index"; // These were the bindings exported from your Rust code! - -// You must provide the generated types as a generic and create a transport (in this example we are using HTTP Fetch) so that the client knows how to communicate with your API. -const client = createClient({ - // Refer to the integration your using for the correct transport. - transport: new FetchTransport("http://localhost:4000/rspc"), -}); - -const queryClient = new QueryClient(); -const rspc = createSolidQueryHooks(); - -function SomeComponent() { - const echo = rspc.createQuery(() => ["echo", "somevalue"]); - const sendMsg = rspc.createMutation("sendMsg"); - - return ( - <> -

{echo.data}

- - - ) -} - -function App() { - return ( - - - - ) -} -```` \ No newline at end of file diff --git a/external/rspc/docs/markdown/ecosystem/deployment.md b/external/rspc/docs/markdown/ecosystem/deployment.md deleted file mode 100644 index 6f9b94f..0000000 --- a/external/rspc/docs/markdown/ecosystem/deployment.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: Deployment -index: 53 ---- - -## Coming soon... - -We will document how to deploy an rspc API to: - -- [Vercel Functions](https://vercel.com/docs/concepts/functions) - Tracked in issue [#9](https://github.com/oscartbeaumont/rspc/issues/9) -- [Netlify Functions](https://www.netlify.com/products/functions/) -- [Fly.io](https://fly.io) -- [Docker Container](https://www.docker.com/) \ No newline at end of file diff --git a/external/rspc/docs/markdown/ecosystem/prisma-client-rust.md b/external/rspc/docs/markdown/ecosystem/prisma-client-rust.md deleted file mode 100644 index c8a4452..0000000 --- a/external/rspc/docs/markdown/ecosystem/prisma-client-rust.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Prisma Client Rust -index: 51 ---- - -## More extensive docs coming soon... - -For now check out the Prisma Client Rust documentation on working with [rspc](https://prisma.brendonovich.dev/extra/rspc). \ No newline at end of file diff --git a/external/rspc/docs/markdown/ecosystem/zer.md b/external/rspc/docs/markdown/ecosystem/zer.md deleted file mode 100644 index a51e2ca..0000000 --- a/external/rspc/docs/markdown/ecosystem/zer.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: Zer -index: 52 ---- - -## Coming soon... \ No newline at end of file diff --git a/external/rspc/docs/markdown/integrations/axum.md b/external/rspc/docs/markdown/integrations/axum.md deleted file mode 100644 index 59cf269..0000000 --- a/external/rspc/docs/markdown/integrations/axum.md +++ /dev/null @@ -1,71 +0,0 @@ ---- -title: Axum -index: 40 ---- - -rspc has a built-in integration with [Axum](https://github.com/tokio-rs/axum) so that you can expose your API over HTTP. - -### Enable feature - -For the integration to work you must enable the `axum` feature of rspc. Ensure the rspc line in your `Cargo.toml` file looks like the following: - -```toml -[dependencies] -rspc = { version = "0.0.0", features = ["axum"] } # Ensure you put the latest version! -``` - -Read more about Rust features [here](https://doc.rust-lang.org/cargo/reference/features.html#dependency-features) - -### Usage - -```rust -let router = rspc::Router::<()>::new() - .query("version", |_, _: ()| "1.0.0") - .build() - .arced(); - -let app = axum::Router::new() - .route("/", get(|| async { "Hello 'rspc'!" })) - .route("/rspc/:id", router.endpoint(|| ()).axum()) - .layer(cors); -``` - -### Extracting Context from Request - -**Warning: The Axum extractor API is probally going to be removed in a future release. If you are using this API, I would appreciate a message in the Discord about your usecase so I can ensure the replacement API can do everything you need.** - -**Warning: Current we only support a single extractor. This is a temporary limitation so open a GitHub Issue if you need more.** - -You may want to use Axum extractors to get data from the request such as cookies and put them on the request context. The `axum_handler` function takes a closure that can take up to 16 valid Axum extractors as arguments and then returns the [request context](/server/request-context) (of type `TCtx`). - -```rust -let router = rspc::Router::::new() - .query("currentPath", |ctx, _: ()| ctx) - .build() - .arced(); - -let app = axum::Router::new() - .route("/", get(|| async { "Hello 'rspc'!" })) - // We use Axum `Path` extractor. The `rspc::Router` has `TCtx` set to `String` so we return the path string as the context. - .route("/rspc/:id", router.endpoint(|Path(path): Path| path).axum()) - .layer(cors); -``` - -### Usage on frontend - -```typescript -import { FetchTransport, WebsocketTransport, createClient } from '@rspc/client'; -import type { Procedures } from "./ts/bindings"; // These were the bindings exported from your Rust code! - -// For fetch transport -const client = createClient({ - transport: new FetchTransport("http://localhost:4000/rspc"), -}); - -// For websocket transport - Required for subscriptions -const client = createClient({ - transport: new WebsocketTransport("ws://localhost:8080/rspc/ws"), -}); - -client.query(['version']).then((data) => console.log(data)); -``` \ No newline at end of file diff --git a/external/rspc/docs/markdown/integrations/tauri.md b/external/rspc/docs/markdown/integrations/tauri.md deleted file mode 100644 index d400f7a..0000000 --- a/external/rspc/docs/markdown/integrations/tauri.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Tauri -index: 41 ---- - -rspc has a built-in integration with [Tauri](https://tauri.app/) so that you can expose your API to your frontend code using Tauri's IPC. - -### Enable feature - -For the integration to work you must enable the `tauri` feature of rspc. Ensure the rspc line in your `Cargo.toml` file looks like the following: - -```toml -[dependencies] -rspc = { version = "0.0.0", features = ["tauri"] } # Ensure you put the latest version! -``` - -Read more about Rust features [here](https://doc.rust-lang.org/cargo/reference/features.html#dependency-features) - -### Usage - -Then expose your router using the Tauri plugin. - -```rust -let router = ::new().build(); - -tauri::Builder::default() - .plugin(rspc::integrations::tauri::plugin(router, || ())) -``` - -### Usage on frontend - -```typescript -import { createClient } from '@rspc/client'; -import { TauriTransport } from '@rspc/tauri'; -import type { Procedures } from "./ts/bindings"; // These were the bindings exported from your Rust code! - -const client = createClient({ - transport: new TauriTransport() -}); - -client.query(['version']).then((data) => console.log(data)); -``` - -You can use the `client` by itself or integrate with the [Tanstack Query](/client/tanstack-query) hooks. diff --git a/external/rspc/docs/markdown/overview.md b/external/rspc/docs/markdown/overview.md deleted file mode 100644 index 7e105d9..0000000 --- a/external/rspc/docs/markdown/overview.md +++ /dev/null @@ -1,97 +0,0 @@ ---- -title: Overview -header: rspc -index: 1 ---- - -rspc is a typesafe router which allows you to build APIs in Rust which have end to end typesafety. You define your logic in a Rust function on your backend and use the React hooks or Typescript client to call it. Your rspc router is transport agnostic which means you can serve it from any HTTP server of your choice such as [Axum](https://github.com/tokio-rs/axum) or even from [Tauri](https://tauri.app). - -Why rspc? -- ✅ **Typesafety** - allows your team to move faster and **eliminate** a whole class of common bugs -- ✅ **Developer experience** - you **define a function** in Rust and can **call it from the frontend** with no extra magic -- ✅ **Minimal runtime** - small runtime footprint so your can get the **full potential of Rust's speed** -- ✅ **Middleware** - For easily extending your procedures with **auth, logging and more** -- 🚧 **Work in progress** - rspc is still **early in development**. It's stable but you may find use cases which aren't well supported. - -rspc gives you the typesafety of [GraphQL](https://graphql.org) without the complexity of it. - -Let's skip the talk and get to the code. Let's start with the Rust side. - -```rust -use rspc::Router; - -// We define the rspc Router -let router = Router::::new() - // Then we define a new query called "version" which takes no arguments (`()`) and returns "1.0.0" - .query("version", |t| t(|ctx, args: ()| "1.0.0")) - // Finally we define a mutation called "createUser" which takes a user's name as a `String` and returns a `User`. - .mutation("createUser", |t| { - t(|ctx, name: String| async move { - ctx.db - .post() - .find_many(vec![]) - .exec() - .await? - .map_err(Into::into) // Result - }) - }) - // You can stack as many procedures as you want! - .build(); - -// Finally we export the typescript bindings from the router. -router.export_ts("./bindings.ts").unwrap(); -``` - -When you run this code it will create a `bindings.ts` file which will look similar to the following. - -```typescript -// This file was generated by [rspc](https://github.com/oscartbeaumont/rspc). Do not edit this file manually. - -export type Procedures = { - queries: - { key: "version", input: never, result: string }, - mutations: - { key: "createUser", input: string, result: User }, - subscriptions: never, -}; - -export interface User { name: string; } -``` - -Now that we have these Typescript bindings we can use them to call the API on the frontend in a typesafe manner. - -```tsx -import type { Procedures } from "./bindings.ts"; // These are the bindings exported from your Rust code! - -const rspc = createReactQueryHooks(); - -function MyReactApp() { - // If you've used Tanstack Query this will look familiar because it's using it under the hood. - const { data: version } = rspc.useQuery("version"); - const { mutate: createUser } = rspc.useMutation("createUser"); - - // This would throw a Typescript error because the type of version is inferred to be a string from the Rust code. - let x: number = version; - - return ( -
-

rspc

-

Version: {version}

- - -
- ); -} -``` - -If you still confused about what rspc is check out [Brendan](http://github.com/brendonovich) explain it in caveman terms [in this clip](https://clips.twitch.tv/WonderfulPrettyMagpieBudBlast-S1dyvf5tBAqIwjt1). - -### Production users - - - [Spacedrive](https://spacedrive.com) - - [Twidge](https://twidge.app) - - [Unreleased] [Mattrax](https://mattrax.app) - -### Inspiration - -This project is based off [trpc](https://trpc.io) and was inspired by the bridge system [Jamie Pine](https://github.com/jamiepine) designed for [Spacedrive](https://www.spacedrive.com). A huge thanks to everyone who helped inspire this project! diff --git a/external/rspc/docs/markdown/quickstart.md b/external/rspc/docs/markdown/quickstart.md deleted file mode 100644 index 5fb7fb2..0000000 --- a/external/rspc/docs/markdown/quickstart.md +++ /dev/null @@ -1,83 +0,0 @@ ---- -title: Quickstart -index: 2 ---- - -## Setup your editor - -If you are using [Visual Studio Code](https://code.visualstudio.com) you should install the [rspc extension](https://marketplace.visualstudio.com/items?itemName=oscartbeaumont.rspc-vscode) for useful code shortcuts. - -## Manual setup - -Get rspc up and running in your own project. - -### Create new project (optional) - -If you haven't got a Rust project already setup, create a new one using the following command. - -```bash -cargo new -cd -cargo add tokio --features full # rpsc requires an async runtime -``` - -### Install rspc - -`rspc` is distributed through a Rust crate hosted on [crates.io](https://crates.io/crates/rspc). Add it to your project using the following command: - -```bash -cargo add rspc -``` - -This command will not exist if your running a Rust version earlier than `1.62.0`, please upgrade your Rust version if this is the case. - -### Create router - -Go into `src/main.rs` and add the following code: - -```rust -use rspc::Router; - -#[tokio::main] -async fn main() { - let router = ::new() - .query("version", |t| t(|ctx, input: ()| env!("CARGO_PKG_VERSION"))) - .build(); -} -``` - -Now you have setup a basic `rspc::Router`. - -### Exposing your router - -Now that you have a router your probably wondering how you access it from your frontend. This is done through an rspc integration. I would recommend starting with [Axum](https://github.com/tokio-rs/axum), by following [this](/integrations/axum). - -### Unit test (optional) - -Your rspc router is validated on the startup of your application and may panic if anything is incorrect. To ensure you catch any issues with your router before releasing a production version of your application you can use a unit test. - -```rust -use rspc::Router; - -fn router() -> Router { - ::new() - .query("version", |t| t(|ctx, input: ()| env!("CARGO_PKG_VERSION"))) - .build() -} - -#[tokio::main] -async fn main() { - let r = router(); - // Use your router like you normally would -} - -#[cfg(test)] -mod tests { - #[test] - fn test_rspc_router() { - super::router(); - } -} -``` - -This method is possible as all context (such as database connections) comes from the request (read more about [request context](/server/request-context)) and therefore you don't need to setup your database and other dependencies to validate the router is valid. diff --git a/external/rspc/docs/markdown/server/common-errors.md b/external/rspc/docs/markdown/server/common-errors.md deleted file mode 100644 index 4373dd9..0000000 --- a/external/rspc/docs/markdown/server/common-errors.md +++ /dev/null @@ -1,92 +0,0 @@ ---- -title: Common errors ---- - -rspc uses traits to allow for any nearly any type to be returned from your procedures, however this can make the error messages hard to understand so some guidance is provided here. - -#### the trait `IntoLayerResult<_>` is not implemented for type - -This error means the type which you returned from your procedure is not valid. This is probably because it doesn't implement the traits: - - - [`serde::Serialize`](https://docs.rs/serde/latest/serde/trait.Serialize.html) - - [`specta::Type`](https://docs.rs/specta/latest/specta/trait.Type.html) - -To fix this error ensure the custom types which you return from your procedure have the derive macros as shown below or that the type is a [Rust primitive type](https://doc.rust-lang.org/book/ch03-02-data-types.html). - -```rust -use rspc::Type; -use serde::Serialize; // This requires the 'derive' feature to be enabled. - -#[derive(Type, Serialize)] -struct MyStruct {} - -#[derive(Type, Serialize)] -enum MyStruct { - SomeVariant -} - -// Type aliases do not require the derive macro. -type AnotherName = MyStruct; -``` - -If you are unable to determine what is causing your type to be invalid you can use the following utility functions to get a better warning from the Rust compiler. Ensure you don't keep this utility function in production code. - -```rust -pub struct Demo {} - -rspc::test_result_type::(); -rspc::test_result_value(Demo {}); -``` - -#### the trait `for<'de> serde::de::Deserialize<'de>` is not implemented for - -This error means that the type which you specified as your argument type is invalid. Ensure the type implements the trait [`serde::DeserializeOwned`](https://docs.rs/serde/latest/serde/de/trait.DeserializeOwned.html). - -This can be done using the `Deserialize` derive macro provided by [serde](https://serde.rs/derive.html): - -```rust -use serde::Deserialize; // This requires the 'derive' feature to be enabled. - -#[derive(Deserialize)] -struct MyStruct {} - -#[derive(Deserialize)] -enum MyStruct { - SomeVariant -} - -// Type aliases do not require the derive macro. -type AnotherName = MyStruct; -``` - -#### the trait `Type` is not implemented for - -This error means that the type which you specified as your argument type is invalid. Ensure the type implements the trait [`specta::Type`](https://docs.rs/specta/latest/specta/trait.Type.html). - -This can be done using the `Type` derive macro: - -```rust -use rspc::Type; - -#[derive(Type)] -struct MyStruct {} - -#[derive(Type)] -enum MyStruct { - SomeVariant -} -``` - -#### type mismatch in closure arguments - -This is probably caused by you incorrectly hardcoding the type for the request context (first argument) of the procedure closure. - -```rust -// INVALID CODE -Router::<()>::new() // Here we set the context to `()` but we set the closures argument type to `i32`. - .query("debug", |t| t(|ctx: i32, _: ()| {})) - -// SOLUTION -Router::<()>::new() // Here we don't set the type of the context on the closure and Rust infers it. - .query("debug", |t| t(|ctx, _: ()| {})) -``` diff --git a/external/rspc/docs/markdown/server/concepts.md b/external/rspc/docs/markdown/server/concepts.md deleted file mode 100644 index 9f32193..0000000 --- a/external/rspc/docs/markdown/server/concepts.md +++ /dev/null @@ -1,109 +0,0 @@ ---- -title: Concepts -index: 21 ---- - -# Capturing variables - -rspc allows for capturing variables in the closure of a procedure. This is generally fround upon as it put a requirement on that value when creating the router which could limit your ability to unit test the router. More of the logic behind this is explained in request context section below. This is a general rule and you will likely find exceptions. - -```rust - -// NOT-RECOMMEND - Capturing variables -// You should avoid providing having arguments to your mount function -pub(crate) fn mount(db: DatabaseConn) -> Router { - // The `move` on the next line is the best indication that you are capturing variables. - ::new().query("getUsers", move |t| { - t(move |_, _: ()| async move { db.users().find_all().exec().await }) - }); -} - - -// RECOMMEND - Using Request Context -struct MyCtx { db: DatabaseConn } - -pub(crate) fn mount() -> Router { - Router::::new().query("getUsers", |t| { - t(|ctx: MyCtx, _: ()| async move { ctx.db.users().find_all().exec().await }) - }); -} - -``` - -# Request Context - -When calling execute on a operation you must provide a request context. The type of the request context must match the `TCtx` generic parameter defined on the `rspc::Router`. - -Using request context is important because it means you can construct the router without a dependency on anything (such a database) which allows you to validate the router in a unit test. The routes are stringly typed so we can't just rely on Rust's compiler to validate the router. This tradeoff was made for the superior developer experience as we believe using request context and a unit test for validating the router is able to mitigate the risk. - -A request context is created on every request and can hold any data the user wants. The request context also abstracts the underlying transport layer such as HTTP, Websocket or Tauri so that the router can be agonistic to which one is being used. - -```rust -struct MyCtx { - db: Arc, - some_value: &'static str -} - -// Axum shown here as an example. This could be any transport. -fn main() { - let db = Arc::new(Database::new()); - - // Setup your rspc router to take your custom context type - let router = Router::::new() - .query("myQuery", |t| t(|ctx, input: ()| { - assert_eq!(ctx.some_value, "Hello World"); - })) - .build(); - - axum::Router::new() - // Attach the rspc router to your axum router - // The closure you provide is used to create a new request context for each request - .route("/rspc/:id", - router - .endpoint(move || MyCtx { - db: db.clone(), - some_value: "Hello World", - }) - .axum() - ) -} -``` - -# Crate Features - -rspc has many [crate features](https://doc.rust-lang.org/cargo/reference/features.html) which are disabled by default. The feature names match the crate which the feature integrates with. - - - - - - - - -
- - - [axum](https://github.com/tokio-rs/axum) - - [tauri](https://tauri.app) - - [uuid](https://github.com/uuid-rs/uuid) - - [chrono](https://github.com/chronotope/chrono) - - [time](https://github.com/time-rs/time) - - [bigdecimal](https://github.com/akubera/bigdecimal-rs) - - - - - [rust_decimal](https://github.com/paupino/rust-decimal) - - [indexmap](https://github.com/bluss/indexmap) - - [ipnetwork](https://github.com/achanda/ipnetwork) - - [mac_address](https://github.com/repnop/mac_address) - - [tracing](https://github.com/tokio-rs/tracing) - - [uhlc](https://github.com/atolab/uhlc-rs) - -
- -To enable a feature you must add it to the features list in your `Cargo.toml` file like the following: - -```toml -[dependencies] -... -rspc = { version = "0.0.0", features = ["uuid", "chrono"] } -``` diff --git a/external/rspc/docs/markdown/server/error-handling.md b/external/rspc/docs/markdown/server/error-handling.md deleted file mode 100644 index 90f0cd4..0000000 --- a/external/rspc/docs/markdown/server/error-handling.md +++ /dev/null @@ -1,72 +0,0 @@ ---- -title: Error Handling -index: 22 ---- - -rspc procedures have to return the type `Result` where `T` can be any type which can be returned from a normal procedure. - -The fact that Rust as a language currently requires the error type to be concrete makes error handling slightly annoying. All of the error handling done by rspc relys on the [question mark operator (`?`)](https://doc.rust-lang.org/rust-by-example/std/result/question_mark.html) in Rust to make a reasonable developer experience. The question mark operator will expand into something along the lines of `return Err(From::from(err))` under the hood. This means for any type `T` if you implement `From for rspc::Error` you will be able to rely on the question mark operator to convert it into an `rspc::Error` type. - -### An example using the `rspc::Error` type - -```rust -use rspc::{Error, Router}; - -let router = ::new() - .query("ok", |t| { - t(|_, args: ()| { - // Rust infers the return type is `Result` - Ok("Hello World".into()) - }) - }) - .query("err", |t| { - t(|_, args: ()| { - // Rust is unable to infer the `Ok` variant of the result. - // We use the `as` keyword to tell Rust the type of the result. - // This situation is rare in real world code. - Err(Error::new( - ErrorCode::BadRequest, - "This is a custom error!".into(), - )) as Result - }) - }) - .query("errWithCause", |t| { - t(|_, args: ()| { - some_function_returning_error().map_err(|err| { - Error::with_cause( - ErrorCode::BadRequest, - "This is a custom error!".into(), - // This error type implements `std::error::Error` - err, - ) - }) - }) - }) - .build(); -``` - -### Custom error type - -```rust -pub enum MyCustomError { - ServerDidABad, -} - -impl From for rspc::Error { - fn from(_: MyCustomError) -> Self { - rspc::Error::new(rspc::ErrorCode::InternalServerError, "Server did an oopsie".into()) - } -} - -let router = ::new() - .query("returnCustomErrorUsingQuestionMark", |t| { - t(|_, args: ()| Ok(Err(MyCustomError::ServerDidABad)?)) - }) - .query("customErrUsingInto", |t| { - t(|_, _args: ()| { - let res: Result = some_function(); - res.map_err(Into::into) // This is an alternative to using the question mark operator - }) - }) - .build(); -``` \ No newline at end of file diff --git a/external/rspc/docs/markdown/server/middleware.md b/external/rspc/docs/markdown/server/middleware.md deleted file mode 100644 index 8873323..0000000 --- a/external/rspc/docs/markdown/server/middleware.md +++ /dev/null @@ -1,112 +0,0 @@ ---- -title: Middleware -index: 23 ---- - -rspc allows adding middleware to your router which can intercept the request and response for procedures defined after it on the router. Middleware can also modify the context type which is passed to future procedures which is super powerful. - -The middleware APIs are still fairly new. Better documentation will come in the future once they are more stable. - -# Context switching - -Middleware are allowed to modify the context. This includes being able to change it's type. All operations below the middleware in the router will receive the new context type. - -```rust -use rspc::Router; - -fn main() { - let router = Router::<()>::new() - .middleware(|mw| mw.middleware(|mw| async move { - let old_ctx: () = mw.ctx; - Ok(mw.with_ctx(42)) - })) - .query("version", |t| { - t(|ctx: i32, _: ()| "1.0.0") - }) - .query("anotherQuery", |t| t(|ctx: i32, _: ()| "Hello World!")) - .build(); -} -``` - -# Route metadata - -Feature coming soon. Tracking in issue [#21](https://github.com/oscartbeaumont/rspc/issues/21). - -# Examples - -## Logger middleware - -```rust -let router = ::new() - // Logger middleware - .middleware(|mw| { - mw.middleware(|mw| async move { - let state = (mw.req.clone(), mw.ctx.clone(), mw.input.clone()); - Ok(mw.with_state(state)) - }) - .resp(|state, result| async move { - println!( - "[LOG] req='{:?}' ctx='{:?}' input='{:?}' result='{:?}'", - state.0, state.1, state.2, result - ); - Ok(result) - }) - }); -``` - -## Authentication middleware - -```rust -pub struct UnauthenticatedContext { - pub session_id: Option, -} - -let router = Router::::new() - .query("unauthenticatedQuery", |t| { - t(|ctx: UnauthenticatedContext, _: ()| { - "Some Public Data!" - }) - }) - .middleware(|mw| { - mw.middleware(|mw| async move { - match mw.ctx.session_id { - Some(ref session_id) => { - let user = db_get_user_from_session(session_id).await; - // We use `.with_ctx` to switch the context type. - Ok(mw.with_ctx(AuthenticatedCtx { user })) - } - None => Err(rspc::Error::new( - ErrorCode::Unauthorized, - "Unauthorized".into(), - )), - } - }) - }) - .query("authenticatedQuery", |t| { - // This query takes the context from the middleware. - t(|ctx: AuthenticatedCtx, _: ()| { - "Some Secure Data!" - }) - }); -``` - -## Reject all middleware - -```rust -let router = ::new() - // Reject all middleware - .middleware(|mw| { - mw.middleware(|mw| async move { - Err(rspc::Error::new( - ErrorCode::Unauthorized, - "Unauthorized".into(), - )) as Result, _> - }) - }) - // The middleware was stop this query from being called. - .query("unreachableQuery", |t| { - t(|ctx: (), _: ()| { - "Some Unreachable Data!" - }) - }); -``` diff --git a/external/rspc/docs/markdown/server/plugins.md b/external/rspc/docs/markdown/server/plugins.md deleted file mode 100644 index e1c6eb9..0000000 --- a/external/rspc/docs/markdown/server/plugins.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Plugins -index: 24 ---- - -# Coming soon... - -WIP Plugins: - - OpenAPI - [issue #29](https://github.com/oscartbeaumont/rspc/issues/29) - - Playground - [issue #23](https://github.com/oscartbeaumont/rspc/issues/23) - - Authentication library \ No newline at end of file diff --git a/external/rspc/docs/markdown/server/router.md b/external/rspc/docs/markdown/server/router.md deleted file mode 100644 index a4fcc7e..0000000 --- a/external/rspc/docs/markdown/server/router.md +++ /dev/null @@ -1,197 +0,0 @@ ---- -title: Router -index: 20 ---- - -A router contains a collection of procedures (queries, mutations or subscriptions) that can be called by a client. A router has many generic arguments which can be configured by the user to match the type of data that the router will be handling. A router is defined as `Router`. - -# TCtx - -The type of the [request context](/server/concepts#request-context). This is usually a `struct` containing state coming from the webserver such as a database connection and user session. - -For example: - -```rust -pub struct MyCtx { - // The database connection. Prisma Client Rust shown here. - db: Arc, - - // The session_id which could be extracted from HTTP cookies. - session_id: Option, - - // The HTTP cookie jar. The `Cookies` type is hypothetical. - cookies: Cookies, - - // An `Arc` allows us to hold multiple immutable references to the message. - // The `Mutex` allows interior mutability so we can safely modify the string from a immutable reference. - my_cool_msg: Arc>, -} -``` - -Constructing an rspc router with a specific context type is done as following. - -```rust -// Create a router with the default `TCtx` of `()` -let router = ::new(); - -// Create a router with a custom `TCtx` type -let router = Router::::new(); -```` - -`TCtx` is super powerful in rspc because [middleware](/server/middleware) are able to change it for procedures following them in the chain. A great example of this in action is an authentication middleware like shown below. - -```rust -pub struct AuthenticatedCtx { - db: Arc, // Your database connection - user: User, // Your user model in Rust. -} - -// We define a router with the `TCtx` type set to `MyCtx` -let router = Router::::new() - // We then define the version query before the middleware so that it doesn't require authentication. - .query("version", |t| { - t(|ctx: MyCtx, _: ()| "1.0.0") - }) - // Then we define a middleware which is responsible for rejecting unauthorized requests. - .middleware(|mw| mw.middleware(|mw| async move { - let old_ctx = mw.ctx; - match old_ctx.session_id { - Some(ref session_id) => { - // .with_ctx changes the type of `TCtx` for all preceding procedures. - Ok(mw.with_ctx(AuthenticatedCtx { - user: User::from_session(session_id).await? - })) - } - None => Err(rspc::Error::new( - ErrorCode::Unauthorized, - "Unauthorized".into(), - )), - } - })) - // We then define a query to return the current user. This will only be called for authenticated users. - .query("getMe", |t| { - // See how we now take in `AuthenticatedCtx` with all the data from the middleware - t(|ctx: AuthenticatedCtx, _: ()| ctx.user) - }) - .build(); -``` - -# TMeta - -(deprecated and pending removal) - -For all intents and purposes keep this `()`. This generic argument does nothing in the current release and may be deprecated in the future. - -# TMiddleware - -This argument holds the instance of the last middleware builder which you mounted onto your router through a `.middleware(...)` call. You generally don't need to worry about this generic but is what allows the context switching to work. - -# Attaching procedures - -Procedures represent a function you define in Rust which can be called from the frontend. You can define them on your routing like the following example. - -```rust -let router = ::new() - // Define a query taking no arguments and returning "1.0.0" - .query("version", |t| t(|ctx, input: ()| "1.0.0")) - // Define a query taking a string and returning it - .query("echo", |t| t(|ctx, input: String| input)) - // Define a query which does an asynchronous operation. - .query("getUsers", |t| t(|ctx, input: String| async move { - await User::get_all() // returns `User` - })) - - // The same syntax as above can be used for mutations. - .mutation("createUser", |t| t(|ctx, new_user: User| async move { - await new_user.create() // Returns `()` - })) - - // Subscriptions can also be used for server -> client real time events - // Subscriptions have a slightly different syntax. You can respond with any Rust `Stream` type. - .subscription("pings", |t| t(|ctx, input: ()| async_stream::stream! { - for i in 0..5 { - yield "ping".to_string(); - sleep(Duration::from_secs(1)).await; - } - })) - .build(); // Ensure you build once you have added all your operations. -``` - -# Should I use a query or a mutation? - -Does your operation have **side effects**? If so, use a mutation else, use a query. - -A query should not change any data on the server, it should just be responsible for fetching data. A mutation should be responsible for changing data on the server. - -# Merging routers - -When building an API server, you will often want to split up your endpoints into multiple files to make the code easier to work on. You can combine routers using the `.merge` method. - -`router.merge(prefix: &'static str, router: Router)` - -```rust -// This could be defined in another file or even another crate -let users_router = ::new() - .query("list", |t| t(|ctx, input: ()| vec![] as Vec<()>)); - -let router = ::new() - .query("version", |t| t(|_ctx, _: ()| "1.0.0")) - // The first parameter is a prefix to add to all routes in the merged router. - .merge("users.", users_router) // You can now call `users.list` from your frontend. - .build(); -``` - -# Invalidate query - -🚧 WIP - [Tracking issue #19](https://github.com/oscartbeaumont/rspc/issues/19) - -# Method chaining - -When combining multiple operations, you must ensure you chain the method calls or shadow the router variable. This is required due to the way the generics work on the Router. - -```rust -// Chaining method calls -let router = ::new() - .query("version", |t| t(|ctx, input: ()| todo!())) - .mutation("createUser", |t| t(|ctx, input: ()| todo!())) - .build(); - -// Shadowing variable -let router = ::new() - .query("version", |t| t(|ctx, input: ()| todo!())) - .mutation("createUser", |t| t(|ctx, input: ()| todo!())); -let router = router - .mutation("deleteUser", |t| t(|ctx, input: ()| todo!())); -let router = router.build(); -``` - -# Exporting the Typescript bindings - -There are two methods to export the Typescript bindings. You can either use the `export_ts_bindings` configuration option or call the `export_ts` function directly on the build router. - -```rust -let router = ::new() - .config( - Config::new() - // Doing this will automatically export the bindings when the `build` function is called. - .export_ts_bindings(PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("./bindings.ts")) - ) - .query("version", |t| t(|_, _: ()| env!("CARGO_PKG_VERSION"))) - .build(); - -// Doing it this way you have the flexibility to export it at any time and to wheerever you want. -router.export_ts(PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("./bindings.ts")).unwrap(); -``` - -You can also use the `set_ts_bindings_header` option on the `Config` if you want to add a custom header to the top of the generated file. This is useful to disable [ESLint](https://eslint.org), [Prettier](https://prettier.io) or other similar tools from processing the generated file. - -```rust -let router = ::new() - .config( - Config::new() - // This text is added to the start of the exported Typescript file. - .set_ts_bindings_header("/* eslint-disable */") - )) - .query("version", |t| t(|_, _: ()| env!("CARGO_PKG_VERSION"))) - .build(); -``` diff --git a/external/rspc/docs/markdown/server/selection.md b/external/rspc/docs/markdown/server/selection.md deleted file mode 100644 index e3ddb02..0000000 --- a/external/rspc/docs/markdown/server/selection.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: Selection -index: 24 ---- - -**If you are using [Prisma Client Rust](https://prisma.brendonovich.dev) with rspc generally use [select & include](https://prisma.brendonovich.dev/reading-data/select-include) instead of this.** - -It is very common when building an API to fetch some data from the database but you only want to expose a subset of the data to the client. With rspc you can use the `selection!` macro to easily return a subset of fields on a struct. - -For example say you have a `User` struct like the following: - -```rust -pub struct User { - pub id: i32, - pub name: String, - pub email: String, - pub age: i32, - pub password: String, -} -``` - -If your database returns a `User` struct you are unable to return it directly from your procedure as that would leak the value in the `password` field. Traditionally you would have to create a second struct without the `password` field, however this isn't optimal as it adds unnecessary boilerplate to your project. Instead you can use the `selection!` macro like below to select only certain fields from the struct. - -```rust -let router = ::new() - .query("me", |t| { - t(|_, _: ()| { - // This struct would be returned from your database! - let user = User { - id: 1, - name: "Monty Beaumont".into(), - email: "monty@otbeaumont.me".into(), - age: 7, - password: "password123".into(), - }; - - selection!(user, { name, age }) // We select only the name and age fields to return - }) - }) - .query("users", |t| { - t(|_, _: ()| { - let user = User { - name: "Monty Beaumont".into(), - email: "monty@otbeaumont.me".into(), - age: 7, - password: "password123".into(), - }; - - // We have a vector of data which contains information but we only want to return some of it the user. - // Eg. We don't want to expose the password field. - let users = vec![user.clone(), user.clone(), user]; - - // Here we are selecting the fields we want to expose on each item in the list. This is completely type safe! - // The square brackets around the selection dictate that the selection should be applied to each item in the list. - selection!(users, [{ name, age }]) - }) - }) - .build(); -``` \ No newline at end of file diff --git a/external/rspc/docs/markdown/server/specta.md b/external/rspc/docs/markdown/server/specta.md deleted file mode 100644 index 95ba010..0000000 --- a/external/rspc/docs/markdown/server/specta.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: Specta ---- - -For rspc to be able to convert your types into Typescript they must implement the `specta::Type` trait. [Specta](https://github.com/oscartbeaumont/specta) is a crate that was created so that rspc can introspect Rust types. The `Type` trait allows the Typescript exporter to understand the fields, generics and dependant types of a Rust type. - -The easiest way to implement the `specta::Type` trait is by using the `rspc::Type` derive macro. We have already implemented most in-built types if you can find a missing one open a [GitHub Issue](https://github.com/oscartbeaumont/rspc). - -```rust -use rspc::Type; - -#[derive(Type)] -pub struct MyStruct { - pub name: String, - pub age: i32, -} - -#[derive(Type)] -pub enum MyEnum { - SomeVariant, - // It is import MyStruct also implements `Type` or this will not work - AnotherVariant(MyStruct), -} -``` - -### Limitations - -You should be careful when using generics with [type aliases](https://doc.rust-lang.org/reference/items/type-aliases.html) as you may run into situations where the types are not exported correctly. As far as we are aware this is a known limitation with Rust and is not something we can fix. If you run into this edge case you should change to using a `struct` instead of a type alias to workaround the problem. - -### Other languages - -Specta stores information about your type which means an exporter for languages other than [Typescript](https://www.typescriptlang.org) could be made. If you are interested in supporting other languages, you can do so directly using the `specta::Type` trait in your own project, however a pull request to Specta would be appreciated. - -### Specta without rspc - -Specta is an independent crate and can be used without rspc. Refer to it's [documentation](https://docs.rs/specta) for support using it. diff --git a/external/rspc/docs/package.json b/external/rspc/docs/package.json deleted file mode 100644 index ebdcd88..0000000 --- a/external/rspc/docs/package.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "name": "@rspc/docs", - "version": "0.0.0", - "private": true, - "scripts": { - "dev": "astro dev", - "start": "astro dev", - "build": "astro check && tsc --noEmit && astro build", - "preview": "astro preview" - }, - "dependencies": { - "astro-spa": "^1.3.9", - "clsx": "^1.2.1", - "morphdom": "^2.6.1", - "solid-js": "^1.6.8" - }, - "devDependencies": { - "@astrojs/sitemap": "^1.0.0", - "@astrojs/solid-js": "^1.2.3", - "@astrojs/tailwind": "^2.1.3", - "@tailwindcss/typography": "^0.5.9", - "astro": "1.9.2", - "astro-compress": "^1.1.25", - "astro-icon": "^0.8.0", - "node-html-parser": "^6.1.4", - "rehype-external-links": "^2.0.1", - "svgo": "^3.0.2", - "tailwind-scrollbar": "2.1.0", - "tailwindcss": "^3.2.4" - }, - "engines": { - "pnpm": ">=7.0.0", - "npm": "pnpm", - "yarn": "pnpm", - "node": ">=16.0.0" - }, - "pnpm": { - "peerDependencyRules": { - "ignoreMissing": [ - "@babel/core" - ] - } - } -} diff --git a/external/rspc/docs/public/favicon.ico b/external/rspc/docs/public/favicon.ico deleted file mode 100644 index e6d0b5e..0000000 Binary files a/external/rspc/docs/public/favicon.ico and /dev/null differ diff --git a/external/rspc/docs/public/favicon.svg b/external/rspc/docs/public/favicon.svg deleted file mode 100644 index a266175..0000000 --- a/external/rspc/docs/public/favicon.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/external/rspc/docs/public/logo.png b/external/rspc/docs/public/logo.png deleted file mode 100644 index 96fa1b8..0000000 Binary files a/external/rspc/docs/public/logo.png and /dev/null differ diff --git a/external/rspc/docs/public/logo.svg b/external/rspc/docs/public/logo.svg deleted file mode 100644 index a266175..0000000 --- a/external/rspc/docs/public/logo.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/external/rspc/docs/public/robots.txt b/external/rspc/docs/public/robots.txt deleted file mode 100644 index 7c9d60b..0000000 --- a/external/rspc/docs/public/robots.txt +++ /dev/null @@ -1,3 +0,0 @@ -User-agent: * -Allow: / -Sitemap: https://rspc.dev/sitemap-index.xml diff --git a/external/rspc/docs/src/assets/logo.svg b/external/rspc/docs/src/assets/logo.svg deleted file mode 100644 index a266175..0000000 --- a/external/rspc/docs/src/assets/logo.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/external/rspc/docs/src/components/LeftNavigation.astro b/external/rspc/docs/src/components/LeftNavigation.astro deleted file mode 100644 index 5b6e89f..0000000 --- a/external/rspc/docs/src/components/LeftNavigation.astro +++ /dev/null @@ -1,48 +0,0 @@ ---- -import clsx from "clsx"; -import { getSidebarData } from "../utils"; - -export interface Props { - currentPage: string; - class?: string; -} - -const sidebar = await getSidebarData(); -const { currentPage, class: className } = Astro.props; ---- - - diff --git a/external/rspc/docs/src/components/Logo.astro b/external/rspc/docs/src/components/Logo.astro deleted file mode 100644 index 8a98ce8..0000000 --- a/external/rspc/docs/src/components/Logo.astro +++ /dev/null @@ -1,19 +0,0 @@ ---- -import { parse } from "node-html-parser"; - -export interface Props { - class?: string; - width?: string; - height?: string; -} - -const attributes = Astro.props; -const { default: innerHTML } = await import(`../assets/logo.svg?raw`); - -const { attributes: baseAttributes, innerHTML: svgInnerHTML } = - parse(innerHTML).querySelector("svg")!; - -const svgAttributes = { ...baseAttributes, ...attributes }; ---- - - diff --git a/external/rspc/docs/src/components/QuickLinks.astro b/external/rspc/docs/src/components/QuickLinks.astro deleted file mode 100644 index bc771d0..0000000 --- a/external/rspc/docs/src/components/QuickLinks.astro +++ /dev/null @@ -1,46 +0,0 @@ ---- -import clsx from "clsx"; -import { Icon } from "astro-icon"; -import { config } from "../config"; - -export interface Props { - class?: string; -} - -const { class: className } = Astro.props; ---- - -
- { - config.header?.links?.map((link) => { - // @ts-expect-error - let icon = link?.icon ? ( - - ) : ( - // @ts-expect-error - - ); - - return ( - - {icon} - - ); - }) - } -
diff --git a/external/rspc/docs/src/components/SidebarToggle.astro b/external/rspc/docs/src/components/SidebarToggle.astro deleted file mode 100644 index 7f7825d..0000000 --- a/external/rspc/docs/src/components/SidebarToggle.astro +++ /dev/null @@ -1,19 +0,0 @@ - diff --git a/external/rspc/docs/src/components/TableOfContents.astro b/external/rspc/docs/src/components/TableOfContents.astro deleted file mode 100644 index db1c81b..0000000 --- a/external/rspc/docs/src/components/TableOfContents.astro +++ /dev/null @@ -1,44 +0,0 @@ ---- -import type { MarkdownHeading } from "astro"; - -export interface Props { - headings: MarkdownHeading[]; - title: string; -} - -let { headings, title } = Astro.props; -headings = [{ depth: 2, slug: "overview", text: title }, ...headings].filter( - ({ depth }) => depth > 1 && depth < 4 -); ---- - -
-

- On this page -

-
    - { - headings.map((heading) => { - const { depth, slug, text } = heading; - - return ( -
  • - - {text} - -
  • - ); - }) - } -
-
diff --git a/external/rspc/docs/src/components/ThemeToggleButton.astro b/external/rspc/docs/src/components/ThemeToggleButton.astro deleted file mode 100644 index 57002e8..0000000 --- a/external/rspc/docs/src/components/ThemeToggleButton.astro +++ /dev/null @@ -1,83 +0,0 @@ -
- - -
- - diff --git a/external/rspc/docs/src/components/TopNavbar.astro b/external/rspc/docs/src/components/TopNavbar.astro deleted file mode 100644 index a94d0c0..0000000 --- a/external/rspc/docs/src/components/TopNavbar.astro +++ /dev/null @@ -1,32 +0,0 @@ ---- -import QuickLinks from "./QuickLinks.astro"; -import Logo from "./Logo.astro"; -import SidebarToggle from "./SidebarToggle.astro"; -import ThemeToggleButton from "./ThemeToggleButton.astro"; - -const isLanding = Astro.url.pathname === "/"; ---- - - diff --git a/external/rspc/docs/src/config.tsx b/external/rspc/docs/src/config.tsx deleted file mode 100644 index 0244537..0000000 --- a/external/rspc/docs/src/config.tsx +++ /dev/null @@ -1,78 +0,0 @@ -import { JSX } from "solid-js"; - -export interface Config { - repository: string; - seo: { - title: string; - description?: string; - author?: string; - keywords?: string[]; - }; - header: { - links: ({ - alt: string; - href: string; - } & ( - | { - customIcon: (props: { - className?: string; - width?: string; - height?: string; - }) => JSX.Element; - } - | { icon: string } - ))[]; - }; -} - -export const config: Config = { - // Set the sites default URL in the `astro.config.mjs`. - repository: "https://github.com/oscartbeaumont/rspc", - seo: { - title: "rspc", - description: - "The best way to build typesafe APIs between Rust and Typescript.", - author: "Oscar Beaumont", - keywords: [], - }, - header: { - links: [ - { - alt: "crates.io", - href: "https://crates.io/crates/rspc", - customIcon: ({ className, width, height }) => ( - - ), - }, - { - alt: "npm", - href: "https://www.npmjs.com/org/rspc", - icon: "logos:npm-icon", - }, - { - alt: "Discord", - href: "https://discord.gg/4V9M5sksw8", - icon: "logos:discord-icon", - }, - { - alt: "GitHub", - href: "https://github.com/oscartbeaumont/rspc", - icon: "fa:github", - }, - ], - }, -}; diff --git a/external/rspc/docs/src/env.d.ts b/external/rspc/docs/src/env.d.ts deleted file mode 100644 index f964fe0..0000000 --- a/external/rspc/docs/src/env.d.ts +++ /dev/null @@ -1 +0,0 @@ -/// diff --git a/external/rspc/docs/src/layouts/Layout.astro b/external/rspc/docs/src/layouts/Layout.astro deleted file mode 100644 index da6081b..0000000 --- a/external/rspc/docs/src/layouts/Layout.astro +++ /dev/null @@ -1,101 +0,0 @@ ---- -import { config } from "../config"; -import TopNavbar from "../components/TopNavbar.astro"; -import LeftNavigation from "../components/LeftNavigation.astro"; -import QuickLinks from "../components/QuickLinks.astro"; - -import "../styles/global.css"; - -export interface Props { - title: string; -} - -const { title } = Astro.props; - -const S4 = () => - (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1); -const cacheId = S4() + S4() + S4(); ---- - - - - - - - - - - - - - {title} - { - config.seo?.description && ( - - ) - } - {config.seo?.author && } - { - config.seo?.keywords && ( - - ) - } - - - - - - - { - config.seo?.description && ( - - ) - } - - - - - - -
-
- -
- -
- - - - - - diff --git a/external/rspc/docs/src/pages/404.astro b/external/rspc/docs/src/pages/404.astro deleted file mode 100644 index a6a2060..0000000 --- a/external/rspc/docs/src/pages/404.astro +++ /dev/null @@ -1,41 +0,0 @@ ---- -import { config } from "../config"; -import LandingPage from "../layouts/Layout.astro"; ---- - - - -
-
-
-

- 404 -

-
-
-

- Page not found -

-

- Please check the URL in the address bar and try again. -

-
- -
-
-
-
-
diff --git a/external/rspc/docs/src/pages/[...slug].astro b/external/rspc/docs/src/pages/[...slug].astro deleted file mode 100644 index 6dfb276..0000000 --- a/external/rspc/docs/src/pages/[...slug].astro +++ /dev/null @@ -1,118 +0,0 @@ ---- -import clsx from "clsx"; -import { config } from "../config"; -import LandingPage from "../layouts/Layout.astro"; -import LeftNavigation from "../components/LeftNavigation.astro"; -import { getPageData } from "../utils"; - -export async function getStaticPaths() { - return [...(await getPageData())].map(([slug, page]) => ({ - params: { slug }, - props: page, - })); -} - -export interface Props { - title: string; - header?: string; - html: string; - headers: { - slug: string; - title: string; - }[]; -} - -const { title, header, html, headers } = Astro.props; -const pageTitle = - title !== undefined && title !== "" - ? `${title} | ${config.seo.title}` - : config.seo.title; ---- - - - -
- -
-
-
-

{header || title}

-
-
-
-
- -
-
diff --git a/external/rspc/docs/src/pages/index.astro b/external/rspc/docs/src/pages/index.astro deleted file mode 100644 index cda3921..0000000 --- a/external/rspc/docs/src/pages/index.astro +++ /dev/null @@ -1,105 +0,0 @@ ---- -import LandingPage from "../layouts/Layout.astro"; -import { config } from "../config"; ---- - - - -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

- rspc -

-

- The best way to build typesafe APIs with Rust -

-
- - -
-
-
-
-
-
-
-
-
diff --git a/external/rspc/docs/src/styles/global.css b/external/rspc/docs/src/styles/global.css deleted file mode 100644 index e2edddd..0000000 --- a/external/rspc/docs/src/styles/global.css +++ /dev/null @@ -1,187 +0,0 @@ -@import 'tailwindcss/base'; -@import './prism.css'; -@import 'tailwindcss/components'; -@import 'tailwindcss/utilities'; - -a { - padding-bottom: 5px; -} - -@layer base { - /* Design System Theming */ - html { - --color-default: 236 228 236; - --color-neutral: 29 40 58; - --color-primary: 122 98 246; - --color-secondary: 58 191 248; - --color-accent: 244 113 181; - --color-warning: 244 193 82; - --color-error: 251 111 132; - --color-success: 43 212 189; - --color-info: 12 166 233; - --color-foreground: 15 23 42; - --color-background: 236 228 236; - - @apply text-slate-900 bg-sky-100/25; - } - - html.dark { - --color-default: 15 23 41; - --color-neutral: 29 40 58; - --color-primary: 122 98 246; - --color-secondary: 58 191 248; - --color-accent: 244 113 181; - --color-warning: 244 193 82; - --color-error: 251 111 132; - --color-success: 43 212 189; - --color-info: 12 166 233; - --color-foreground: 232 221 255; - --color-background: 15 23 41; - - @apply text-sky-100 bg-[#1A1A1A]; - } - - html { - scroll-padding-top: 7rem; - scroll-behavior: smooth; - } - - /* Typewriter */ - .cursor::after { - display: block; - content: ""; - position: absolute; - width: 4px; - height: 100%; - background-color: #fff; - animation: cursor 0.6s linear infinite alternate; - will-change: opacity; - } - - @keyframes cursor { - 0%, - 40% { - opacity: 1; - } - - 60%, - 100% { - opacity: 0; - } - } - - /* Base stylings */ - *:focus:not(:focus-visible) { - outline: none; - } - - a:hover, - a:focus { - text-decoration: underline; - } - - a:focus { - outline: 2px solid currentColor; - outline-offset: 0.25em; - } - - article > section :is(ul, ol) > * + * { - margin-top: 0.75rem; - } - - article > section li > :is(p, pre, blockquote):not(:first-child) { - margin-top: 1rem; - } - - article > section :is(ul, ol) { - padding-left: 1em; - } - - article > section nav :is(ul, ol) { - padding-left: inherit; - } - - td, - th { - padding: 6px; - text-align: left; - } - - .mobile-sidebar-toggle { - overflow: hidden; - } - - .mobile-sidebar-toggle #grid-left { - display: block; - } - - @media (min-width: 768px) { - .mobile-sidebar-toggle #grid-left { - display: none; - } - } - - /* Markdown Styling */ - .markdown { - @apply text-slate-900 dark:text-sky-100 flex flex-col items-start justify-start w-full px-3 dark:selection:bg-sky-100 dark:selection:text-slate-900 selection:bg-sky-200 selection:text-sky-500; - } - .markdown h1 { - @apply mt-8 mb-4 text-3xl font-extrabold; - } - .markdown h2 { - @apply mt-8 mb-4 text-2xl font-semibold; - } - .markdown h3 { - @apply mt-8 mb-0 text-xl font-semibold; - } - .markdown li { - @apply list-disc; - } - .markdown ol > li { - @apply list-decimal; - } - .markdown p { - @apply mb-4 dark:text-white; - } - .markdown a > p { - @apply mb-0 text-sm; - } - .markdown a { - @apply underline decoration-dotted underline-offset-2 dark:hover:text-sky-300 dark:decoration-sky-200 decoration-slate-500 hover:text-sky-700 text-sky-500 dark:text-sky-200; - } - .markdown pre { - @apply font-mono my-3 p-2 rounded-md sm:pt-2 pl-3 mx-auto; - } - - .markdown ol { - @apply w-full; - } - - .markdown details { - @apply w-full bg-sky-200/50 dark:bg-slate-700 px-3 pb-0.5 rounded-md; - } - - .markdown summary { - @apply py-3; - } - - .markdown p > img { - @apply text-sm mt-8; - } - .markdown table > tbody > tr > td > a { - word-wrap: break-word; - } - .markdown table { - @apply max-w-full table-fixed; - } - .markdown blockquote a { - @apply text-slate-900 dark:text-sky-50; - } - .DocSearch-SearchBar { - @apply bg-purple-400 p-2 rounded-md text-sm my-3; - } - - #DocSearch-SearchBar { - @apply bg-purple-400 p-2 rounded-md text-sm my-3; - } -} diff --git a/external/rspc/docs/src/styles/prism.css b/external/rspc/docs/src/styles/prism.css deleted file mode 100644 index 7e81ac0..0000000 --- a/external/rspc/docs/src/styles/prism.css +++ /dev/null @@ -1,48 +0,0 @@ -pre[class*='language-'] { - color: theme('colors.slate.50'); - } - - .token.tag, - .token.class-name, - .token.selector, - .token.selector .class, - .token.selector.class, - .token.function { - color: theme('colors.pink.400'); - } - - .token.attr-name, - .token.keyword, - .token.rule, - .token.pseudo-class, - .token.important { - color: theme('colors.slate.300'); - } - - .token.module { - color: theme('colors.pink.400'); - } - - .token.attr-value, - .token.class, - .token.string, - .token.property { - color: theme('colors.sky.300'); - } - - .token.punctuation, - .token.attr-equals { - color: theme('colors.slate.500'); - } - - .token.unit, - .language-css .token.function { - color: theme('colors.teal.200'); - } - - .token.comment, - .token.operator, - .token.combinator { - color: theme('colors.slate.400'); - } - \ No newline at end of file diff --git a/external/rspc/docs/src/utils/index.ts b/external/rspc/docs/src/utils/index.ts deleted file mode 100644 index 17ac7c6..0000000 --- a/external/rspc/docs/src/utils/index.ts +++ /dev/null @@ -1,97 +0,0 @@ -import { config } from "../config"; - -const baseMarkdownDir = "../../markdown/"; -const markdownFiles = import.meta.glob("../../markdown/**/*.md"); - -export interface Page { - url: string; - title: string; - header?: string; - categoryName: string; - categorySlug: string; - html: string; - headers: { - title: string; - slug: string; - }[]; - sortByIndex: number; -} - -export async function getPageData(): Promise> { - const sidebar = new Map(); - - // TODO - for (const [path, fileFn] of Object.entries(await markdownFiles)) { - const pathElems = path - .replace(".md", "") - .replace(baseMarkdownDir, "") - .split("/"); - if (pathElems.length === 0 || pathElems.length > 2) { - throw new Error("TODO: You broke it stupid."); - } - - const file = (await fileFn()) as any; - const url = pathElems.filter((v) => (v === "index" ? "" : v)).join("/"); - sidebar.set(url, { - url, - title: - file.frontmatter?.title || - toTitleCase((pathElems[1] ? pathElems[1] : pathElems[0])!), - header: file.frontmatter?.header, - categoryName: - pathElems.length === 1 ? config.seo.title : toTitleCase(pathElems[0]!), - categorySlug: pathElems.length === 1 ? "" : pathElems[0]!, - html: file.compiledContent(), - headers: file - .getHeadings() - .filter(({ depth }: any) => depth > 0 && depth < 4) - .map((header: any) => ({ - title: header.text, - slug: header.slug, - })), - sortByIndex: file.frontmatter?.index ?? 100, - }); - } - - return sidebar; -} -export interface Category { - name: string; - children: Page[]; -} - -export async function getSidebarData(): Promise> { - let categories = new Map(); - - for (const [, page] of await getPageData()) { - categories.set(page.categorySlug, { - name: page.categoryName, - children: [...(categories.get(page.categorySlug)?.children || []), page], - }); - } - - categories = new Map( - [...(categories.entries() || [])] - .map((a) => { - a[1].children = a[1].children.sort( - (a, b) => a.sortByIndex - b.sortByIndex - ); - return a; - }) - .sort( - (a, b) => - a[1]!.children[0]!.sortByIndex - b[1]!.children[0]!.sortByIndex - ) - ); - - return categories; -} - -function toTitleCase(str: string) { - return str - .toLowerCase() - .replace(/(?:^|[\s-/])\w/g, function (match) { - return match.toUpperCase(); - }) - .replaceAll("-", " "); -} diff --git a/external/rspc/docs/src/utils/router.ts b/external/rspc/docs/src/utils/router.ts deleted file mode 100644 index 2d7a6af..0000000 --- a/external/rspc/docs/src/utils/router.ts +++ /dev/null @@ -1,160 +0,0 @@ -// This file is pretty disgusting but I just wanted to throw together a working prototype of single page routing with Astro. - -import morphdom from "morphdom"; - -declare global { - interface Window { - cacheId: string | undefined; - } -} - -const pageSelector = "#page"; -const page = document.querySelector(pageSelector); -if (page === null) throw new Error("Unable to find root page element."); -if (window.cacheId === undefined) - throw new Error("CacheId is not defined on the window"); -const cacheName = `spa-cache-${window.cacheId || ""}`; -const cache = await caches.open(cacheName); -const pagesBeingFetched = new Map>(); -let isNavigating = false; -const domParser = new DOMParser(); - -caches.keys().then((c) => - c.map((c) => { - if (c !== cacheName) caches.delete(c); - }) -); - -// Mobile navigation bar handler -const button = document.querySelector("#sidebar-toggle"); -const body = document.querySelector("body"); -function toggleMobileNav() { - body?.classList.toggle("mobile-sidebar-toggle"); - button?.toggleAttribute("aria-pressed"); -} - -// Handle change page to a specific URL -async function navigate(url: URL, force?: boolean) { - if (force !== true && url.pathname === window.location.pathname) return; - - if (pagesBeingFetched.has(url.toString())) { - await pagesBeingFetched.get(url.toString()); - } - - let resp = await cache.match(url); - if (resp === undefined) { - const response = await fetch(url); - if (!response.ok) { - console.error("Error prefetching link"); - return; - } - await cache.put(url, response); - resp = await cache.match(url); - } - if (resp === undefined) return; - - const newDocument = domParser.parseFromString(await resp.text(), "text/html"); - const newPageElem = newDocument.querySelector(pageSelector); - if (!newPageElem) { - console.error("Error finding the new page element when navigating!"); - } else { - morphdom(page!, newPageElem, { - onBeforeElUpdated: function (fromEl, toEl) { - // spec - https://dom.spec.whatwg.org/#concept-node-equals - if (fromEl.isEqualNode(toEl)) { - return false; - } - - return true; - }, - childrenOnly: true, - }); - - morphdom( - document.querySelector("head")!, - newDocument.querySelector("head")!, - { - onBeforeElUpdated: function (fromEl, toEl) { - // spec - https://dom.spec.whatwg.org/#concept-node-equals - if (fromEl.isEqualNode(toEl)) { - return false; - } - - return true; - }, - childrenOnly: true, - } - ); - - window.history.pushState(undefined, "", url); - } - - body?.classList.remove("mobile-sidebar-toggle"); - button?.removeAttribute("aria-pressed"); - - hydratePage(); -} - -// Mount the handlers for links we are preloading and navigating with -function hydratePage() { - if (button) button.addEventListener("click", toggleMobileNav); - - // When moving between docs and landing hide/show the mobile sidebar toggle - const sidebarToggle = document.getElementById("sidebar-toggle"); - if (window.location.pathname === "/") { - sidebarToggle?.classList.add("hidden"); - } else { - sidebarToggle?.classList.remove("hidden"); - } - - const navLinks = document.querySelectorAll("a[rel=prefetch]"); - - navLinks.forEach((link) => { - // Preload page into the browser cache on hovering the navlink - link.addEventListener("mouseover", async (e) => { - if ((e.currentTarget as HTMLLinkElement)?.href === undefined) return; - const url = new URL((e.currentTarget as HTMLLinkElement)?.href); - - // If the item is non in the browser cache - if ((await cache.match(url)) === undefined) { - // and is not being fetched currently - if (!pagesBeingFetched.has(url.toString())) { - let resolve: () => void; - const promise: Promise = new Promise((res) => { - resolve = () => res(undefined); - }); - - pagesBeingFetched.set(url.toString(), promise); - - const response = await fetch(url); - if (!response.ok) { - console.error("Error prefetching link"); - return; - } - await cache.put(url, response); - // @ts-expect-error - resolve(); - } - } - }); - - // Load the page on click - link.addEventListener("click", (e) => { - e.preventDefault(); - if (isNavigating) return; - isNavigating = true; - - if ((e.currentTarget as HTMLLinkElement)?.href === undefined) return; - const url = new URL((e.currentTarget as HTMLLinkElement)?.href); - navigate(url).then(() => (isNavigating = false)); - }); - }); -} - -addEventListener("DOMContentLoaded", hydratePage); - -window.addEventListener("popstate", (e) => { - navigate(new URL(window.location.toString()), true); -}); - -export {}; diff --git a/external/rspc/docs/tailwind.config.cjs b/external/rspc/docs/tailwind.config.cjs deleted file mode 100644 index 1481aad..0000000 --- a/external/rspc/docs/tailwind.config.cjs +++ /dev/null @@ -1,78 +0,0 @@ -/** @type {import('tailwindcss').Config} */ -module.exports = { - content: ["./src/**/*.{astro,html,js,jsx,md,mdx,svelte,ts,tsx,vue}"], - darkMode: "class", - theme: { - extend: { - colors: { - default: "rgb(var(--color-default) / )", - neutral: "rgb(var(--color-neutral) / )", - primary: "rgb(var(--color-primary) / )", - secondary: "rgb(var(--color-secondary) / )", - accent: "rgb(var(--color-accent) / )", - warning: "rgb(var(--color-warning) / )", - error: "rgb(var(--color-error) / )", - success: "rgb(var(--color-success) / )", - info: "rgb(var(--color-info) / )", - }, - animation: { - blob: "blob 7s infinite", - }, - keyframes: { - blob: { - "0%": { - transform: "translate(0px, 0px) scale(1)", - }, - "33%": { - transform: "translate(20px, -30px) scale(1.1)", - }, - "66%": { - transform: "translate(-20px, 20px) scale(0.9)", - }, - "100%": { - transform: "tranlate(0px, 0px) scale(1)", - }, - }, - }, - }, - fontFamily: { - sans: [ - '"Inter"', - "ui-sans-serif", - "system-ui", - "-apple-system", - "BlinkMacSystemFont", - '"Segoe UI"', - "Roboto", - '"Helvetica Neue"', - "Arial", - '"Noto Sans"', - "sans-serif", - '"Apple Color Emoji"', - '"Segoe UI Emoji"', - '"Segoe UI Symbol"', - '"Noto Color Emoji"', - ], - serif: ["ui-serif", "Georgia"], - mono: [ - "ui-monospace", - "Menlo", - "Monaco", - '"Cascadia Mono"', - '"Segoe UI Mono"', - '"Roboto Mono"', - '"Oxygen Mono"', - '"Ubuntu Monospace"', - '"Source Code Pro"', - '"Fira Mono"', - '"Droid Sans Mono"', - '"Courier New"', - "monospace", - ], - }, - }, - plugins: [ - require("tailwind-scrollbar")({ nocompatible: true }), - require("@tailwindcss/typography"), - ], -}; diff --git a/external/rspc/docs/tsconfig.json b/external/rspc/docs/tsconfig.json deleted file mode 100644 index f3cb8ac..0000000 --- a/external/rspc/docs/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "compilerOptions": { - "types": ["astro/client"], - "strict": true, - "skipLibCheck": true, - "jsx": "preserve", - "jsxImportSource": "solid-js" - }, - "extends": "astro/tsconfigs/base" -} diff --git a/external/rspc/examples/Cargo.toml b/external/rspc/examples/Cargo.toml deleted file mode 100644 index 18f5a8f..0000000 --- a/external/rspc/examples/Cargo.toml +++ /dev/null @@ -1,17 +0,0 @@ -[package] -name = "example" -version = "0.0.0" -edition = "2021" -publish = false - -[dependencies] -rspc = { path = "../", features = ["axum"] } -async-stream = "0.3.4" -axum = "0.6.7" -chrono = { version = "0.4.23", features = ["serde"] } -serde = { version = "1.0.152", features = ["derive"] } -time = "0.3.19" -tokio = { version = "1.25.0", features = ["rt-multi-thread", "macros", "time", "sync"], default-features = false } -tower-http = { version = "0.3.5", default-features = false, features = ["cors"] } -uuid = { version = "1.3.0", features = ["v4", "serde"] } -serde_json = "1.0.93" diff --git a/external/rspc/examples/astro/astro.config.mjs b/external/rspc/examples/astro/astro.config.mjs deleted file mode 100644 index 6096723..0000000 --- a/external/rspc/examples/astro/astro.config.mjs +++ /dev/null @@ -1,8 +0,0 @@ -import { defineConfig } from "astro/config"; - -import react from "@astrojs/react"; -import solid from "@astrojs/solid-js"; - -export default defineConfig({ - integrations: [react(), solid()], -}); diff --git a/external/rspc/examples/astro/package.json b/external/rspc/examples/astro/package.json deleted file mode 100644 index 0f0f486..0000000 --- a/external/rspc/examples/astro/package.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "name": "@rspc/examples-astro", - "version": "0.0.0", - "description": "A project to test the RSPC frontend libraries", - "keywords": [], - "author": "Oscar Beaumont", - "license": "MIT", - "private": true, - "scripts": { - "dev": "astro dev" - }, - "dependencies": { - "@rspc/client": "workspace:*", - "@rspc/react": "workspace:*", - "@rspc/solid": "workspace:*", - "@tanstack/react-query": "^4.22.0", - "@tanstack/solid-query": "^4.22.0", - "astro": "1.9.2", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "solid-js": "^1.6.8" - }, - "devDependencies": { - "@astrojs/react": "^1.2.2", - "@astrojs/solid-js": "^1.2.3", - "@rspc/config": "workspace:^0.0.0", - "@types/react": "^18.0.26" - }, - "pnpm": { - "peerDependencyRules": { - "ignoreMissing": [ - "@babel/core" - ] - } - } -} diff --git a/external/rspc/examples/astro/src/components/alpha.tsx b/external/rspc/examples/astro/src/components/alpha.tsx deleted file mode 100644 index 13bfdf5..0000000 --- a/external/rspc/examples/astro/src/components/alpha.tsx +++ /dev/null @@ -1,26 +0,0 @@ -// This file contains a demo of the new alpha API's these are stable to use but there may be rough edges. -/** @jsxImportSource solid-js */ - -import { fetchLink, initRspc } from "@rspc/client"; -import { createWSClient, wsLink } from "@rspc/client/full"; -import { Procedures } from "../../../bindings"; - -// TODO: How are user defined links going to work with the whole full vs lite client??? -> Have type hint so they can assert they work with one or both - -const rspc = initRspc().use( - fetchLink({ - url: "http://localhost:4000/rspc", - }) - // wsLink({ - // client: createWSClient({ - // url: "ws://localhost:4000/rspc/ws", - // }), - // }) -); - -export default function AlphaPage() { - // TODO: Don't copy this and use the vanilla client in SolidJS. It's not gonna end well in a more complicated app. - rspc.query(["basic.echo", "Hello World"]).then(console.log); - - return

Alpha

; -} diff --git a/external/rspc/examples/astro/src/components/libraryFilter.ts b/external/rspc/examples/astro/src/components/libraryFilter.ts deleted file mode 100644 index 4e34da8..0000000 --- a/external/rspc/examples/astro/src/components/libraryFilter.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { ProcedureDef, ProceduresDef } from "@rspc/client/src/bindings"; -import { - FilterData, - Mutations, - Queries, - Subscriptions, -} from "@rspc/client/src"; - -interface LibraryArgs { - library_id: string; - arg: T; -} - -type StripLibraryArgsFromInput = T extends any - ? T["input"] extends LibraryArgs - ? { - key: T["key"]; - input: E; - result: T["result"]; - } - : never - : never; - -type LibraryProcedures

= Exclude< - Extract }>, - { input: never } ->; - -type AsLibraryProcedure

= StripLibraryArgsFromInput< - LibraryProcedures

->; - -type LibraryProceduresFilter

= { - queries: AsLibraryProcedure>; - mutations: AsLibraryProcedure>; - subscriptions: AsLibraryProcedure>; -}; - -const LIBRARY_ID = "lmaoo"; - -export const libraryProceduresFilter =

( - p: FilterData

-): FilterData> => { - return { - ...p, - procedureKey: [ - p.procedureKey[0], - { library_id: LIBRARY_ID, args: p.procedureKey[1] ?? null }, - ], - }; -}; diff --git a/external/rspc/examples/astro/src/components/react.tsx b/external/rspc/examples/astro/src/components/react.tsx deleted file mode 100644 index c120a94..0000000 --- a/external/rspc/examples/astro/src/components/react.tsx +++ /dev/null @@ -1,120 +0,0 @@ -// import { createRspcRoot, createWSClient, httpLink, wsLink } from "@rspc/client"; -// import { createRspcReact } from "@rspc/react"; -// import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; -// import React, { useState } from "react"; - -// import type { Procedures } from "../../../bindings"; - -// const root = createRspcRoot(); - -// const fetchClient = root.createClient({ -// // onError(opts) { -// // console.error("A", opts); -// // }, -// links: [ -// // loggerLink(), -// httpLink({ -// url: "http://localhost:4000/rspc", -// }), -// // TODO: Support batching server-side -// // httpBatchLink({ -// // url: "http://localhost:4000/rspc", -// // }), -// ], -// }); -// export const fetchQueryClient = new QueryClient(); - -// const wsClient = root.createClient({ -// // onError(opts) { -// // console.error("B", opts); -// // }, -// links: [ -// // loggerLink(), -// wsLink({ -// client: createWSClient({ -// url: "ws://localhost:4000/rspc/ws", -// }), -// }), -// ], -// }); -// export const wsQueryClient = new QueryClient(); - -// export const rspcReact = createRspcReact(); -// const rspc = rspcReact.createHooks(); - -// function Example({ name }: { name: string }) { -// const [rerenderProp, setRendererProp] = useState(Date.now().toString()); -// const { data: version } = rspc.useQuery(["version"]); -// const { data: transformMe } = rspc.useQuery(["basic.transformMe"]); -// const { data: echo } = rspc.useQuery(["basic.echo", "Hello From Frontend!"]); -// const { mutate, isLoading } = rspc.useMutation("basic.sendMsg"); -// const { error } = rspc.useQuery(["basic.error"], { -// retry: false, -// onSuccess(v) { -// console.log("WHY", v); -// }, -// onError(err) { -// console.error("A", err); -// }, -// }); - -// return ( -//

-//

{name}

-//

Using rspc version: {version}

-//

Echo response: {echo}

-//

-// Error returned: {error?.code} {error?.message} -//

-//

Transformed Query: {transformMe}

-// -// -// -//
-// ); -// } - -// function ExampleSubscription({ rerenderProp }: { rerenderProp: string }) { -// const [i, setI] = useState(0); -// rspc.useSubscription(["subscriptions.pings"], { -// onData(msg) { -// setI((i) => i + 1); -// }, -// }); - -// return ( -//

-// Pings received: {i} {rerenderProp} -//

-// ); -// } - -export default function App() { - // return ( - // - //
- //

React

- // - // - // - // - // - // - //
- //
- // ); - - return null; // TODO -} diff --git a/external/rspc/examples/astro/src/components/react2.tsx b/external/rspc/examples/astro/src/components/react2.tsx deleted file mode 100644 index c120a94..0000000 --- a/external/rspc/examples/astro/src/components/react2.tsx +++ /dev/null @@ -1,120 +0,0 @@ -// import { createRspcRoot, createWSClient, httpLink, wsLink } from "@rspc/client"; -// import { createRspcReact } from "@rspc/react"; -// import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; -// import React, { useState } from "react"; - -// import type { Procedures } from "../../../bindings"; - -// const root = createRspcRoot(); - -// const fetchClient = root.createClient({ -// // onError(opts) { -// // console.error("A", opts); -// // }, -// links: [ -// // loggerLink(), -// httpLink({ -// url: "http://localhost:4000/rspc", -// }), -// // TODO: Support batching server-side -// // httpBatchLink({ -// // url: "http://localhost:4000/rspc", -// // }), -// ], -// }); -// export const fetchQueryClient = new QueryClient(); - -// const wsClient = root.createClient({ -// // onError(opts) { -// // console.error("B", opts); -// // }, -// links: [ -// // loggerLink(), -// wsLink({ -// client: createWSClient({ -// url: "ws://localhost:4000/rspc/ws", -// }), -// }), -// ], -// }); -// export const wsQueryClient = new QueryClient(); - -// export const rspcReact = createRspcReact(); -// const rspc = rspcReact.createHooks(); - -// function Example({ name }: { name: string }) { -// const [rerenderProp, setRendererProp] = useState(Date.now().toString()); -// const { data: version } = rspc.useQuery(["version"]); -// const { data: transformMe } = rspc.useQuery(["basic.transformMe"]); -// const { data: echo } = rspc.useQuery(["basic.echo", "Hello From Frontend!"]); -// const { mutate, isLoading } = rspc.useMutation("basic.sendMsg"); -// const { error } = rspc.useQuery(["basic.error"], { -// retry: false, -// onSuccess(v) { -// console.log("WHY", v); -// }, -// onError(err) { -// console.error("A", err); -// }, -// }); - -// return ( -//
-//

{name}

-//

Using rspc version: {version}

-//

Echo response: {echo}

-//

-// Error returned: {error?.code} {error?.message} -//

-//

Transformed Query: {transformMe}

-// -// -// -//
-// ); -// } - -// function ExampleSubscription({ rerenderProp }: { rerenderProp: string }) { -// const [i, setI] = useState(0); -// rspc.useSubscription(["subscriptions.pings"], { -// onData(msg) { -// setI((i) => i + 1); -// }, -// }); - -// return ( -//

-// Pings received: {i} {rerenderProp} -//

-// ); -// } - -export default function App() { - // return ( - // - //
- //

React

- // - // - // - // - // - // - //
- //
- // ); - - return null; // TODO -} diff --git a/external/rspc/examples/astro/src/components/solid.tsx b/external/rspc/examples/astro/src/components/solid.tsx deleted file mode 100644 index 381574f..0000000 --- a/external/rspc/examples/astro/src/components/solid.tsx +++ /dev/null @@ -1,119 +0,0 @@ -// /** @jsxImportSource solid-js */ -// import { createRspcRoot, createWSClient, httpLink, wsLink } from "@rspc/client"; -// import { createRspcSolid } from "@rspc/solid"; -// import { QueryClient } from "@tanstack/solid-query"; -// import { createSignal } from "solid-js"; - -// import type { Procedures } from "../../../bindings"; - -// const root = createRspcRoot(); - -// const fetchClient = root.createClient({ -// // onError(opts) { -// // console.error("A", opts); -// // }, -// links: [ -// // loggerLink(), -// httpLink({ -// url: "http://localhost:4000/rspc", -// }), -// // TODO: Support batching server-side -// // httpBatchLink({ -// // url: "http://localhost:4000/rspc", -// // }), -// ], -// }); -// export const fetchQueryClient = new QueryClient(); - -// const wsClient = root.createClient({ -// // onError(opts) { -// // console.error("B", opts); -// // }, -// links: [ -// // loggerLink(), -// wsLink({ -// client: createWSClient({ -// url: "ws://localhost:4000/rspc/ws", -// }), -// }), -// ], -// }); -// export const wsQueryClient = new QueryClient(); - -// export const rspcSolid = createRspcSolid(); -// const rspc = rspcSolid.createHooks(); - -// function Example(props: { name: string }) { -// const [rerenderProp, setRendererProp] = createSignal(Date.now().toString()); -// const version = rspc.createQuery(() => ["version"]); -// const transformMe = rspc.createQuery(() => ["basic.transformMe"]); -// const echo = rspc.createQuery(() => ["basic.echo", "Hello From Frontend!"]); -// const sendMsg = rspc.createMutation("basic.sendMsg"); -// const error = rspc.createQuery(() => ["basic.error"], { -// retry: false, -// onSuccess(v) { -// console.log("WHY", v); -// }, -// onError(err) { -// console.error("A", err); -// }, -// }); - -// return ( -//
-//

{props.name}

-//

Using rspc version: {version.data}

-//

Echo response: {echo.data}

-//

-// Error returned: {error.error?.code} {error.error?.message} -//

-//

Transformed Query: {transformMe.data}

-// -// -// -//
-// ); -// } - -// function ExampleSubscription(props: { rerenderProp: string }) { -// const [i, setI] = createSignal(0); -// rspc.createSubscription(() => ["subscriptions.pings"], { -// onData(msg) { -// console.log("SUBSCRIPTION: ", msg); -// setI((i) => i + 1); -// }, -// }); - -// return ( -//

-// Pings received: {i} {props.rerenderProp} -//

-// ); -// } - -export default function App() { - // return ( - //
- //

Solid

- // - // - // - // - // - // - //
- // ); - - return null; // TODO -} diff --git a/external/rspc/examples/astro/src/pages/index.astro b/external/rspc/examples/astro/src/pages/index.astro deleted file mode 100644 index d0986d3..0000000 --- a/external/rspc/examples/astro/src/pages/index.astro +++ /dev/null @@ -1,34 +0,0 @@ ---- -import ReactComponent from "../components/react"; -import SolidComponent from "../components/solid"; -import AlphaComponent from "../components/alpha"; ---- - - - - - - RSPC Example with Astro - - - - - - - - - diff --git a/external/rspc/examples/astro/tsconfig.json b/external/rspc/examples/astro/tsconfig.json deleted file mode 100644 index 2fe1903..0000000 --- a/external/rspc/examples/astro/tsconfig.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "@rspc/config/tsconfig.json", - "compilerOptions": { - "esModuleInterop": true, - "jsx": "preserve", - "lib": ["ES2017", "DOM"] - }, - "include": ["src"] -} diff --git a/external/rspc/examples/axum/Cargo.toml b/external/rspc/examples/axum/Cargo.toml deleted file mode 100644 index 55bfffe..0000000 --- a/external/rspc/examples/axum/Cargo.toml +++ /dev/null @@ -1,12 +0,0 @@ -[package] -name = "example-axum" -version = "0.0.0" -edition = "2021" -publish = false - -[dependencies] -rspc = { path = "../../", features = ["axum"] } -tokio = { version = "1.25.0", features = ["full"] } -async-stream = "0.3.4" -axum = { version = "0.6.7", features = ["ws"] } -tower-http = { version = "0.3.5", default-features = false, features = ["cors"] } diff --git a/external/rspc/examples/axum/package.json b/external/rspc/examples/axum/package.json deleted file mode 100644 index 573f6da..0000000 --- a/external/rspc/examples/axum/package.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "@rspc/examples-axum", - "version": "0.0.0", - "private": true, - "scripts": { - "dev": "cargo run" - } -} diff --git a/external/rspc/examples/axum/src/main.rs b/external/rspc/examples/axum/src/main.rs deleted file mode 100644 index ca32e55..0000000 --- a/external/rspc/examples/axum/src/main.rs +++ /dev/null @@ -1,86 +0,0 @@ -use std::{path::PathBuf, time::Duration}; - -use async_stream::stream; -use axum::routing::get; -use rspc::{integrations::httpz::Request, Config}; -use tokio::time::sleep; -use tower_http::cors::{Any, CorsLayer}; - -struct Ctx {} - -#[tokio::main] -async fn main() { - let router = - rspc::Router::::new() - .config(Config::new().export_ts_bindings( - PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("../bindings.ts"), - )) - .query("version", |t| t(|_, _: ()| env!("CARGO_PKG_VERSION"))) - .query("echo", |t| t(|_, v: String| v)) - .query("error", |t| { - t(|_, _: ()| { - Err(rspc::Error::new( - rspc::ErrorCode::InternalServerError, - "Something went wrong".into(), - )) as Result - }) - }) - .query("transformMe", |t| t(|_, _: ()| "Hello, world!".to_string())) - .mutation("sendMsg", |t| { - t(|_, v: String| { - println!("Client said '{}'", v); - v - }) - }) - .subscription("pings", |t| { - t(|_ctx, _args: ()| { - stream! { - println!("Client subscribed to 'pings'"); - for i in 0..5 { - println!("Sending ping {}", i); - yield "ping".to_string(); - sleep(Duration::from_secs(1)).await; - } - } - }) - }) - // TODO: Results being returned from subscriptions - // .subscription("errorPings", |t| t(|_ctx, _args: ()| { - // stream! { - // for i in 0..5 { - // yield Ok("ping".to_string()); - // sleep(Duration::from_secs(1)).await; - // } - // yield Err(rspc::Error::new(ErrorCode::InternalServerError, "Something went wrong".into())); - // } - // })) - .build() - .arced(); // This function is a shortcut to wrap the router in an `Arc`. - - // We disable CORS because this is just an example. DON'T DO THIS IN PRODUCTION! - let cors = CorsLayer::new() - .allow_methods(Any) - .allow_headers(Any) - .allow_origin(Any); - - let app = axum::Router::new() - .route("/", get(|| async { "Hello 'rspc'!" })) - .nest( - "/rspc", - router - .clone() - .endpoint(|req: Request| { - println!("Client requested operation '{}'", req.uri().path()); - Ctx {} - }) - .axum(), - ) - .layer(cors); - - let addr = "[::]:4000".parse::().unwrap(); // This listens on IPv6 and IPv4 - println!("listening on http://{}/rspc/version", addr); - axum::Server::bind(&addr) - .serve(app.into_make_service()) - .await - .unwrap(); -} diff --git a/external/rspc/examples/nextjs/.gitignore b/external/rspc/examples/nextjs/.gitignore deleted file mode 100644 index 737d872..0000000 --- a/external/rspc/examples/nextjs/.gitignore +++ /dev/null @@ -1,35 +0,0 @@ -# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. - -# dependencies -/node_modules -/.pnp -.pnp.js - -# testing -/coverage - -# next.js -/.next/ -/out/ - -# production -/build - -# misc -.DS_Store -*.pem - -# debug -npm-debug.log* -yarn-debug.log* -yarn-error.log* -.pnpm-debug.log* - -# local env files -.env*.local - -# vercel -.vercel - -# typescript -*.tsbuildinfo diff --git a/external/rspc/examples/nextjs/README.md b/external/rspc/examples/nextjs/README.md deleted file mode 100644 index df13870..0000000 --- a/external/rspc/examples/nextjs/README.md +++ /dev/null @@ -1,19 +0,0 @@ -

rspc - Example with Next.js

-
- - This example shows basic usage with Next.js and `@tanstack/react-query`. - -
- -
- -- `pages/__app.tsx` - Adds global provider -- `pages/using-ssp.tsx` - Shows how to execuse queries server side -- `pages/using-use-mutation.tsx` - Shows how to use `useMutation` hook -- `pages/using-use-query.tsx` - Shows how to use `useQuery` hook -- `pages/using-use-subscription.tsx` - Shows how to use `useSubscription` hook -- `src/rspc.ts` - Shows how to set up RSPC client and hooks - -## Getting started -1. Run `pnpm i` in the repository root folder -2. Start example projects with `pnpm examples dev` diff --git a/external/rspc/examples/nextjs/next-env.d.ts b/external/rspc/examples/nextjs/next-env.d.ts deleted file mode 100644 index 4f11a03..0000000 --- a/external/rspc/examples/nextjs/next-env.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -/// -/// - -// NOTE: This file should not be edited -// see https://nextjs.org/docs/basic-features/typescript for more information. diff --git a/external/rspc/examples/nextjs/next.config.js b/external/rspc/examples/nextjs/next.config.js deleted file mode 100644 index ae88795..0000000 --- a/external/rspc/examples/nextjs/next.config.js +++ /dev/null @@ -1,7 +0,0 @@ -/** @type {import('next').NextConfig} */ -const nextConfig = { - reactStrictMode: true, - swcMinify: true, -} - -module.exports = nextConfig diff --git a/external/rspc/examples/nextjs/package.json b/external/rspc/examples/nextjs/package.json deleted file mode 100644 index 1822711..0000000 --- a/external/rspc/examples/nextjs/package.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "@rspc/examples-nextjs", - "version": "0.0.0", - "private": true, - "scripts": { - "dev": "next dev -p 3001" - }, - "dependencies": { - "@rspc/client": "workspace:*", - "@rspc/react": "workspace:*", - "@tanstack/react-query": "^4.22.0", - "next": "^13.1.1", - "react": "^18.2.0", - "react-dom": "^18.2.0" - }, - "devDependencies": { - "@types/node": "^18.11.18", - "@types/react": "^18.0.26", - "@types/react-dom": "^18.0.10", - "typescript": "^4.9.4" - } -} diff --git a/external/rspc/examples/nextjs/pages/_app.tsx b/external/rspc/examples/nextjs/pages/_app.tsx deleted file mode 100644 index 0e40d08..0000000 --- a/external/rspc/examples/nextjs/pages/_app.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import "../styles/globals.css"; -import type { AppProps } from "next/app"; -import { client, rspc } from "../src/rspc"; -import { QueryClient } from "@tanstack/react-query"; - -const queryClient = new QueryClient(); - -function MyApp({ Component, pageProps }: AppProps) { - return ( - - - - ); -} - -export default MyApp; diff --git a/external/rspc/examples/nextjs/pages/index.tsx b/external/rspc/examples/nextjs/pages/index.tsx deleted file mode 100644 index 32e83f1..0000000 --- a/external/rspc/examples/nextjs/pages/index.tsx +++ /dev/null @@ -1,53 +0,0 @@ -import type { NextPage } from "next"; -import Head from "next/head"; -import Link from "next/link"; -import styles from "../styles/Home.module.css"; - -const Home: NextPage = () => ( -
- - RSPC Example with Next.js - - -
-

- Welcome to{" "} - - RSPC - {" "} - with{" "} - - Next.js! - -

- - -
-
-); - -export default Home; diff --git a/external/rspc/examples/nextjs/pages/using-ssp.tsx b/external/rspc/examples/nextjs/pages/using-ssp.tsx deleted file mode 100644 index 71e5641..0000000 --- a/external/rspc/examples/nextjs/pages/using-ssp.tsx +++ /dev/null @@ -1,42 +0,0 @@ -import { GetServerSideProps, NextPage } from "next"; -import { client } from "../src/rspc"; -import Head from "next/head"; -import styles from "../styles/Home.module.css"; - -interface UsingServerSideProps { - data?: string; - error?: string; -} - -export const getServerSideProps: GetServerSideProps< - UsingServerSideProps -> = async () => { - try { - return { props: { data: await client.query(["version"]) } }; - } catch (error) { - return { props: { error: (error as Error)?.message } }; - } -}; - -const UsingServerSideProps: NextPage = ({ - data, - error, -}) => ( -
- - Using getServerSideProps | RSPC Example with Next.js - - -
-

- getServerSideProps -

-

- {data && `The server version is: ${data}`} - {error} -

-
-
-); - -export default UsingServerSideProps; diff --git a/external/rspc/examples/nextjs/pages/using-use-mutation.tsx b/external/rspc/examples/nextjs/pages/using-use-mutation.tsx deleted file mode 100644 index e929552..0000000 --- a/external/rspc/examples/nextjs/pages/using-use-mutation.tsx +++ /dev/null @@ -1,47 +0,0 @@ -import { NextPage } from "next"; -import Head from "next/head"; -import { useMutation } from "../src/rspc"; -import styles from "../styles/Home.module.css"; - -const UsingUseMutation: NextPage = () => { - const { mutate, data, isLoading, error } = useMutation("basic.sendMsg"); - - const handleSubmit = async ( - event: React.FormEvent - ): Promise => { - event.preventDefault(); - mutate(event.currentTarget.message.value); - }; - - return ( -
- - Using useMutation | RSPC Example with Next.js - - -
-

- useMutation -

- -
- - -
- -

- {isLoading && "Loading data ..."} - {data && `Server received message: ${data}`} - {error?.message} -

-
-
- ); -}; - -export default UsingUseMutation; diff --git a/external/rspc/examples/nextjs/pages/using-use-query.tsx b/external/rspc/examples/nextjs/pages/using-use-query.tsx deleted file mode 100644 index a98342b..0000000 --- a/external/rspc/examples/nextjs/pages/using-use-query.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import { NextPage } from "next"; -import Head from "next/head"; -import { useQuery } from "../src/rspc"; -import styles from "../styles/Home.module.css"; - -const UsingUseQuery: NextPage = () => { - const { data, isLoading, error } = useQuery(["basic.echo", "Hello!"]); - - return ( -
- - Using useQuery | RSPC Example with Next.js - - -
-

- useQuery -

-

- {isLoading && "Loading data ..."} - {data && `RSPC says: ${data}`} - {error?.message} -

-
-
- ); -}; - -export default UsingUseQuery; diff --git a/external/rspc/examples/nextjs/pages/using-use-subscription.tsx b/external/rspc/examples/nextjs/pages/using-use-subscription.tsx deleted file mode 100644 index 8a700d5..0000000 --- a/external/rspc/examples/nextjs/pages/using-use-subscription.tsx +++ /dev/null @@ -1,31 +0,0 @@ -import { NextPage } from "next"; -import Head from "next/head"; -import { useState } from "react"; -import { useSubscription } from "../src/rspc"; -import styles from "../styles/Home.module.css"; - -const UsingUseSubscription: NextPage = () => { - const [pings, setPings] = useState(0); - - useSubscription(["subscriptions.pings"], { - onData: () => setPings((currentPings) => currentPings + 1), - }); - - return ( -
- - Using useSubscription | RSPC Example with Next.js - - -
-

- useSubscription -

- -

WS Pings received: {pings}

-
-
- ); -}; - -export default UsingUseSubscription; diff --git a/external/rspc/examples/nextjs/src/rspc.ts b/external/rspc/examples/nextjs/src/rspc.ts deleted file mode 100644 index cc801f4..0000000 --- a/external/rspc/examples/nextjs/src/rspc.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { createWSClient, httpLink, wsLink } from "@rspc/client"; -import { createReactHooks } from "@rspc/react"; -import type { Procedures } from "../../bindings"; - -export const rspc = createReactHooks(); - -export const client = rspc.createClient({ - links: [ - typeof window === "undefined" - ? // WebsocketTransport can not be used Server Side, so we provide FetchTransport instead. - // If you do not plan on using Subscriptions you can use FetchTransport on Client Side as well. - httpLink({ url: "http://localhost:4000/rspc" }) // TODO: Switch to `httpBatchLink` when supported - : wsLink({ - client: createWSClient({ - url: "ws://localhost:4000/rspc/ws", - }), - }), - ], -}); - -export const { useContext, useMutation, useQuery, useSubscription } = rspc; diff --git a/external/rspc/examples/nextjs/styles/Home.module.css b/external/rspc/examples/nextjs/styles/Home.module.css deleted file mode 100644 index dde8d0c..0000000 --- a/external/rspc/examples/nextjs/styles/Home.module.css +++ /dev/null @@ -1,110 +0,0 @@ -.container { - padding: 0 2rem; -} - -.main { - min-height: 100vh; - padding: 4rem 0; - flex: 1; - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; -} - -.title a { - color: #0070f3; - text-decoration: none; -} - -.title a:hover, -.title a:focus, -.title a:active { - text-decoration: underline; -} - -.title { - margin: 0; - line-height: 1.15; - font-size: 4rem; -} - -.title, -.description { - text-align: center; -} - -.description { - margin: 4rem 0; - line-height: 1.5; - font-size: 1.5rem; -} - -.code { - background: #fafafa; - border-radius: 5px; - padding: 0.75rem; - font-size: 1.1rem; - font-family: Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, - Bitstream Vera Sans Mono, Courier New, monospace; -} - -.grid { - display: flex; - align-items: center; - justify-content: center; - flex-wrap: wrap; - max-width: 800px; -} - -.card { - margin: 1rem; - padding: 1.5rem; - text-align: left; - color: inherit; - text-decoration: none; - border: 1px solid #eaeaea; - border-radius: 10px; - transition: color 0.15s ease, border-color 0.15s ease; - max-width: 340px; -} - -.card:hover, -.card:focus, -.card:active { - color: #0070f3; - border-color: #0070f3; -} - -.card h2 { - margin: 0 0 0 0; - font-size: 1.5rem; -} - -.card p { - margin: 0; - font-size: 1.25rem; - line-height: 1.5; -} - -.logo { - height: 1em; - margin-left: 0.5rem; -} - -@media (max-width: 600px) { - .grid { - width: 100%; - flex-direction: column; - } -} - -@media (prefers-color-scheme: dark) { - .card, - .code { - background: #111; - } - .logo img { - filter: invert(1); - } -} diff --git a/external/rspc/examples/nextjs/styles/globals.css b/external/rspc/examples/nextjs/styles/globals.css deleted file mode 100644 index 4f18421..0000000 --- a/external/rspc/examples/nextjs/styles/globals.css +++ /dev/null @@ -1,26 +0,0 @@ -html, -body { - padding: 0; - margin: 0; - font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, - Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif; -} - -a { - color: inherit; - text-decoration: none; -} - -* { - box-sizing: border-box; -} - -@media (prefers-color-scheme: dark) { - html { - color-scheme: dark; - } - body { - color: white; - background: black; - } -} diff --git a/external/rspc/examples/nextjs/tsconfig.json b/external/rspc/examples/nextjs/tsconfig.json deleted file mode 100644 index 99710e8..0000000 --- a/external/rspc/examples/nextjs/tsconfig.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "compilerOptions": { - "target": "es5", - "lib": ["dom", "dom.iterable", "esnext"], - "allowJs": true, - "skipLibCheck": true, - "strict": true, - "forceConsistentCasingInFileNames": true, - "noEmit": true, - "esModuleInterop": true, - "module": "esnext", - "moduleResolution": "node", - "resolveJsonModule": true, - "isolatedModules": true, - "jsx": "preserve", - "incremental": true - }, - "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"], - "exclude": ["node_modules"] -} diff --git a/external/rspc/examples/src/basic.rs b/external/rspc/examples/src/basic.rs deleted file mode 100644 index 4017583..0000000 --- a/external/rspc/examples/src/basic.rs +++ /dev/null @@ -1,25 +0,0 @@ -use rspc::{Router, RouterBuilder}; - -// We merge this router into the main router in `main.rs`. -// This router shows how to do basic queries and mutations and how they tak -pub fn mount() -> RouterBuilder { - Router::new() - .query("version", |t| t(|_, _: ()| env!("CARGO_PKG_VERSION"))) - .query("echo", |t| t(|_, v: String| v)) - .query("echoAsync", |t| t(|_, _: i32| async move { 42 })) - .query("error", |t| { - t(|_, _: ()| { - Err(rspc::Error::new( - rspc::ErrorCode::InternalServerError, - "Something went wrong".into(), - )) as Result - }) - }) - .query("transformMe", |t| t(|_, _: ()| "Hello, world!".to_string())) - .mutation("sendMsg", |t| { - t(|_, v: String| { - println!("Client said '{}'", v); - v - }) - }) -} diff --git a/external/rspc/examples/src/bin/axum.rs b/external/rspc/examples/src/bin/axum.rs deleted file mode 100644 index da31a9a..0000000 --- a/external/rspc/examples/src/bin/axum.rs +++ /dev/null @@ -1,69 +0,0 @@ -use std::{path::PathBuf, sync::Arc}; - -use example::{basic, selection, subscriptions}; - -use axum::routing::get; -use rspc::{integrations::httpz::Request, Config, Router}; -use tower_http::cors::{Any, CorsLayer}; - -fn mount() -> Arc> { - let r1 = Router::::new().query("demo", |t| t(|_, _: ()| "Merging Routers!")); - - ::new() - .config( - Config::new().export_ts_bindings( - PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("./bindings.ts"), - ), - ) - // Basic query - .query("version", |t| { - t(|_, _: ()| async move { env!("CARGO_PKG_VERSION") }) - }) - .merge("basic.", basic::mount()) - .merge("subscriptions.", subscriptions::mount()) - .merge("selection.", selection::mount()) - // This middleware changes the TCtx (context type) from `()` to `i32`. All routers being merge under need to take `i32` as their context type. - .middleware(|mw| mw.middleware(|ctx| async move { Ok(ctx.with_ctx(42i32)) })) - .merge("r1.", r1) - .build() - .arced() // This function is a shortcut to wrap the router in an `Arc`. -} - -#[tokio::main] -async fn main() { - let router = mount(); - - let app = axum::Router::new() - .route("/", get(|| async { "Hello 'rspc'!" })) - // Attach the rspc router to your axum router. The closure is used to generate the request context for each request. - .nest( - "/rspc", - router - .endpoint(|req: Request| { - println!("Client requested operation '{}'", req.uri().path()); - }) - .axum(), - ) - // We disable CORS because this is just an example. DON'T DO THIS IN PRODUCTION! - .layer( - CorsLayer::new() - .allow_methods(Any) - .allow_headers(Any) - .allow_origin(Any), - ); - - let addr = "[::]:4000".parse::().unwrap(); // This listens on IPv6 and IPv4 - println!("listening on http://{}/rspc/version", addr); - axum::Server::bind(&addr) - .serve(app.into_make_service()) - .await - .unwrap(); -} - -#[cfg(test)] -mod tests { - #[test] - fn test_rspc_router() { - super::mount(); - } -} diff --git a/external/rspc/examples/src/bin/cookies.rs b/external/rspc/examples/src/bin/cookies.rs deleted file mode 100644 index 01ddf2c..0000000 --- a/external/rspc/examples/src/bin/cookies.rs +++ /dev/null @@ -1,73 +0,0 @@ -//! Using tower_cookies as an Axum extractor right now is the best way to work with cookies from rspc. -//! An official API will likely exist in the future but this works well for now. -use std::{ops::Add, path::PathBuf}; - -use axum::routing::get; -use rspc::{ - integrations::httpz::{Cookie, CookieJar, Request}, - Config, -}; -use time::OffsetDateTime; -use tower_http::cors::{Any, CorsLayer}; - -pub struct Ctx { - cookies: CookieJar, -} - -#[tokio::main] -async fn main() { - let router = - rspc::Router::::new() - .config(Config::new().export_ts_bindings( - PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("../bindings.ts"), - )) - .query("getCookie", |t| { - t(|ctx, _: ()| { - ctx.cookies - .get("myDemoCookie") - .map(|c| c.value().to_string()) - }) - }) - .mutation("setCookie", |t| { - t(|ctx, new_value: String| { - let mut cookie = Cookie::new("myDemoCookie", new_value); - cookie.set_expires(Some(OffsetDateTime::now_utc().add(time::Duration::DAY))); - cookie.set_path("/"); // Ensure you have this or it will default to `/rspc` which will cause issues. - ctx.cookies.add(cookie); - }) - }) - .build() - .arced(); // This function is a shortcut to wrap the router in an `Arc`. - - let app = axum::Router::new() - .route("/", get(|| async { "Hello 'rspc'!" })) - // Attach the rspc router to your axum router. The closure is used to generate the request context for each request. - .nest( - "/rspc", - router - .endpoint(|mut req: Request| { - println!("Client requested operation '{}'", req.uri().path()); - Ctx { - // TODO: Come up with a system for a ready only cookie jar which can be used during a websocket connection -> Probs by using Marker? - cookies: req - .cookies() - .expect("TODO: Websockets don't support the `CookieJar` for now."), - } - }) - .axum(), - ) - // We disable CORS because this is just an example. DON'T DO THIS IN PRODUCTION! - .layer( - CorsLayer::new() - .allow_methods(Any) - .allow_headers(Any) - .allow_origin(Any), - ); - - let addr = "[::]:4000".parse::().unwrap(); // This listens on IPv6 and IPv4 - println!("listening on http://{}/rspc/getCookie", addr); - axum::Server::bind(&addr) - .serve(app.into_make_service()) - .await - .unwrap(); -} diff --git a/external/rspc/examples/src/bin/global_context.rs b/external/rspc/examples/src/bin/global_context.rs deleted file mode 100644 index c7d4fc8..0000000 --- a/external/rspc/examples/src/bin/global_context.rs +++ /dev/null @@ -1,43 +0,0 @@ -use std::{ - path::PathBuf, - sync::{ - atomic::{AtomicU16, Ordering}, - Arc, - }, -}; - -use rspc::{Config, Router}; - -#[derive(Clone)] -pub struct MyCtx { - count: Arc, -} - -#[tokio::main] -async fn main() { - let router = - Router::::new() - .config(Config::new().export_ts_bindings( - PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("./bindings.ts"), - )) - // This is a query so it can be accessed in browser without frontend. A `mutation` - // shoudl be used if the method returns a side effect. - .query("hit", |t| { - t(|ctx, _: ()| ctx.count.fetch_add(1, Ordering::SeqCst)) - }) - .build() - .arced(); - - // AtomicU16 provided interior mutability but if your type does not wrap it in an - // `Arc>`. This could be your database connecton or any other value. - let count = Arc::new(AtomicU16::new(0)); - - let app = axum::Router::new().nest("/rspc", router.endpoint(move || MyCtx { count }).axum()); - - let addr = "[::]:4000".parse::().unwrap(); // This listens on IPv6 and IPv4 - println!("listening on http://{}/rspc/hit", addr); - axum::Server::bind(&addr) - .serve(app.into_make_service()) - .await - .unwrap(); -} diff --git a/external/rspc/examples/src/bin/merging_routers.rs b/external/rspc/examples/src/bin/merging_routers.rs deleted file mode 100644 index 10ffcf0..0000000 --- a/external/rspc/examples/src/bin/merging_routers.rs +++ /dev/null @@ -1,28 +0,0 @@ -use async_stream::stream; -use rspc::{Router, RouterBuilderLike}; - -fn mount_inner() -> impl RouterBuilderLike<()> { - Router::new().query("demo", |t| t(|_ctx, _: ()| async move { "Hello World" })) -} - -fn mount_inner2() -> impl RouterBuilderLike<()> { - Router::new().query("demo", |t| t(|_ctx, _: ()| async move { "Hello World" })) -} - -fn mount() -> impl RouterBuilderLike<()> { - Router::<()>::new() - .query("demo", |t| t(|_ctx, _: ()| async move { "Hello World" })) - .yolo_merge("inner.", mount_inner()) - .yolo_merge("inner2.", mount_inner2()) - .subscription("pings", |t| { - t(|_ctx, _args: ()| { - stream! {} - }) - }) -} - -fn main() { - let _r = Router::<()>::new().merge("java.", mount()); - - // TODO: Hookup your router to a webserver like Axum or a Tauri desktop app using the Tauri IPC adapter. -} diff --git a/external/rspc/examples/src/bin/middleware.rs b/external/rspc/examples/src/bin/middleware.rs deleted file mode 100644 index fee48b1..0000000 --- a/external/rspc/examples/src/bin/middleware.rs +++ /dev/null @@ -1,187 +0,0 @@ -use std::{path::PathBuf, time::Duration}; - -use async_stream::stream; -use axum::routing::get; -use rspc::{internal::MiddlewareState, Config, ErrorCode, Router}; -use tokio::time::sleep; -use tower_http::cors::{Any, CorsLayer}; - -#[derive(Debug, Clone)] -pub struct UnauthenticatedContext { - pub session_id: Option, -} - -#[derive(Debug, Clone)] -#[allow(unused)] -pub struct User { - name: String, -} - -async fn db_get_user_from_session(_session_id: &str) -> User { - User { - name: "Monty Beaumont".to_string(), - } -} - -#[derive(Debug, Clone)] -#[allow(unused)] -pub struct AuthenticatedCtx { - user: User, -} - -#[tokio::main] -async fn main() { - let router = - Router::::new() - .config(Config::new().export_ts_bindings( - PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("./bindings.ts"), - )) - // Logger middleware - .middleware(|mw| { - mw.middleware(|mw| async move { - let state = (mw.req.clone(), mw.ctx.clone(), mw.input.clone()); - Ok(mw.with_state(state)) - }) - .resp(|state, result| async move { - println!( - "[LOG] req='{:?}' ctx='{:?}' input='{:?}' result='{:?}'", - state.0, state.1, state.2, result - ); - Ok(result) - }) - }) - // .query("version", { - // #[derive(Serialize, rspc::Type)] - // struct Bruh { - // meta: String, - // data: T, - // } - // // pub trait Normalize {} - // // #[derive(Object)] - // // pub struct Wrapper { - // // pub scalar: i32, - // // #[ref] - // // pub ref_this: String, - // // #[ref] - // // pub wrapper_2: Wrapper2, - // // pub vec_ref: Vec - // // } - // // #[derive(Object)] - // // pub struct Wrapper2 { - // // #[ref] - // // pub vec_ref: Vec - // // }; - // fn typed( - // builder: BuiltProcedureBuilder, - // ) -> BuiltProcedureBuilder< - // impl RequestResolver< - // TLayerCtx, - // DoubleArgMarker>, - // FutureMarker, - // Arg = TArg, - // >, - // > - // where - // TArg: Type + DeserializeOwned, - // TLayerCtx: Send + Sync + 'static, - // TResolver: RequestResolver, - // { - // BuiltProcedureBuilder { - // resolver: move |ctx, arg| { - // let val = builder.resolver.exec(ctx, arg); - // async { - // Ok(Bruh { - // meta: "Bruh".to_string(), - // data: val?.exec().await?, - // }) - // } - // }, - // } - // } - // |t| { - // t(|_ctx, _: ()| { - // println!("ANOTHER QUERY"); - // env!("CARGO_PKG_VERSION") - // }) - // .map(typed) - // .map(|_| BuiltProcedureBuilder { - // resolver: |_, _| { - // println!("This resolver has been overwritten to an int!"); - // 0 - // }, - // }) - // } - // }) - // Auth middleware - .middleware(|mw| { - mw.middleware(|mw| async move { - match mw.ctx.session_id { - Some(ref session_id) => { - let user = db_get_user_from_session(session_id).await; - Ok(mw.with_ctx(AuthenticatedCtx { user })) - } - None => Err(rspc::Error::new( - ErrorCode::Unauthorized, - "Unauthorized".into(), - )), - } - }) - }) - .query("another", |t| { - t(|_, _: ()| { - println!("ANOTHER QUERY"); - "Another Result!" - }) - }) - .subscription("subscriptions.pings", |t| { - t(|_ctx, _args: ()| { - stream! { - println!("Client subscribed to 'pings'"); - for i in 0..5 { - println!("Sending ping {}", i); - yield "ping".to_string(); - sleep(Duration::from_secs(1)).await; - } - } - }) - }) - // Reject all middleware - .middleware(|mw| { - mw.middleware(|_mw| async move { - Err(rspc::Error::new( - ErrorCode::Unauthorized, - "Unauthorized".into(), - )) as Result, _> - }) - }) - // Plugin middleware // TODO: Coming soon! - // .middleware(|mw| mw.openapi(OpenAPIConfig {})) - .build() - .arced(); - - let app = axum::Router::new() - .route("/", get(|| async { "Hello 'rspc'!" })) - // Attach the rspc router to your axum router. The closure is used to generate the request context for each request. - .nest( - "/rspc", - router - .endpoint(|| UnauthenticatedContext { - session_id: Some("abc".into()), // Change this line to control whether you are authenticated and can access the "another" query. - }) - .axum(), - ) - // We disable CORS because this is just an example. DON'T DO THIS IN PRODUCTION! - .layer( - CorsLayer::new() - .allow_methods(Any) - .allow_headers(Any) - .allow_origin(Any), - ); - - let addr = "[::]:4000".parse::().unwrap(); // This listens on IPv6 and IPv4 - println!("listening on http://{}/rspc/version", addr); - axum::Server::bind(&addr) - .serve(app.into_make_service()) - .await - .unwrap(); -} diff --git a/external/rspc/examples/src/bin/openapi.rs b/external/rspc/examples/src/bin/openapi.rs deleted file mode 100644 index 8e9f1b1..0000000 --- a/external/rspc/examples/src/bin/openapi.rs +++ /dev/null @@ -1,104 +0,0 @@ -//! This is more of a proof on concept than feature. Be aware will 110% run into problems using it. -//! -// use axum::{extract::Path, routing::get}; -// use rspc::{ -// plugins::openapi::{Method, OpenAPI, OpenAPIConfig}, -// Type, -// }; -// use serde::{Deserialize, Serialize}; -// use tower_http::cors::{Any, CorsLayer}; - -// #[derive(Serialize, Deserialize, Type)] -// pub struct User { -// pub name: String, -// pub age: u32, -// } - -// #[tokio::main] -// async fn main() { -// let router = ::new() -// .query("version", |t| { -// t(|_, _: ()| async move { env!("CARGO_PKG_VERSION") }).openapi(Method::GET, "/version") -// }) -// .query("demo", |t| { -// t(|_, _: i32| async move { -// todo!(); -// }) -// .openapi(Method::POST, "/demo") -// }) -// .query("me", |t| { -// t(|_, _: ()| async move { -// User { -// name: "Oscar Beaumont".into(), -// age: 20, -// } -// }) -// .openapi(Method::GET, "/me") -// }) -// .query("users", |t| { -// t(|_, _: ()| async move { -// vec![User { -// name: "Monty Beaumont".into(), -// age: 8, -// }] -// }) -// .openapi(Method::GET, "/users") -// }) -// .mutation("createUser", |t| { -// t(|_, _: User| async move { -// todo!(); -// }) -// .openapi(Method::POST, "/users") -// }) -// .build() -// .arced(); // This function is a shortcut to wrap the router in an `Arc`. - -// let app = axum::Router::new() -// .route("/", get(|| async { "Hello 'rspc'!" })) -// .route( -// "/api/*path", -// router -// .clone() -// .openapi_endpoint( -// OpenAPIConfig { -// title: "Demo API".into(), -// version: "1.0.0".into(), -// base_url: "http://[::]:4000/api".into(), -// }, -// |path: Path| { -// println!("Client requested operation '{}'", *path); -// }, -// ) -// .axum(), -// ) -// // Attach the rspc router to your axum router. The closure is used to generate the request context for each request. -// .route( -// "/rspc/:id", -// router -// .endpoint(|path: Path| { -// println!("Client requested operation '{}'", *path); -// }) -// .axum(), -// ) -// // We disable CORS because this is just an example. DON'T DO THIS IN PRODUCTION! -// .layer( -// CorsLayer::new() -// .allow_methods(Any) -// .allow_headers(Any) -// .allow_origin(Any), -// ); - -// let addr = "[::]:4000".parse::().unwrap(); // This listens on IPv6 and IPv4 -// println!("listening on http://{}/rspc/version", addr); -// axum::Server::bind(&addr) -// .serve(app.into_make_service()) -// .await -// .unwrap(); -// } - -fn main() { - // OpenAPI is not ready for prime time so it has been commented out for now. - // I will be working to bring this back in the near future. - - todo!(); -} diff --git a/external/rspc/examples/src/bin/reusable_middleware.rs b/external/rspc/examples/src/bin/reusable_middleware.rs deleted file mode 100644 index 2198e4c..0000000 --- a/external/rspc/examples/src/bin/reusable_middleware.rs +++ /dev/null @@ -1,57 +0,0 @@ -//! -//! This API is currently very hard to work with and is without a doubt going to improve in future release. -//! It also relies on `rspc::internal` types which may change in between releases. -//! - -use axum::routing::get; -use rspc::{ - internal::{MiddlewareBuilder, MiddlewareLike}, - Router, -}; -use tower_http::cors::{Any, CorsLayer}; - -fn logger_middleware( - mw: MiddlewareBuilder<()>, -) -> impl MiddlewareLike<(), NewCtx = ()> + Send + Sync + 'static { - mw.middleware(|mw| async move { - let state = (mw.req.clone(), mw.ctx.clone(), mw.input.clone()); - Ok(mw.with_state(state)) - }) - .resp(|state, result| async move { - println!( - "[LOG] req='{:?}' ctx='{:?}' input='{:?}' result='{:?}'", - state.0, state.1, state.2, result - ); - Ok(result) - }) -} - -#[tokio::main] -async fn main() { - let router = Router::<()>::new() - .middleware(logger_middleware) - .query("version", |t| { - t(|_, _: ()| async move { env!("CARGO_PKG_VERSION") }) - }) - .build() - .arced(); - - let app = axum::Router::new() - .route("/", get(|| async { "Hello 'rspc'!" })) - // Attach the rspc router to your axum router. The closure is used to generate the request context for each request. - .nest("/rspc", router.endpoint(|| ()).axum()) - // We disable CORS because this is just an example. DON'T DO THIS IN PRODUCTION! - .layer( - CorsLayer::new() - .allow_methods(Any) - .allow_headers(Any) - .allow_origin(Any), - ); - - let addr = "[::]:4000".parse::().unwrap(); // This listens on IPv6 and IPv4 - println!("listening on http://{}/rspc/version", addr); - axum::Server::bind(&addr) - .serve(app.into_make_service()) - .await - .unwrap(); -} diff --git a/external/rspc/examples/src/error_handling.rs b/external/rspc/examples/src/error_handling.rs deleted file mode 100644 index 190eb14..0000000 --- a/external/rspc/examples/src/error_handling.rs +++ /dev/null @@ -1,65 +0,0 @@ -use std::{error, fmt}; - -use rspc::{Error, ErrorCode, Router, RouterBuilder}; - -pub enum MyCustomError { - IAmBroke, -} - -impl From for Error { - fn from(_: MyCustomError) -> Self { - Error::new(ErrorCode::InternalServerError, "I am broke".into()) - } -} - -#[derive(Debug)] -pub enum CustomRustError { - GenericError, -} - -impl fmt::Display for CustomRustError { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - write!(f, "some Rust error!") - } -} - -impl error::Error for CustomRustError {} - -// We merge this router into the main router in `main.rs`. -// This router shows how to do error handling -pub fn mount() -> RouterBuilder { - Router::new() - .query("ok", |t| { - t(|_, _args: ()| Ok("Hello World".into()) as Result) - }) - .query("err", |t| { - t(|_, _args: ()| { - Err(Error::new( - ErrorCode::BadRequest, - "This is a custom error!".into(), - )) as Result - }) - }) - .query("errWithCause", |t| { - t(|_, _args: ()| { - Err(Error::with_cause( - ErrorCode::BadRequest, - "This is a custom error!".into(), - CustomRustError::GenericError, - )) as Result - }) - }) - .query("customErr", |t| { - t(|_, _args: ()| Ok(Err(MyCustomError::IAmBroke)?)) - }) - .query("customErrUsingInto", |t| { - t(|_, _args: ()| Err(MyCustomError::IAmBroke.into()) as Result) - }) - .query("asyncCustomError", |t| { - t( - |_, _args: ()| async move { - Err(MyCustomError::IAmBroke.into()) as Result - }, - ) - }) -} diff --git a/external/rspc/examples/src/lib.rs b/external/rspc/examples/src/lib.rs deleted file mode 100644 index 6919e70..0000000 --- a/external/rspc/examples/src/lib.rs +++ /dev/null @@ -1,4 +0,0 @@ -pub mod basic; -pub mod error_handling; -pub mod selection; -pub mod subscriptions; diff --git a/external/rspc/examples/src/selection.rs b/external/rspc/examples/src/selection.rs deleted file mode 100644 index 31aa53b..0000000 --- a/external/rspc/examples/src/selection.rs +++ /dev/null @@ -1,40 +0,0 @@ -use rspc::{selection, Router, RouterBuilder, Type}; - -#[derive(Type)] -pub struct User { - pub id: i32, - pub name: String, - pub age: i32, - pub password: String, -} - -// We merge this router into the main router in `main.rs`. -// This router shows how to do basic queries and mutations and how they tak -pub fn mount() -> RouterBuilder { - Router::new() - .query("customSelection", |t| { - t(|_, _: ()| { - // The user come from your database. - let user = User { - id: 1, - name: "Monty Beaumont".to_string(), - age: 7, - password: "password".to_string(), - }; - - selection!(user, { id, name, age }) - }) - }) - .query("customSelectionOnList", |t| { - t(|_, _: ()| { - // The users come from your database. - let users = vec![User { - id: 1, - name: "Monty Beaumont".to_string(), - age: 7, - password: "password".to_string(), - }]; - selection!(users, [{ id, name, age }]) - }) - }) -} diff --git a/external/rspc/examples/src/subscriptions.rs b/external/rspc/examples/src/subscriptions.rs deleted file mode 100644 index cbf6c14..0000000 --- a/external/rspc/examples/src/subscriptions.rs +++ /dev/null @@ -1,32 +0,0 @@ -use std::time::Duration; - -use async_stream::stream; -use rspc::{Router, RouterBuilder}; -use tokio::time::sleep; - -// We merge this router into the main router in `main.rs`. -// This router shows how to do subscriptions. -pub fn mount() -> RouterBuilder { - Router::new().subscription("pings", |t| { - t(|_ctx, _args: ()| { - stream! { - println!("Client subscribed to 'pings'"); - for i in 0..5 { - println!("Sending ping {}", i); - yield "ping".to_string(); - sleep(Duration::from_secs(1)).await; - } - } - }) - }) - // TODO: Results being returned from subscriptions - // .subscription("errorPings", |t| t(|_ctx, _args: ()| { - // stream! { - // for i in 0..5 { - // yield Ok("ping".to_string()); - // sleep(Duration::from_secs(1)).await; - // } - // yield Err(rspc::Error::new(ErrorCode::InternalServerError, "Something went wrong".into())); - // } - // })) -} diff --git a/external/rspc/package.json b/external/rspc/package.json deleted file mode 100644 index 98a56e0..0000000 --- a/external/rspc/package.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "name": "rspc", - "version": "0.0.0", - "description": "A blazingly fast and easy to use TRPC-like server for Rust.", - "keywords": [], - "author": "Oscar Beaumont", - "license": "MIT", - "private": true, - "scripts": { - "dev": "pnpm -r --parallel --filter=!@rspc/docs --filter=!@rspc/examples-* exec pnpm dev", - "build": "pnpm -r --parallel --filter=!@rspc/docs --filter=!@rspc/example --filter=!@rspc/examples-* --filter=!rspc-vscode exec pnpm build", - "test": "pnpm -r --parallel --filter=!@rspc/docs --filter=!@rspc/config --filter=!@rspc/example --filter=!@rspc/examples-* --filter=!rspc-vscode exec pnpm test", - "typecheck": "pnpm -r --filter=!rspc-vscode exec tsc --noEmit", - "docs": "pnpm --filter @rspc/docs -- ", - "client": "pnpm --filter @rspc/client -- ", - "config": "pnpm --filter @rspc/config -- ", - "examples": "pnpm --filter @rspc/examples-* -- ", - "playground": "pnpm --filter @rspc/playground -- ", - "react": "pnpm --filter @rspc/react -- ", - "solid": "pnpm --filter @rspc/solid -- ", - "tauri": "pnpm --filter @rspc/tauri -- ", - "set-package-versions": "node .github/scripts/setPackageVersions.js" - }, - "engines": { - "pnpm": ">=7.0.0", - "npm": "pnpm", - "yarn": "pnpm", - "node": ">=16.0.0" - } -} diff --git a/external/rspc/packages/client/.gitignore b/external/rspc/packages/client/.gitignore deleted file mode 100644 index b5a2bdc..0000000 --- a/external/rspc/packages/client/.gitignore +++ /dev/null @@ -1 +0,0 @@ -!src/bindings.ts \ No newline at end of file diff --git a/external/rspc/packages/client/package.json b/external/rspc/packages/client/package.json deleted file mode 100644 index 6eedbba..0000000 --- a/external/rspc/packages/client/package.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "name": "@rspc/client", - "version": "0.1.2", - "description": "A blazingly fast and easy to use TRPC-like server for Rust.", - "keywords": [], - "author": "Oscar Beaumont", - "license": "MIT", - "main": "dist/index.js", - "types": "dist/index.d.ts", - "exports": { - "./package.json": "./package.json", - ".": { - "types": "./dist/index.d.ts", - "import": "./dist/index.mjs", - "default": "./dist/index.js" - }, - "./full": { - "types": "./dist/full.d.ts", - "import": "./dist/full.mjs", - "default": "./dist/full.js" - } - }, - "files": [ - "dist" - ], - "scripts": { - "build": "rollup --config rollup.config.ts --configPlugin swc3", - "dev": "pnpm build --watch", - "test": "vitest ./demo.test.ts ./typescript.test.ts ./full ./interop" - }, - "devDependencies": { - "@rspc/config": "workspace:*", - "rollup": "^3.10.0", - "typescript": "^4.9.4", - "vitest": "^0.27.2" - } -} diff --git a/external/rspc/packages/client/rollup.config.ts b/external/rspc/packages/client/rollup.config.ts deleted file mode 100644 index 1952964..0000000 --- a/external/rspc/packages/client/rollup.config.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { buildConfig } from "@rspc/config/getRollupConfig"; - -export default buildConfig(["src/index.ts", "src/full.ts"]); diff --git a/external/rspc/packages/client/src/bindings.ts b/external/rspc/packages/client/src/bindings.ts deleted file mode 100644 index 043d58e..0000000 --- a/external/rspc/packages/client/src/bindings.ts +++ /dev/null @@ -1,38 +0,0 @@ -// DO NOT MODIFY. This file was generated by Specta and is used to keep rspc internally type safe. -// Checkout the unit test 'export_internal_types' to see where this files comes from! - -/** - * Represents a Typescript procedure file which is generated by the Rust code. - * This is codegenerated Typescript file is how we can validate the types on the frontend match Rust. - * - * @internal - */ -export type ProcedureDef = { key: string; input: any; result: any } - -/** - * TODO - * - * @internal - */ -export type RequestId = null | number | string - -/** - * This type represents the Typescript bindings which are generated from the router by Rust. - * - * @internal - */ -export type ProceduresDef = { queries: ProcedureDef; mutations: ProcedureDef; subscriptions: ProcedureDef } - -/** - * TODO - * - * @internal - */ -export type Request = ({ method: "query"; params: { path: string; input: any | null } } | { method: "mutation"; params: { path: string; input: any | null } } | { method: "subscription"; params: { path: string; input: any | null } } | { method: "subscriptionStop" }) & { jsonrpc: string | null; id: RequestId } - -/** - * TODO - * - * @internal - */ -export type RequestInner = { method: "query"; params: { path: string; input: any | null } } | { method: "mutation"; params: { path: string; input: any | null } } | { method: "subscription"; params: { path: string; input: any | null } } | { method: "subscriptionStop" } \ No newline at end of file diff --git a/external/rspc/packages/client/src/client.test.ts b/external/rspc/packages/client/src/client.test.ts deleted file mode 100644 index 4e2b931..0000000 --- a/external/rspc/packages/client/src/client.test.ts +++ /dev/null @@ -1,104 +0,0 @@ -import { describe, it } from "vitest"; -import { T } from "vitest/dist/types-d97c72c7"; -import { initRspc, noOpLink, ProceduresDef, LinkFlag, Link } from "."; -import { assertTy, HasProperty } from "./utils.test"; - -export function mapTypesLink(): Link< - T, - { - queries: Omit; - mutations: Omit; - subscriptions: Omit; - } -> { - return undefined as any; // We only care about the types for this -} - -export type Procedures = { - queries: - | { key: "a"; input: never; result: string } - | { key: "b"; input: number; result: number }; - mutations: - | { key: "c"; input: never; result: string } - | { key: "d"; input: number; result: number }; - subscriptions: - | { key: "e"; input: never; result: string } - | { key: "f"; input: boolean; result: boolean }; -}; - -describe("Client", () => { - it("Typescript", async () => { - // Without a terminating link you can't do operation and can add more links - const c = initRspc(); - assertTy, true>(); - assertTy, true>(); - assertTy, false>(); - assertTy, false>(); - assertTy, false>(); - - // With a Fetch terminating link you can do operations (other than subscriptions) but can't add more links - const c2 = initRspc().use( - noOpLink({ supportsSubscriptions: false }) - ); - assertTy, false>(); - assertTy, false>(); - assertTy, true>(); - assertTy, true>(); - assertTy, false>(); - - // With a Websocket terminating link you can do all operations but can't add more links - const c3 = initRspc().use( - noOpLink({ supportsSubscriptions: true }) - ); - assertTy, false>(); - assertTy, false>(); - assertTy, true>(); - assertTy, true>(); - assertTy, true>(); - - // Using build method enabling subscriptions - const c4 = initRspc().unstable_build({ - supportsSubscriptions: true, - }); - assertTy, true>(); - assertTy, false>(); - assertTy, true>(); - assertTy, true>(); - assertTy, true>(); - - // @ts-expect-error: We can't use a link which doesn't support subscriptions because we enabled them it in `.build()` call - c4.use(noOpLink({ supportsSubscriptions: false })); // TODO: Assert error on this so we can be sure it's not something else - c4.use(noOpLink({ supportsSubscriptions: true })); - - // // @ts-expect-error: Once built you can't apply a link which modifies the types - // const y = c4.use(mapTypesLink()); // TODO: Type error because it changes the types once "built" flag exists - // y.todo; // TODO - - // Using build method without enabling subscriptions - const c5 = initRspc().unstable_build({ - supportsSubscriptions: false, - }); - assertTy, true>(); - assertTy, false>(); - assertTy, true>(); - assertTy, true>(); - assertTy, false>(); - - c5.use(noOpLink({ supportsSubscriptions: true })); - c5.use(noOpLink({ supportsSubscriptions: false })); - - // // // @ts-expect-error: Once built you can't apply a link which modifies the types - // c4.use(mapTypesLink()); // TODO: Type error because it changes the types once "built" flag exists - - // TODO: Test `mapTypesLink` works on all the clients above - }); - - // TODO: Trying to set multiple terminating links will throw an error when using `.build()` syntax - - // TODO: Test a link which removes procedures, modify input/result types, etc - // TODO: Global `onError` handler - // TODO: Runtime pluggable transport - // TODO: Test operation context works and order of execution on the links - - // TODO: Test stacking of flags. A middleware can ONLY add flags and not remove existing ones! -}); diff --git a/external/rspc/packages/client/src/client.ts b/external/rspc/packages/client/src/client.ts deleted file mode 100644 index 00f411e..0000000 --- a/external/rspc/packages/client/src/client.ts +++ /dev/null @@ -1,236 +0,0 @@ -import { - HasAnyLinkFlags, - HasLinkFlags, - inferProcedureResult, - JoinLinkFlags, - Link, - LinkFlags, - Operation, - ProceduresDef, - SubscriptionOptions, - _inferProcedureHandlerInput, -} from "."; - -/** - * TODO - */ -export interface InitRspcOpts { - /** - * TODO - */ - // onError(); // TODO: Make this work with links! -} - -/** - * TODO - */ -export function initRspc( - opts?: InitRspcOpts -): Rspc { - return initRspcInner({ ...opts, links: [] }); -} - -// TODO: Utils -type And = T extends true ? (U extends true ? true : false) : false; -type Or = T extends true ? true : U extends true ? true : false; -type Not = T extends true ? false : true; - -// https://github.com/microsoft/TypeScript/issues/27024#issuecomment-421529650 -// type Equals = (() => T extends X ? 1 : 2) extends () => T extends Y -// ? 1 -// : 2 -// ? true -// : false; - -type LinkArg< - T extends ProceduresDef, - TT extends ProceduresDef, - TFlags extends LinkFlags, - TNewFlags extends LinkFlags = {} -> = And< - HasLinkFlags, - Not> -> extends true - ? HasLinkFlags extends true - ? "You must provide a link which supports subscriptions!" // TODO: This doesn't work with the args hack below so... - : Link - : Link; - -type UseFn = HasAnyLinkFlags< - TFlags, - "terminatedLink" -> extends false - ? { - use( - link: LinkArg - // TODO: Can this be done in a different way for a better error message? - // ...cannotUseTypeMappingLinkAfterCallingExportMethod: HasLinkFlags< - // TFlags, - // "built" - // > extends true - // ? Equals extends true - // ? [] - // : [never] - // : [] - ): Rspc; - } - : {}; - -type BuildFn = Or< - HasAnyLinkFlags, - HasAnyLinkFlags -> extends false - ? { - // TODO: This is marked as unstable because it's not properly typesafe. Will be stablised in the future. - unstable_build(opts: { - supportsSubscriptions: TSupportSubscriptions; - }): Rspc< - T, - TFlags & { - built: true; - } & (TSupportSubscriptions extends false - ? { subscriptionsUnsupported: true } - : {}) - >; - } - : {}; - -type OperationFns< - T extends ProceduresDef, - TFlags extends LinkFlags -> = HasAnyLinkFlags extends true - ? { - query( - keyAndInput: [ - key: K, - ...input: _inferProcedureHandlerInput - ] - ): Promise>; - mutate( - keyAndInput: [ - key: K, - ...input: _inferProcedureHandlerInput - ] - ): Promise>; - } & (HasAnyLinkFlags extends true - ? {} - : { - subscribe< - K extends T["subscriptions"]["key"] & string, - TData = inferProcedureResult - >( - keyAndInput: [ - K, - _inferProcedureHandlerInput - ], - opts: SubscriptionOptions - ): () => void; - /** - * @deprecated use `.subscribe` instead. This will be removed in a future release. - */ - addSubscription< - K extends T["subscriptions"]["key"] & string, - TData = inferProcedureResult - >( - keyAndInput: [ - K, - _inferProcedureHandlerInput - ], - opts: SubscriptionOptions - ): () => void; - }) - : {}; - -/** - * The type of the rspc instance. This type is what powers all of the advanced type checking. - * - * @internal - */ -export type Rspc< - T extends ProceduresDef, - TFlags extends LinkFlags = {} -> = UseFn & OperationFns & BuildFn; - -/** - * @internal - */ -export type InitRspcInnerArgs = InitRspcOpts & { - links: Link[]; -}; - -// TODO: Expose AbortController through vanilla client -function initRspcInner( - opts: InitRspcInnerArgs -): Rspc { - // TODO: Fix this cringe internal type safety of this function. - // TODO: The implication of this setup is that `Command + Click` on a method externally takes you to the type not the method. Try and fix this! - return { - // @ts-expect-error: TODO: Fix this. It's because of the discriminated union. - use( - link: Link - ): Rspc> { - opts.links.push(link); - return initRspcInner>(opts); - }, - query( - keyAndInput: [ - key: K, - ...input: _inferProcedureHandlerInput - ] - ): Promise> { - return exec(opts, { - id: 0, - type: "query", - path: keyAndInput[0] as any, - input: keyAndInput[1] as any, - context: {}, - }); - }, - mutate( - keyAndInput: [ - key: K, - ...input: _inferProcedureHandlerInput - ] - ): Promise> { - return exec(opts, { - id: 0, - type: "mutation", - path: keyAndInput[0] as any, - input: keyAndInput[1] as any, - context: {}, - }); - }, - subscribe< - K extends T["subscriptions"]["key"] & string, - TData = inferProcedureResult - >( - keyAndInput: [K, _inferProcedureHandlerInput], - opts: SubscriptionOptions - ): () => void { - // TODO: Support for subscriptions! - throw new Error( - "TODO: Subscriptions are not yet supported on the alpha client!" - ); - - return () => { - // TODO: Remove subscription - }; - }, - } satisfies Rspc as any; -} - -function exec(opts: InitRspcInnerArgs, op: Operation): Promise { - // TODO: Handle executing with multiple links in the observable lite system. - // TODO: Move this exec login into the `fakeObservable` function - const resp = opts.links[0]!({ - op, - next() { - throw new Error("TODO: Probally unreachable"); // TODO: Deal with this - }, - }); - - // TODO: Expose `.abort` to the end user like tRPC does - return resp.exec().promise.then((v) => v.result.data); -} - -// TODO: export function getQueryKey() {} diff --git a/external/rspc/packages/client/src/fakeObservable.ts b/external/rspc/packages/client/src/fakeObservable.ts deleted file mode 100644 index 324dd08..0000000 --- a/external/rspc/packages/client/src/fakeObservable.ts +++ /dev/null @@ -1,49 +0,0 @@ -import type { Observer } from "./full"; - -/** - * @internal - */ -export type CancelFn = () => void; - -/** - * @internal - */ -export type PromiseAndCancel = { - promise: Promise; - cancel: CancelFn; -}; - -/** - * TODO: Explain this - * - * @internal - */ -// TODO: Remove `any` -export function fakeObservable( - handler: () => PromiseAndCancel -): FakeObservable { - return { - exec: handler, - }; -} - -// TODO: Rename and explain -export type FakeObservable = { exec: () => PromiseAndCancel }; - -export function isFakeObservable(obj: any): obj is FakeObservable { - return typeof obj.exec === "function" && typeof obj.subscribe === "undefined"; -} - -// TODO: Rename and explain -export type FullObservable = { - exec: () => PromiseAndCancel; - subscribe: (opts: Observer) => void; -}; - -// TODO: Make this work and include somewhere -> Maybe in full package export -export function isFullObservable(obj: any): obj is FullObservable { - return typeof obj.exec === "function" && typeof obj.subscribe === "function"; -} - -// TODO: Rename and explain -export type NewObservable = FakeObservable | FullObservable; diff --git a/external/rspc/packages/client/src/full.ts b/external/rspc/packages/client/src/full.ts deleted file mode 100644 index e44f83c..0000000 --- a/external/rspc/packages/client/src/full.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./full/index"; diff --git a/external/rspc/packages/client/src/full/index.ts b/external/rspc/packages/client/src/full/index.ts deleted file mode 100644 index c51c6d0..0000000 --- a/external/rspc/packages/client/src/full/index.ts +++ /dev/null @@ -1,89 +0,0 @@ -import { FullObservable } from ".."; -import { Observable, observableToPromise } from "../internals/observable"; - -export * from "./wsLink"; - -export * from "../internals/observable"; - -// TODO: Move this somewhere else -// TODO: Remove `any` -export function fullObservable(ob$: Observable): FullObservable { - return { - exec: () => { - const { promise, abort } = observableToPromise(ob$); - return { promise, cancel: abort }; - }, - subscribe(opts) { - throw new Error("TODO: Sub method"); - }, - }; -} - -// const exec = (opts: InitRspcInnerArgs, initialOp: LinkOperation) => { -// const { promise, abort } = observable((observer) => { -// function execute(index = 0, op = initialOp) { -// const next = opts.links[index]; -// if (!next) { -// throw new Error( -// "No more links to execute - did you forget to add a terminating link?" -// ); -// } - -// const subscription = next({ -// op: op.op, -// next(nextOp) { -// const nextObserver = execute(index + 1, nextOp); - -// return nextObserver; -// }, -// }); -// return subscription; -// } - -// const obs$ = execute(); -// if (isFullObservable(obs$)) { -// obs$.subscribe({ -// next: (v) => { -// observer.next(v); -// }, -// error: (e) => { -// observer.error(e); -// }, -// complete: () => { -// observer.complete(); -// }, -// }); -// } else { -// // TODO: Do the thing -// throw new Error("TODO: Convert into observable!"); -// } -// }); - -// return { promise, cancel: abort }; -// }; - -// BREAK - -// if (isFakeObservable(resp)) { -// } else { -// throw new Error("TODO"); -// } - -// const observable = exec(opts, { -// op: { -// type: "query", -// path: keyAndInput[0] as any, -// input: keyAndInput[1] as any, -// context: {}, -// }, -// next() { -// throw new Error("TODO: Probally unreachable"); // TODO: Deal with this -// }, -// }); - -// const { promise, abort } = observableToPromise(observable); -// TODO: Expose `abort` function to user if they want it -> Maybe an arg, idk how tRPC do it? - -// TODO: Should we expose `v.context`??? -// // @ts-expect-error // TODO: Fix type error at some point -// return promise.then((v) => v.result.data); diff --git a/external/rspc/packages/client/src/full/wsLink.test.ts b/external/rspc/packages/client/src/full/wsLink.test.ts deleted file mode 100644 index c89a2ec..0000000 --- a/external/rspc/packages/client/src/full/wsLink.test.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { describe, it } from "vitest"; - -describe("Websocket Link", () => { - it("todo", async () => { - // TODO - }); -}); diff --git a/external/rspc/packages/client/src/full/wsLink.ts b/external/rspc/packages/client/src/full/wsLink.ts deleted file mode 100644 index 1b4c382..0000000 --- a/external/rspc/packages/client/src/full/wsLink.ts +++ /dev/null @@ -1,399 +0,0 @@ -import { fullObservable, observable, Observer, UnsubscribeFn } from "."; -import { - Link, - OperationContext, - ProceduresDef, - RSPCError, - transformResult, -} from ".."; - -// TODO: Remove all these type aliases or assign them to something useful -type TRPCClientIncomingMessage = any; - -type TRPCClientIncomingRequest = any; -export type TRPCClientOutgoingMessage = any; -export type TRPCRequestMessage = any; -export type TRPCResponseMessage = any; -type inferRouterError = any; -export type ProcedureType = any; - -type WSCallbackResult< - TProcedures extends ProceduresDef, - TOutput -> = TRPCResponseMessage>; - -export type WSCallbackObserver< - TProcedures extends ProceduresDef, - TOutput -> = Observer, RSPCError>; - -/** - * @internal - */ -export type LegacyOperation = { - id: number; - type: "query" | "mutation" | "subscription"; - input: TInput; - path: string; - context: OperationContext; -}; - -export const retryDelay = (attemptIndex: number) => - attemptIndex === 0 ? 0 : Math.min(1000 * 2 ** attemptIndex, 30000); - -export interface WebSocketClientOptions { - url: string; - WebSocket?: typeof WebSocket; - retryDelayMs?: typeof retryDelay; - onOpen?: () => void; - onClose?: (cause?: { code?: number }) => void; -} - -export type TCallbacks = WSCallbackObserver; - -export function createWSClient(opts: WebSocketClientOptions) { - const { - url, - WebSocket: WebSocketImpl = WebSocket, - retryDelayMs: retryDelayFn = retryDelay, - onOpen, - onClose, - } = opts; - /* istanbul ignore next */ - if (!WebSocketImpl) { - throw new Error( - "No WebSocket implementation found - you probably don't want to use this on the server, but if you do you need to pass a `WebSocket`-ponyfill" - ); - } - /** - * outgoing messages buffer whilst not open - */ - let outgoing: TRPCClientOutgoingMessage[] = []; - /** - * pending outgoing requests that are awaiting callback - */ - type TRequest = { - /** - * Reference to the WebSocket instance this request was made to - */ - ws: WebSocket; - type: ProcedureType; - callbacks: TCallbacks; - op: LegacyOperation; - }; - const pendingRequests: Record = - Object.create(null); - let connectAttempt = 0; - let dispatchTimer: ReturnType | number | null = null; - let connectTimer: ReturnType | number | null = null; - let activeConnection = createWS(); - let state: "open" | "connecting" | "closed" = "connecting"; - /** - * tries to send the list of messages - */ - function dispatch() { - if (state !== "open" || dispatchTimer) { - return; - } - dispatchTimer = setTimeout(() => { - dispatchTimer = null; - - if (outgoing.length === 1) { - // single send - activeConnection.send(JSON.stringify(outgoing.pop())); - } else { - // batch send - activeConnection.send(JSON.stringify(outgoing)); - } - // clear - outgoing = []; - }); - } - function tryReconnect() { - if (connectTimer || state === "closed") { - return; - } - const timeout = retryDelayFn(connectAttempt++); - reconnectInMs(timeout); - } - function reconnect() { - state = "connecting"; - const oldConnection = activeConnection; - activeConnection = createWS(); - closeIfNoPending(oldConnection); - } - function reconnectInMs(ms: number) { - if (connectTimer) { - return; - } - state = "connecting"; - connectTimer = setTimeout(reconnect, ms); - } - - function closeIfNoPending(conn: WebSocket) { - // disconnect as soon as there are are no pending result - const hasPendingRequests = Object.values(pendingRequests).some( - (p) => p.ws === conn - ); - if (!hasPendingRequests) { - conn.close(); - } - } - - function resumeSubscriptionOnReconnect(req: TRequest) { - if (outgoing.some((r) => r.id === req.op.id)) { - return; - } - request(req.op, req.callbacks); - } - - function createWS() { - const conn = new WebSocketImpl(url); - clearTimeout(connectTimer as any); - connectTimer = null; - - conn.addEventListener("open", () => { - /* istanbul ignore next */ - if (conn !== activeConnection) { - return; - } - connectAttempt = 0; - state = "open"; - onOpen?.(); - dispatch(); - }); - conn.addEventListener("error", () => { - if (conn === activeConnection) { - tryReconnect(); - } - }); - const handleIncomingRequest = (req: TRPCClientIncomingRequest) => { - if (req.method === "reconnect" && conn === activeConnection) { - if (state === "open") { - onClose?.(); - } - reconnect(); - // notify subscribers - for (const pendingReq of Object.values(pendingRequests)) { - if (pendingReq.type === "subscription") { - resumeSubscriptionOnReconnect(pendingReq); - } - } - } - }; - const handleIncomingResponse = (data: TRPCResponseMessage) => { - const req = data.id !== null && pendingRequests[data.id]; - if (!req) { - // do something? - return; - } - - req.callbacks.next?.(data); - if (req.ws !== activeConnection && conn === activeConnection) { - const oldWs = req.ws; - // gracefully replace old connection with this - req.ws = activeConnection; - closeIfNoPending(oldWs); - } - - if ( - "result" in data && - data.result.type === "stopped" && - conn === activeConnection - ) { - req.callbacks.complete(); - } - }; - conn.addEventListener("message", ({ data }) => { - const msg = JSON.parse(data) as TRPCClientIncomingMessage; - - if ("method" in msg) { - handleIncomingRequest(msg); - } else { - handleIncomingResponse(msg); - } - if (conn !== activeConnection || state === "closed") { - // when receiving a message, we close old connection that has no pending requests - closeIfNoPending(conn); - } - }); - - conn.addEventListener("close", ({ code }) => { - if (state === "open") { - onClose?.({ code }); - } - - if (activeConnection === conn) { - // connection might have been replaced already - tryReconnect(); - } - - for (const [key, req] of Object.entries(pendingRequests)) { - if (req.ws !== conn) { - continue; - } - req.callbacks.error?.( - RSPCError.from( - new TRPCWebSocketClosedError("WebSocket closed prematurely") - ) - ); - if (req.type !== "subscription") { - delete pendingRequests[key]; - req.callbacks.complete?.(); - } else if (state !== "closed") { - // request restart of sub with next connection - resumeSubscriptionOnReconnect(req); - } - } - }); - return conn; - } - - function request(op: LegacyOperation, callbacks: TCallbacks): UnsubscribeFn { - const { type, input, path, id } = op; - const envelope: TRPCRequestMessage = { - id, - method: type, - params: { - input, - path, - }, - }; - pendingRequests[id] = { - ws: activeConnection, - type, - callbacks, - op, - }; - - // enqueue message - outgoing.push(envelope); - dispatch(); - - return () => { - const callbacks = pendingRequests[id]?.callbacks; - delete pendingRequests[id]; - outgoing = outgoing.filter((msg) => msg.id !== id); - - callbacks?.complete?.(); - if (op.type === "subscription") { - outgoing.push({ - id, - method: "subscriptionStop", - }); - dispatch(); - } - }; - } - return { - close: () => { - state = "closed"; - onClose?.(); - closeIfNoPending(activeConnection); - clearTimeout(connectTimer as any); - connectTimer = null; - }, - request, - getConnection() { - return activeConnection; - }, - }; -} - -export type TRPCWebSocketClient = { - close(): void; - request(op: LegacyOperation, callbacks: TCallbacks): UnsubscribeFn; -}; - -export interface WebSocketLinkOptions { - client: TRPCWebSocketClient; -} -class TRPCWebSocketClosedError extends Error { - constructor(message: string) { - super(message); - this.name = "TRPCWebSocketClosedError"; - Object.setPrototypeOf(this, TRPCWebSocketClosedError.prototype); - } -} - -class TRPCSubscriptionEndedError extends Error { - constructor(message: string) { - super(message); - this.name = "TRPCSubscriptionEndedError"; - Object.setPrototypeOf(this, TRPCSubscriptionEndedError.prototype); - } -} - -// TODO: Redo `WebSocketLinkOptions` and clean up everything -export function wsLink( - opts: WebSocketLinkOptions -): Link { - const { client } = opts; - - return (op) => { - // TODO - return fullObservable( - observable((observer) => { - const { type, path, id, context, input } = op.op; - - let isDone = false; - const unsub = client.request( - { type, path, input, id, context }, - { - error(err) { - isDone = true; - observer.error(err as RSPCError); - unsub(); - }, - complete() { - if (!isDone) { - isDone = true; - observer.error( - RSPCError.from( - new TRPCSubscriptionEndedError( - "Operation ended prematurely" - ) - ) - ); - } else { - observer.complete(); - } - }, - next(message) { - const transformed = transformResult(message); - - if (!transformed.ok) { - const error = RSPCError.from(transformed.error); - // TODO: `onError` - // runtime.onError?.({ - // error, - // path, - // input, - // ctx: context, - // type: type, - // }); - observer.error(error); - return; - } - observer.next({ - result: transformed.result, - }); - - if (op.op.type !== "subscription") { - // if it isn't a subscription we don't care about next response - - isDone = true; - unsub(); - observer.complete(); - } - }, - } - ); - return () => { - isDone = true; - unsub(); - }; - }) - ); - }; -} diff --git a/external/rspc/packages/client/src/index.ts b/external/rspc/packages/client/src/index.ts deleted file mode 100644 index 121bc29..0000000 --- a/external/rspc/packages/client/src/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -export * from "./typescript"; -export * from "./bindings"; -export * from "./interop"; -export * from "./client"; -export * from "./link"; -export * from "./links/fetchLink"; -export * from "./links/noOpLink"; -export * from "./links/loggerLink"; -export * from "./fakeObservable"; diff --git a/external/rspc/packages/client/src/internals/CREDIT.md b/external/rspc/packages/client/src/internals/CREDIT.md deleted file mode 100644 index 82bf537..0000000 --- a/external/rspc/packages/client/src/internals/CREDIT.md +++ /dev/null @@ -1 +0,0 @@ -Most of the code in the folder is from [trpc/trpc](https://github.com/trpc/trpc). A huge thanks to it's original authors! \ No newline at end of file diff --git a/external/rspc/packages/client/src/internals/dataLoader.ts b/external/rspc/packages/client/src/internals/dataLoader.ts deleted file mode 100644 index b566e32..0000000 --- a/external/rspc/packages/client/src/internals/dataLoader.ts +++ /dev/null @@ -1,166 +0,0 @@ -import { CancelFn, PromiseAndCancel } from ".."; - -type BatchItem = { - aborted: boolean; - key: TKey; - resolve: (value: TValue) => void; - reject: (error: Error) => void; - batch: Batch | null; -}; -type Batch = { - items: BatchItem[]; - cancel: CancelFn; -}; -type BatchLoader = { - validate: (keys: TKey[]) => boolean; - fetch: (keys: TKey[]) => { - promise: Promise; - cancel: CancelFn; - }; -}; - -/** - * A function that should never be called unless we messed something up. - */ -const throwFatalError = () => { - throw new Error( - "Something went wrong. Please submit an issue at https://github.com/trpc/trpc/issues/new" - ); -}; - -/** - * Dataloader that's very inspired by https://github.com/graphql/dataloader - * Less configuration, no caching, and allows you to cancel requests - * When cancelling a single fetch the whole batch will be cancelled only when _all_ items are cancelled - */ -export function dataLoader( - batchLoader: BatchLoader -) { - let pendingItems: BatchItem[] | null = null; - let dispatchTimer: ReturnType | null = null; - - const destroyTimerAndPendingItems = () => { - clearTimeout(dispatchTimer as any); - dispatchTimer = null; - pendingItems = null; - }; - - /** - * Iterate through the items and split them into groups based on the `batchLoader`'s validate function - */ - function groupItems(items: BatchItem[]) { - const groupedItems: BatchItem[][] = [[]]; - let index = 0; - while (true) { - const item = items[index]; - if (!item) { - // we're done - break; - } - const lastGroup = groupedItems[groupedItems.length - 1]!; - - if (item.aborted) { - // Item was aborted before it was dispatched - item.reject(new Error("Aborted")); - index++; - continue; - } - - const isValid = batchLoader.validate( - lastGroup.concat(item).map((it) => it.key) - ); - - if (isValid) { - lastGroup.push(item); - index++; - continue; - } - - if (lastGroup.length === 0) { - item.reject(new Error("Input is too big for a single dispatch")); - index++; - continue; - } - // Create new group, next iteration will try to add the item to that - groupedItems.push([]); - } - return groupedItems; - } - - function dispatch() { - const groupedItems = groupItems(pendingItems!); - destroyTimerAndPendingItems(); - - // Create batches for each group of items - for (const items of groupedItems) { - if (!items.length) { - continue; - } - const batch: Batch = { - items, - cancel: throwFatalError, - }; - for (const item of items) { - item.batch = batch; - } - const { promise, cancel } = batchLoader.fetch( - batch.items.map((_item) => _item.key) - ); - batch.cancel = cancel; - - promise - .then((result) => { - for (let i = 0; i < result.length; i++) { - const value = result[i]!; - const item = batch.items[i]!; - item.resolve(value); - item.batch = null; - } - }) - .catch((cause) => { - for (const item of batch.items) { - item.reject(cause); - item.batch = null; - } - }); - } - } - function load(key: TKey): PromiseAndCancel { - const item: BatchItem = { - aborted: false, - key, - batch: null, - resolve: throwFatalError, - reject: throwFatalError, - }; - - const promise = new Promise((resolve, reject) => { - item.reject = reject; - item.resolve = resolve; - - if (!pendingItems) { - pendingItems = []; - } - pendingItems.push(item); - }); - - if (!dispatchTimer) { - dispatchTimer = setTimeout(dispatch); - } - const cancel = () => { - item.aborted = true; - - if (item.batch?.items.every((item) => item.aborted)) { - // All items in the batch have been cancelled - item.batch.cancel(); - item.batch = null; - } - }; - - return { promise, cancel }; - } - - return { - load, - }; -} diff --git a/external/rspc/packages/client/src/internals/fetchHelpers.ts b/external/rspc/packages/client/src/internals/fetchHelpers.ts deleted file mode 100644 index a228c05..0000000 --- a/external/rspc/packages/client/src/internals/fetchHelpers.ts +++ /dev/null @@ -1,12 +0,0 @@ -export function getWindow() { - if (typeof window !== "undefined") { - return window; - } - return globalThis; -} - -export function getAbortController( - ac: typeof AbortController | undefined | null -): typeof AbortController | null { - return ac ?? getWindow().AbortController ?? null; -} diff --git a/external/rspc/packages/client/src/internals/observable/index.ts b/external/rspc/packages/client/src/internals/observable/index.ts deleted file mode 100644 index 18aee77..0000000 --- a/external/rspc/packages/client/src/internals/observable/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -export * from './observable'; -export * from './types'; -export * from './operators'; -export { observableToPromise } from './internals/observableToPromise'; diff --git a/external/rspc/packages/client/src/internals/observable/internals/identity.ts b/external/rspc/packages/client/src/internals/observable/internals/identity.ts deleted file mode 100644 index 0eebfa6..0000000 --- a/external/rspc/packages/client/src/internals/observable/internals/identity.ts +++ /dev/null @@ -1,4 +0,0 @@ -// TODO: It would be nice if this could be inlined (remove when compiled): https://stackoverflow.com/questions/47617077/does-typescript-compiler-has-inline-function-option -export function identity(x: TType): TType { - return x; -} diff --git a/external/rspc/packages/client/src/internals/observable/internals/observableToPromise.ts b/external/rspc/packages/client/src/internals/observable/internals/observableToPromise.ts deleted file mode 100644 index 2d138af..0000000 --- a/external/rspc/packages/client/src/internals/observable/internals/observableToPromise.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { Observable } from '../types'; - -export class ObservableAbortError extends Error { - constructor(message: string) { - super(message); - this.name = 'ObservableAbortError'; - Object.setPrototypeOf(this, ObservableAbortError.prototype); - } -} - -/** @internal */ -export function observableToPromise( - observable: Observable, -) { - let abort: () => void; - const promise = new Promise((resolve, reject) => { - let isDone = false; - function onDone() { - if (isDone) { - return; - } - isDone = true; - reject(new ObservableAbortError('This operation was aborted.')); - obs$.unsubscribe(); - } - const obs$ = observable.subscribe({ - next(data) { - isDone = true; - resolve(data); - onDone(); - }, - error(data) { - isDone = true; - reject(data); - onDone(); - }, - complete() { - isDone = true; - onDone(); - }, - }); - abort = onDone; - }); - return { - promise, - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - abort: abort!, - }; -} diff --git a/external/rspc/packages/client/src/internals/observable/internals/pipe.ts b/external/rspc/packages/client/src/internals/observable/internals/pipe.ts deleted file mode 100644 index 20d3f71..0000000 --- a/external/rspc/packages/client/src/internals/observable/internals/pipe.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { UnaryFunction } from '../types'; -import { identity } from './identity'; - -/** @internal */ -export function pipeFromArray( - fns: Array>, -): UnaryFunction { - if (fns.length === 0) { - return identity as UnaryFunction; - } - - if (fns.length === 1) { - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - return fns[0]!; - } - - return function piped(input: TSource): TReturn { - return fns.reduce( - (prev: any, fn: UnaryFunction) => fn(prev), - input as any, - ); - }; -} diff --git a/external/rspc/packages/client/src/internals/observable/observable.test.ts b/external/rspc/packages/client/src/internals/observable/observable.test.ts deleted file mode 100644 index 00c4608..0000000 --- a/external/rspc/packages/client/src/internals/observable/observable.test.ts +++ /dev/null @@ -1,103 +0,0 @@ -// @ts-nocheck // TODO - -/* eslint-disable @typescript-eslint/no-empty-function */ -import { observable, share, tap } from "."; - -test("vanilla observable - complete()", () => { - const obs = observable((observer) => { - observer.next(1); - observer.complete(); - }); - - const next = jest.fn(); - const error = jest.fn(); - const complete = jest.fn(); - obs.subscribe({ - next, - error, - complete, - }); - expect(next.mock.calls).toHaveLength(1); - expect(complete.mock.calls).toHaveLength(1); - expect(error.mock.calls).toHaveLength(0); - expect(next.mock.calls[0]![0]!).toBe(1); -}); - -test("vanilla observable - unsubscribe()", () => { - const obs$ = observable((observer) => { - observer.next(1); - }); - - const next = jest.fn(); - const error = jest.fn(); - const complete = jest.fn(); - const sub = obs$.subscribe({ - next, - error, - complete, - }); - sub.unsubscribe(); - expect(next.mock.calls).toHaveLength(1); - expect(complete.mock.calls).toHaveLength(0); - expect(error.mock.calls).toHaveLength(0); - expect(next.mock.calls[0]![0]!).toBe(1); -}); - -test("pipe - combine operators", () => { - const taps = { - next: jest.fn(), - complete: jest.fn(), - error: jest.fn(), - }; - const obs = observable((observer) => { - observer.next(1); - }).pipe( - // operators: - share(), - tap(taps) - ); - { - const next = jest.fn(); - const error = jest.fn(); - const complete = jest.fn(); - obs.subscribe({ - next, - error, - complete, - }); - expect(next.mock.calls).toHaveLength(1); - expect(complete.mock.calls).toHaveLength(0); - expect(error.mock.calls).toHaveLength(0); - expect(next.mock.calls[0]![0]!).toBe(1); - } - - { - const next = jest.fn(); - const error = jest.fn(); - const complete = jest.fn(); - obs.subscribe({ - next, - error, - complete, - }); - expect(next.mock.calls).toHaveLength(0); - expect(complete.mock.calls).toHaveLength(0); - expect(error.mock.calls).toHaveLength(0); - } - - expect({ - next: taps.next.mock.calls, - error: taps.error.mock.calls, - complete: taps.complete.mock.calls, - }).toMatchInlineSnapshot(` - Object { - "complete": Array [], - "error": Array [], - "next": Array [ - Array [ - 1, - ], - ], - } - `); -}); diff --git a/external/rspc/packages/client/src/internals/observable/observable.ts b/external/rspc/packages/client/src/internals/observable/observable.ts deleted file mode 100644 index 9ce2fc6..0000000 --- a/external/rspc/packages/client/src/internals/observable/observable.ts +++ /dev/null @@ -1,78 +0,0 @@ -import { pipeFromArray } from './internals/pipe'; -import { Observable, Observer, OperatorFunction, TeardownLogic } from './types'; - -export type inferObservableValue = TObservable extends Observable< - infer TValue, - unknown -> - ? TValue - : never; - -export function isObservable(x: unknown): x is Observable { - return typeof x === 'object' && x !== null && 'subscribe' in x; -} - -export function observable( - subscribe: (observer: Observer) => TeardownLogic, -): Observable { - const self: Observable = { - subscribe(observer) { - let teardownRef: TeardownLogic | null = null; - let isDone = false; - let unsubscribed = false; - let teardownImmediately = false; - function unsubscribe() { - if (teardownRef === null) { - teardownImmediately = true; - return; - } - if (unsubscribed) { - return; - } - unsubscribed = true; - - if (typeof teardownRef === 'function') { - teardownRef(); - } else if (teardownRef) { - teardownRef.unsubscribe(); - } - } - teardownRef = subscribe({ - next(value) { - if (isDone) { - return; - } - observer.next?.(value); - }, - error(err) { - if (isDone) { - return; - } - isDone = true; - observer.error?.(err); - unsubscribe(); - }, - complete() { - if (isDone) { - return; - } - isDone = true; - observer.complete?.(); - unsubscribe(); - }, - }); - if (teardownImmediately) { - unsubscribe(); - } - return { - unsubscribe, - }; - }, - pipe( - ...operations: OperatorFunction[] - ): Observable { - return pipeFromArray(operations)(self) as any; - }, - }; - return self; -} diff --git a/external/rspc/packages/client/src/internals/observable/operators/index.ts b/external/rspc/packages/client/src/internals/observable/operators/index.ts deleted file mode 100644 index 6309f78..0000000 --- a/external/rspc/packages/client/src/internals/observable/operators/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from './share'; -export * from './map'; -export * from './tap'; diff --git a/external/rspc/packages/client/src/internals/observable/operators/map.test.ts b/external/rspc/packages/client/src/internals/observable/operators/map.test.ts deleted file mode 100644 index 6742387..0000000 --- a/external/rspc/packages/client/src/internals/observable/operators/map.test.ts +++ /dev/null @@ -1,94 +0,0 @@ -// @ts-nocheck // TODO - -import { EventEmitter } from "events"; -import { expectTypeOf } from "expect-type"; -import { map } from "."; -import { observable } from "../observable"; - -interface SubscriptionEvents { - data: (data: TOutput) => void; -} - -declare interface CustomEventEmitter { - on>( - event: U, - listener: SubscriptionEvents[U] - ): this; - - once>( - event: U, - listener: SubscriptionEvents[U] - ): this; - - emit>( - event: U, - ...args: Parameters[U]> - ): boolean; -} -class CustomEventEmitter - extends EventEmitter - implements CustomEventEmitter {} -test("map", () => { - type EventShape = { num: number }; - const ee = new CustomEventEmitter(); - const eventObservable = observable((observer) => { - const callback = (data: EventShape) => { - observer.next(data); - }; - ee.on("data", callback); - - return () => { - ee.off("data", callback); - }; - }); - const pipeCalls = jest.fn(); - const piped = eventObservable.pipe( - map((...args) => { - pipeCalls(...args); - const [value] = args; - return value.num; - }) - ); - - const next = jest.fn(); - const subscription = piped.subscribe({ - next(value) { - expectTypeOf(value); - next(value); - }, - }); - expect(next).not.toHaveBeenCalled(); - ee.emit("data", { num: 1 }); - ee.emit("data", { num: 2 }); - expect(next).toHaveBeenCalledTimes(2); - expect(next.mock.calls).toMatchInlineSnapshot(` - Array [ - Array [ - 1, - ], - Array [ - 2, - ], - ] - `); - expect(pipeCalls.mock.calls).toMatchInlineSnapshot(` - Array [ - Array [ - Object { - "num": 1, - }, - 0, - ], - Array [ - Object { - "num": 2, - }, - 1, - ], - ] - `); - - expect(ee.listeners("data")).toHaveLength(1); - subscription.unsubscribe(); - expect(ee.listeners("data")).toHaveLength(0); -}); diff --git a/external/rspc/packages/client/src/internals/observable/operators/map.ts b/external/rspc/packages/client/src/internals/observable/operators/map.ts deleted file mode 100644 index d73b13d..0000000 --- a/external/rspc/packages/client/src/internals/observable/operators/map.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { OperatorFunction } from '../types'; - -export function map( - project: (value: TValueBefore, index: number) => TValueAfter, -): OperatorFunction { - return (originalObserver) => { - return { - subscribe(observer) { - let index = 0; - const subscription = originalObserver.subscribe({ - next(value) { - observer.next?.(project(value, index++)); - }, - error(error) { - observer.error?.(error); - }, - complete() { - observer.complete?.(); - }, - }); - return subscription; - }, - }; - }; -} diff --git a/external/rspc/packages/client/src/internals/observable/operators/share.test.ts b/external/rspc/packages/client/src/internals/observable/operators/share.test.ts deleted file mode 100644 index 42e5920..0000000 --- a/external/rspc/packages/client/src/internals/observable/operators/share.test.ts +++ /dev/null @@ -1,62 +0,0 @@ -// @ts-nocheck // TODO - -/* eslint-disable no-var */ -import { observable } from "../observable"; -import { share } from "./share"; - -test("share", () => { - const obs = share()( - observable((observer) => { - observer.next(1); - }) - ); - - { - const next = jest.fn(); - const error = jest.fn(); - const complete = jest.fn(); - var subscription1 = obs.subscribe({ - next, - error, - complete, - }); - expect(next.mock.calls).toHaveLength(1); - expect(complete.mock.calls).toHaveLength(0); - expect(error.mock.calls).toHaveLength(0); - expect(next.mock.calls[0]![0]!).toBe(1); - } - - { - // subscribe again - it's shared so should not propagate any results - const next = jest.fn(); - const error = jest.fn(); - const complete = jest.fn(); - var subscription2 = obs.subscribe({ - next, - error, - complete, - }); - expect(next.mock.calls).toHaveLength(0); - expect(complete.mock.calls).toHaveLength(0); - expect(error.mock.calls).toHaveLength(0); - } - - subscription1.unsubscribe(); - subscription2.unsubscribe(); - // now it should be reset so we can do a new subscription - { - const next = jest.fn(); - const error = jest.fn(); - const complete = jest.fn(); - var subscription3 = obs.subscribe({ - next, - error, - complete, - }); - expect(next.mock.calls).toHaveLength(1); - expect(complete.mock.calls).toHaveLength(0); - expect(error.mock.calls).toHaveLength(0); - expect(next.mock.calls[0]![0]!).toBe(1); - subscription3.unsubscribe(); - } -}); diff --git a/external/rspc/packages/client/src/internals/observable/operators/share.ts b/external/rspc/packages/client/src/internals/observable/operators/share.ts deleted file mode 100644 index 31721df..0000000 --- a/external/rspc/packages/client/src/internals/observable/operators/share.ts +++ /dev/null @@ -1,67 +0,0 @@ -import { MonoTypeOperatorFunction, Observer, Unsubscribable } from '../types'; - -/* eslint-disable @typescript-eslint/no-empty-interface */ -interface ShareConfig {} -export function share( - // eslint-disable-next-line @typescript-eslint/no-unused-vars - _opts?: ShareConfig, -): MonoTypeOperatorFunction { - return (originalObserver) => { - let refCount = 0; - - let subscription: Unsubscribable | null = null; - const observers: Partial>[] = []; - - function startIfNeeded() { - if (subscription) { - return; - } - subscription = originalObserver.subscribe({ - next(value) { - for (const observer of observers) { - observer.next?.(value); - } - }, - error(error) { - for (const observer of observers) { - observer.error?.(error); - } - }, - complete() { - for (const observer of observers) { - observer.complete?.(); - } - }, - }); - } - function resetIfNeeded() { - // "resetOnRefCountZero" - if (refCount === 0 && subscription) { - const _sub = subscription; - subscription = null; - _sub.unsubscribe(); - } - } - - return { - subscribe(observer) { - refCount++; - - observers.push(observer); - startIfNeeded(); - return { - unsubscribe() { - refCount--; - resetIfNeeded(); - - const index = observers.findIndex((v) => v === observer); - - if (index > -1) { - observers.splice(index, 1); - } - }, - }; - }, - }; - }; -} diff --git a/external/rspc/packages/client/src/internals/observable/operators/tap.ts b/external/rspc/packages/client/src/internals/observable/operators/tap.ts deleted file mode 100644 index cb6b8b6..0000000 --- a/external/rspc/packages/client/src/internals/observable/operators/tap.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { MonoTypeOperatorFunction, Observer } from '../types'; - -export function tap( - observer: Partial>, -): MonoTypeOperatorFunction { - return (originalObserver) => { - return { - subscribe(observer2) { - return originalObserver.subscribe({ - next(v) { - observer.next?.(v); - observer2.next?.(v); - }, - error(v) { - observer.error?.(v); - observer2.error?.(v); - }, - complete() { - observer.complete?.(); - observer2.complete?.(); - }, - }); - }, - }; - }; -} diff --git a/external/rspc/packages/client/src/internals/observable/types.ts b/external/rspc/packages/client/src/internals/observable/types.ts deleted file mode 100644 index 1983d47..0000000 --- a/external/rspc/packages/client/src/internals/observable/types.ts +++ /dev/null @@ -1,80 +0,0 @@ -export interface Unsubscribable { - unsubscribe(): void; -} -export type UnsubscribeFn = () => void; -export interface Subscribable { - subscribe(observer: Partial>): Unsubscribable; -} -export interface Observable - extends Subscribable { - pipe(): Observable; - pipe( - op1: OperatorFunction, - ): Observable; - pipe( - op1: OperatorFunction, - op2: OperatorFunction, - ): Observable; - pipe( - op1: OperatorFunction, - op2: OperatorFunction, - op3: OperatorFunction, - ): Observable; - pipe( - op1: OperatorFunction, - op2: OperatorFunction, - op3: OperatorFunction, - op4: OperatorFunction, - ): Observable; - pipe< - TValue1, - TError1, - TValue2, - TError2, - TValue3, - TError3, - TValue4, - TError4, - TValue5, - TError5, - >( - op1: OperatorFunction, - op2: OperatorFunction, - op3: OperatorFunction, - op4: OperatorFunction, - op5: OperatorFunction, - ): Observable; -} -export interface SubscriptionLike extends Unsubscribable { - unsubscribe(): void; - readonly closed: boolean; -} - -export interface Observer { - next: (value: TValue) => void; - error: (err: TError) => void; - complete: () => void; -} - -export type TeardownLogic = - // | SubscriptionLike - Unsubscribable | UnsubscribeFn | void; - -export type UnaryFunction = (source: TSource) => TReturn; - -export type OperatorFunction< - TValueBefore, - TErrorBefore, - TValueAfter, - TErrorAfter, -> = UnaryFunction< - Subscribable, - Subscribable ->; - -export type MonoTypeOperatorFunction = OperatorFunction< - TValue, - TError, - TValue, - TError ->; diff --git a/external/rspc/packages/client/src/interop/error.ts b/external/rspc/packages/client/src/interop/error.ts deleted file mode 100644 index 19897cb..0000000 --- a/external/rspc/packages/client/src/interop/error.ts +++ /dev/null @@ -1,108 +0,0 @@ -// @ts-no-check: TODO: Bruh - -export function getMessageFromUnkownError( - err: unknown, - fallback: string -): string { - if (typeof err === "string") { - return err; - } - - if (err instanceof Error && typeof err.message === "string") { - return err.message; - } - return fallback; -} - -export function getErrorFromUnknown(cause: unknown): Error { - if (cause instanceof Error) { - return cause; - } - const message = getMessageFromUnkownError(cause, "Unknown error"); - return new Error(message); -} - -export function getTRPCErrorFromUnknown(cause: unknown): RSPCError { - const error = getErrorFromUnknown(cause); - // this should ideally be an `instanceof TRPCError` but for some reason that isn't working - // ref https://github.com/trpc/trpc/issues/331 - if (error.name === "RSPCError") { - return cause as RSPCError; - } - - // @ts-expect-error: TODO: Fix this - const trpcError = new RSPCError({ - code: "INTERNAL_SERVER_ERROR", - cause: error, - message: error.message, - }); - - // Inherit stack from error - trpcError.stack = error.stack; - - return trpcError; -} - -export function getCauseFromUnknown(cause: unknown) { - if (cause instanceof Error) { - return cause; - } - - return undefined; -} -export class RSPCError extends Error { - public readonly cause; - public readonly shape: any; // TODO: Maybe>; - public readonly data: any; // TODO; Maybe["data"]>; - public readonly meta; - - public readonly code: number = 0; // TODO: Hook this back up - - constructor( - message: string, - opts?: { - result?: any; // TODO: Maybe>; - cause?: Error; - meta?: Record; - } - ) { - const cause = opts?.cause; - - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore https://github.com/tc39/proposal-error-cause - super(message, { cause }); - - this.meta = opts?.meta; - - this.cause = cause; - this.shape = opts?.result?.error; - this.data = opts?.result?.error.data; - this.name = "RSPCError"; - - Object.setPrototypeOf(this, RSPCError.prototype); - } - - public static from( - cause: Error, // TODO: | TRPCErrorResponse, - opts: { meta?: Record } = {} - ): RSPCError { - if (!(cause instanceof Error)) { - // @ts-expect-error: TODO - return new RSPCError(cause.error.message ?? "", { - ...opts, - cause: undefined, - result: cause as any, - }); - } - if (cause.name === "TRPCClientError") { - // @ts-expect-error: TODO: Bruh - return cause as TRPCClientError; - } - - return new RSPCError(cause.message, { - ...opts, - cause, - result: null, - }); - } -} diff --git a/external/rspc/packages/client/src/interop/index.ts b/external/rspc/packages/client/src/interop/index.ts deleted file mode 100644 index 7615022..0000000 --- a/external/rspc/packages/client/src/interop/index.ts +++ /dev/null @@ -1,114 +0,0 @@ -// TODO: This entire folder provides an interop layer between the old and new syntax because the new syntax isn't ready for prime time. The whole folder is tech debt and will be removed in time. - -import { - RSPCError, - ProceduresDef, - inferProcedure, - inferSubscriptionResult, - inferMutationResult, - inferQueryResult, -} from ".."; -export * from "./error"; -export * from "./typescript"; - -export class FetchTransport { - constructor(url: string) { - // TODO - } -} - -/** - * @deprecated - */ -export type ProceduresLike = - | { - _rspc_def: ProceduresDef; - } - | ProceduresDef; - -/** - * @deprecated - */ -export type inferProcedures = - TProcedures extends { - _rspc_def: ProceduresDef; - } - ? TProcedures["_rspc_def"] - : TProcedures; - -/** - * @deprecated This helper will be made internal on the next release so don't rely on it! - */ -export type _inferProcedureHandlerInput< - TProcedures extends ProceduresLike, - TOperation extends keyof ProceduresDef, - K extends inferProcedures[TOperation]["key"] -> = inferProcedure["input"] extends never - ? [] - : [inferProcedure["input"]]; - -export interface Transport { - // TODO - // clientSubscriptionCallback?: (id: string, key: string, value: any) => void; - // doRequest(operation: OperationType, key: string, input: any): Promise; -} - -interface ClientArgs { - transport: Transport; - onError?: (err: RSPCError) => void | Promise; -} - -export function createClient( - args: ClientArgs -): Client> { - return new Client(args); -} - -/** - * @deprecated Will be removed when interop API is removed! - */ -export interface SubscriptionOptions { - onStarted?: () => void; - onData: (data: TOutput) => void; - onError?: (err: RSPCError) => void; -} - -export class Client { - _rspc_def: ProceduresDef; - private onError?: (err: RSPCError) => void | Promise; - - constructor(args: ClientArgs) { - this._rspc_def = undefined as unknown as TProcedures; - this.onError = args.onError; - - // TODO - } - - query( - keyAndInput: [ - key: K, - ...input: _inferProcedureHandlerInput - ] - ): Promise> { - return undefined as any; // TODO - } - - mutation( - keyAndInput: [ - key: K, - ...input: _inferProcedureHandlerInput - ] - ): Promise> { - return undefined as any; // TODO - } - - addSubscription( - keyAndInput: [ - K, - ..._inferProcedureHandlerInput - ], - opts: SubscriptionOptions> - ): () => void { - return undefined as any; // TODO - } -} diff --git a/external/rspc/packages/client/src/interop/interop.test.ts b/external/rspc/packages/client/src/interop/interop.test.ts deleted file mode 100644 index 1b6697d..0000000 --- a/external/rspc/packages/client/src/interop/interop.test.ts +++ /dev/null @@ -1,58 +0,0 @@ -import { describe, it } from "vitest"; -import { createClient, FetchTransport } from "../"; -import { assertTy } from "../utils.test"; - -type Procedures = { - queries: - | { key: "a"; input: string; result: number } - | { key: "b"; input: boolean; result: string } - | { key: "c"; input: never; result: boolean }; - mutations: - | { key: "d"; input: number; result: string } - | { key: "e"; input: string; result: boolean } - | { key: "f"; input: never; result: number }; - subscriptions: - | { key: "g"; input: boolean; result: number } - | { key: "h"; input: number; result: string } - | { key: "i"; input: never; result: boolean }; -}; - -const fetchClient = createClient({ - transport: new FetchTransport("http://localhost:4000/rspc"), -}); - -describe("interop API", () => { - it("client queries", async () => { - assertTy(await fetchClient.query(["a", "hello"])); - assertTy(await fetchClient.query(["b", true])); - assertTy(await fetchClient.query(["c"])); - // @ts-expect-error - await fetchClient.query(["not a key"]); - }); - - it("client mutations", async () => { - assertTy(await fetchClient.mutation(["d", 42])); - assertTy(await fetchClient.mutation(["e", "hello"])); - assertTy(await fetchClient.mutation(["f"])); - // @ts-expect-error - await fetchClient.mutation(["not a key"]); - }); - - it("client subscriptions", async () => { - fetchClient.addSubscription(["g", true], { - onData: (data: number) => {}, - }); - fetchClient.addSubscription(["h", 42], { - onData: (data: string) => {}, - }); - fetchClient.addSubscription(["i"], { - onData: (data: boolean) => {}, - }); - // @ts-expect-error - fetchClient.addSubscription(["not a key"], { - onData: (data: any) => {}, - }); - }); - - // TODO: NoOpTransport and WebsocketTransport both working -}); diff --git a/external/rspc/packages/client/src/interop/typescript.ts b/external/rspc/packages/client/src/interop/typescript.ts deleted file mode 100644 index 91fe9cb..0000000 --- a/external/rspc/packages/client/src/interop/typescript.ts +++ /dev/null @@ -1,88 +0,0 @@ -import { - inferProcedureInput, - inferProcedureResult, - inferProcedures, - ProceduresLike, -} from ".."; - -/** - * @deprecated Use `inferProcedureInput` instead - */ -export type inferQueryInput< - TProcedures extends ProceduresLike, - T extends inferProcedures["queries"]["key"][0] -> = inferProcedureInput, "queries", T>; - -/** - * @deprecated Use `inferProcedureResult` instead - */ -export type inferQueryResult< - TProcedures extends ProceduresLike, - T extends inferProcedures["queries"]["key"][0] -> = inferProcedureResult, "queries", T>; - -/** - * @deprecated Use `inferProcedureInput` instead - */ -export type inferMutationInput< - TProcedures extends ProceduresLike, - T extends inferProcedures["mutations"]["key"][0] -> = inferProcedureInput, "mutations", T>; - -/** - * @deprecated Use `inferProcedureResult` instead - */ -export type inferMutationResult< - TProcedures extends ProceduresLike, - T extends inferProcedures["mutations"]["key"][0] -> = inferProcedureResult, "mutations", T>; - -/** - * @deprecated Use `inferProcedureInput` instead - */ -export type inferSubscriptionInput< - TProcedures extends ProceduresLike, - T extends inferProcedures["subscriptions"]["key"][0] -> = inferProcedureInput, "subscriptions", T>; - -/** - * @deprecated Use `inferProcedureResult` instead - */ -export type inferSubscriptionResult< - TProcedures extends ProceduresLike, - T extends inferProcedures["subscriptions"]["key"][0] -> = inferProcedureResult, "subscriptions", T>; - -// export type inferInfiniteQueries = Exclude< -// Extract["queries"], { input: { cursor: any } }>, -// { input: never } -// >; - -// // TODO -// export type inferInfiniteQuery< -// TProcedures extends ProceduresLike, -// K extends inferInfiniteQueries["key"] -// > = Extract, { key: K }>; - -// // TODO -// type EmptyObjToNever = keyof T extends never ? never : T; -// export type inferInfiniteQueryInput< -// TProcedures extends ProceduresLike, -// K extends inferInfiniteQueries["key"] -// > = EmptyObjToNever< -// Omit["input"], "cursor"> -// >; - -// // TODO -// export type inferInfiniteQueryResult< -// TProcedures extends ProceduresLike, -// K extends inferInfiniteQueries["key"] -// > = inferInfiniteQuery["result"]; - -// // TODO -// export type _inferInfiniteQueryProcedureHandlerInput< -// TProcedures extends ProceduresLike, -// K extends inferInfiniteQueries["key"] -// > = inferInfiniteQueryInput extends null -// ? [] -// : [inferInfiniteQueryInput]; diff --git a/external/rspc/packages/client/src/link.test.ts b/external/rspc/packages/client/src/link.test.ts deleted file mode 100644 index b13b8b7..0000000 --- a/external/rspc/packages/client/src/link.test.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { describe, it } from "vitest"; -import { HasAnyLinkFlags, HasLinkFlags } from "./link"; -import { assertTy } from "./utils.test"; - -describe("Links", () => { - it("HasLinkFlags & HasAnyLinkFlags", async () => { - assertTy, true>(); - assertTy< - HasLinkFlags<{ built: true }, "terminatedLink" | "built">, - false - >(); - assertTy< - HasLinkFlags< - { terminatedLink: true; built: true }, - "terminatedLink" | "built" - >, - true - >(); - assertTy, false>(); - - assertTy< - HasAnyLinkFlags<{ terminatedLink: true }, "terminatedLink">, - true - >(); - assertTy< - HasAnyLinkFlags< - { terminatedLink: true; built: true }, - "terminatedLink" | "built" - >, - true - >(); - assertTy, false>(); - }); -}); diff --git a/external/rspc/packages/client/src/link.ts b/external/rspc/packages/client/src/link.ts deleted file mode 100644 index d8fb9df..0000000 --- a/external/rspc/packages/client/src/link.ts +++ /dev/null @@ -1,106 +0,0 @@ -import { NewObservable, ProceduresDef } from "."; - -/** - * A map of data that can be used by links to store metadata about the current operation. - * This allows links to communicate with each other. - * - * @internal - */ -export type OperationContext = Record; - -/** - * TODO - * - * @internal - */ -export interface Operation { - // TODO: Optional on being a subscription? - id: number; - - type: "query" | "mutation" | "subscription"; - input: unknown; - path: string; - context: OperationContext; -} - -/** - * Link flag is a marker used to indicate a link has a special behavior. - * This is used to make certain runtime errors impossible by catching them in the type system. - * - * @internal - */ -export type LinkFlag = "subscriptionsUnsupported" | "terminatedLink" | "built"; - -/** - * An object representing a set of enabled link flags. - * - * @internal - */ -export type LinkFlags = { [K in LinkFlag]?: true }; - -/** - * Takes in two sets of flags and returns a new set of flags that is the union of the input. - * This exists because it takes into account the fact that null is a valid flag. - * - * @internal - */ -// TODO: Maybe remove this now that we are using an object -export type JoinLinkFlags< - TFlag extends LinkFlags, - TNewFlag extends LinkFlag -> = TFlag & { [K in TNewFlag]: true }; - -/** - * Takes in a set of flags and a union of flags. It will return true if ALL of the flags are enabled. - * - * @internal - */ -export type HasLinkFlags< - TFlags extends LinkFlags, - TFlag extends LinkFlag -> = TFlags extends Record ? true : false; - -/** - * Takes in a set of flags and a union of flags. It will return true if ANY of the flags are enabled. - * - * @internal - */ -export type HasAnyLinkFlags< - TFlags extends LinkFlags, - TFlag extends LinkFlag -> = { - [K in TFlag]: TFlags[K] extends true ? true : false; -}[TFlag] extends false - ? false - : true; - -/** - * The argument to a link. Contains information about the current operation and a function to call the next link. - * - * @internal - */ -export interface LinkOperation { - op: Operation; - next(op: LinkOperation): void; // TODO: return type -} - -/** - * TODO - * - * @internal - */ -export type Link< - T extends ProceduresDef, - TT extends ProceduresDef = T, - TFlags extends LinkFlags = {} -> = (p: LinkOperation) => LinkResponse; - -/** - * TODO - * - * @internal - */ -export type LinkResponse< - T extends ProceduresDef, - TFlags extends LinkFlags -> = NewObservable; diff --git a/external/rspc/packages/client/src/links/fetchLink.test.ts b/external/rspc/packages/client/src/links/fetchLink.test.ts deleted file mode 100644 index 6bfd72e..0000000 --- a/external/rspc/packages/client/src/links/fetchLink.test.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { describe, it } from "vitest"; - -describe("Fetch Link", () => { - it("todo", async () => { - // TODO - }); -}); diff --git a/external/rspc/packages/client/src/links/fetchLink.ts b/external/rspc/packages/client/src/links/fetchLink.ts deleted file mode 100644 index 9ac03b6..0000000 --- a/external/rspc/packages/client/src/links/fetchLink.ts +++ /dev/null @@ -1,265 +0,0 @@ -import { - fakeObservable, - Link, - OperationType, - ProceduresDef, - PromiseAndCancel, - RSPCError, -} from ".."; - -// TODO: This shouldn't be exported but it is for now -// https://github.com/trpc/trpc/pull/669 -export function arrayToDict(array: unknown[]) { - const dict: Record = {}; - for (let index = 0; index < array.length; index++) { - const element = array[index]; - dict[index] = element; - } - return dict; -} - -// TODO: Shouldn't be exported -export function getInput(opts: { inputs: unknown[] } | { input: unknown }) { - return "input" in opts - ? opts.input // opts.runtime.transformer.serialize(opts.input) - : arrayToDict( - opts.inputs // .map((_input) => opts.runtime.transformer.serialize(_input)) - ); -} - -// TODO: Get these from the rspc internal bindings -type TRPCResponse = any; // TODO -export interface HTTPResult { - json: TRPCResponse; - meta: { - response: Response; - }; -} - -function getWindow() { - if (typeof window !== "undefined") { - return window; - } - return globalThis; -} - -function getFetch(f?: typeof fetch): typeof fetch { - if (f) { - return f; - } - - const win = getWindow(); - const globalFetch = win.fetch; - if (globalFetch) { - return typeof globalFetch.bind === "function" - ? globalFetch.bind(win) - : globalFetch; - } - - throw new Error("No fetch implementation found"); -} - -/** - * @internal - */ -export type HTTPHeaders = Record; - -export interface FetchLinkOptions { - url: string; - /** - * Add ponyfill for fetch - */ - fetch?: typeof fetch; - // TODO: Shouldn't this be ponyfilled at a higher level? - // /** - // * Add ponyfill for AbortController - // */ - // AbortController?: typeof AbortController | null; - /** - * Headers to be set on outgoing requests or a callback that of said headers - * @link http://trpc.io/docs/v10/header - */ - headers?: HTTPHeaders | (() => HTTPHeaders | Promise); - /** - * Configure the credentials policy for the fetch call. - * This is useful when you want to use cookies cross origin. - */ - credentials?: RequestCredentials; -} - -export function fetchLink( - rawOpts: FetchLinkOptions -): Link< - T, - T, - { - terminatedLink: true; - subscriptionsUnsupported: true; - } -> { - const opts: ResolvedFetchLinkOptions = { - fetch: getFetch(rawOpts.fetch), - // @ts-expect-error // TODO: Work out why it's complaining and fix it - headers: - typeof rawOpts.headers === "function" - ? rawOpts.headers - : rawOpts.headers || (() => ({})), - ...rawOpts, - }; - - return (op) => { - return fakeObservable(() => { - const { path, input, type, context } = op.op; - const { promise, cancel } = httpRequest({ - ...opts, - fetch, - type, - path, - input, - }); - - const p = promise.then((res) => { - const transformed = transformResult(res.json); - if (!transformed.ok) { - const error = RSPCError.from(transformed.error, { - meta: res.meta, - }); - throw error; - } - - return transformed; - }); - - return { promise: p, cancel }; - }); - }; -} - -type ResolvedFetchLinkOptions = { - url: string; - fetch: typeof fetch; - headers: () => HTTPHeaders | Promise; - credentials?: RequestCredentials; -}; - -// TODO: Name it -type TODO = { - url: string; - path: string; - type: Omit; -} & ({ inputs: unknown[] } | { input: unknown }); - -function getUrl(opts: TODO) { - let url = opts.url + "/" + opts.path; - const queryParts: string[] = []; - if ("inputs" in opts) { - queryParts.push("batch=1"); - } - if (opts.type === "query") { - const input = getInput(opts); - if (input !== undefined) { - queryParts.push(`input=${encodeURIComponent(JSON.stringify(input))}`); - } - } - if (queryParts.length) { - url += "?" + queryParts.join("&"); - } - return url; -} - -function getBody( - opts: { type: Omit } & ( - | { inputs: unknown[] } - | { input: unknown } - ) -) { - if (opts.type === "query") { - return undefined; - } - const input = getInput(opts); - return input !== undefined ? JSON.stringify(input) : undefined; -} - -const METHOD = { - query: "GET", - mutation: "POST", -} as const; - -function httpRequest( - opts: ResolvedFetchLinkOptions & TODO -): PromiseAndCancel { - const { type } = opts; - const ac = new AbortController(); // TODO: opts.AbortController ? new opts.AbortController() : null; - - const promise = new Promise((resolve, reject) => { - const url = getUrl(opts); - const body = getBody(opts); - const meta = {} as HTTPResult["meta"]; - Promise.resolve(opts.headers()) - .then((headers) => { - if (type === "subscription") { - throw new Error("Subscriptions should use wsLink"); - } - - // TODO: Having to bind to `globalThis` shouldn't be required here because we do it earlier. Idk why this isn't working but it will work for now. - return opts.fetch.bind(globalThis)(url, { - // @ts-expect-error // TODO: Fix this - method: METHOD[type], - signal: ac?.signal, - body: body, - credentials: opts.credentials, - headers: { - "content-type": "application/json", - ...headers, - }, - }); - }) - .then((_res) => { - meta.response = _res; - return _res.json(); - }) - .then((json) => { - resolve({ - json, - meta, - }); - }) - .catch(reject); - }); - - return { - promise, - cancel: () => { - ac?.abort(); - }, - }; -} - -/** - * - * @internal - */ -// TODO: remove this from the public API or put into `@rspc/client/internal` export -export function transformResult( - response: any // TODO: Type // TRPCResponseMessage | TRPCResponse -) { - if (response.result.type === "error") { - const error = response.result.data as any; - return { - ok: false, - error: { - ...response, - error, - }, - } as const; - } - - const result = { - ...response.result, - ...((!response.result.type || response.result.type === "data") && { - type: "data", - data: response.result.data, - }), - } as any; // TODO: Types // TRPCResultMessage["result"]; - return { ok: true, result } as const; -} diff --git a/external/rspc/packages/client/src/links/loggerLink.test.ts b/external/rspc/packages/client/src/links/loggerLink.test.ts deleted file mode 100644 index ed2f763..0000000 --- a/external/rspc/packages/client/src/links/loggerLink.test.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { describe, it } from "vitest"; - -describe("Logger Link", () => { - it("todo", async () => { - // TODO - }); -}); diff --git a/external/rspc/packages/client/src/links/loggerLink.ts b/external/rspc/packages/client/src/links/loggerLink.ts deleted file mode 100644 index e4eb485..0000000 --- a/external/rspc/packages/client/src/links/loggerLink.ts +++ /dev/null @@ -1,189 +0,0 @@ -// import { observable, tap } from "../packages/client/src/internals/observable"; -// import { ProceduresDef, RSPCError } from "../packages/client/src"; -// import { -// LegacyOperation, -// OperationResultEnvelope, -// TRPCLink, -// } from "../packages/client/src/legacyLinks/types"; - -import { - fakeObservable, - Link, - OperationContext, - ProceduresDef, - RSPCError, -} from ".."; -import { fullObservable, LegacyOperation, observable } from "../full"; - -type TRPCResultMessage = any; -type TRPCSuccessResponse = any; - -/** - * @internal - */ -export interface OperationResultEnvelope { - result: - | TRPCSuccessResponse["result"] - | TRPCResultMessage["result"]; - context?: OperationContext; -} - -type ConsoleEsque = { - log: (...args: any[]) => void; - error: (...args: any[]) => void; -}; - -type EnableFnOptions = - | (LegacyOperation & { - direction: "up"; - }) - | { - direction: "down"; - result: OperationResultEnvelope | RSPCError; - }; -type EnabledFn = ( - opts: EnableFnOptions -) => boolean; - -type LoggerLinkFnOptions = LegacyOperation & - ( - | { - /** - * Request was just initialized - */ - direction: "up"; - } - | { - /** - * Request result - */ - direction: "down"; - result: OperationResultEnvelope | RSPCError; - elapsedMs: number; - } - ); - -type LoggerLinkFn = ( - opts: LoggerLinkFnOptions -) => void; - -const palette = { - query: ["72e3ff", "3fb0d8"], - mutation: ["c5a3fc", "904dfc"], - subscription: ["ff49e1", "d83fbe"], -}; -export interface LoggerLinkOptions { - logger?: LoggerLinkFn; - enabled?: EnabledFn; - /** - * Used in the built-in defaultLogger - */ - console?: ConsoleEsque; -} - -// maybe this should be moved to it's own package -const defaultLogger = - ( - c: ConsoleEsque = console - ): LoggerLinkFn => - (props) => { - const { direction, input, type, path, context, id } = props; - const [light, dark] = palette[type]; - - const css = ` - background-color: #${direction === "up" ? light : dark}; - color: ${direction === "up" ? "black" : "white"}; - padding: 2px; - `; - - const parts = [ - "%c", - direction === "up" ? ">>" : "<<", - type, - `#${id}`, - `%c${path}%c`, - "%O", - ]; - const args: any[] = [ - css, - `${css}; font-weight: bold;`, - `${css}; font-weight: normal;`, - ]; - if (props.direction === "up") { - args.push({ input, context: context }); - } else { - args.push({ - input, - result: props.result, - elapsedMs: props.elapsedMs, - context, - }); - } - const fn: "error" | "log" = - props.direction === "down" && - props.result && - (props.result instanceof Error || "error" in props.result.result) - ? "error" - : "log"; - - c[fn].apply(null, [parts.join(" ")].concat(args)); - }; - -export function loggerLink( - opts: LoggerLinkOptions = {} -): Link< - T, - T, - { - terminatedLink: true; - subscriptionsUnsupported: true; - } -> { - const { enabled = () => true } = opts; - - const { logger = defaultLogger(opts.console) } = opts; - - return (op) => { - return fullObservable( - observable((observer) => { - // -> - // @ts-expect-error // TODO: Fix these type errors - enabled({ ...op, direction: "up" }) && - // @ts-expect-error // TODO: Fix these type errors - logger({ - ...op, - direction: "up", - }); - const requestStartTime = Date.now(); - function logResult( - result: any // TODO: OperationResultEnvelope | RSPCError - ) { - const elapsedMs = Date.now() - requestStartTime; - - enabled({ ...op, direction: "down", result }) && - // @ts-expect-error // TODO: Fix these type errors - logger({ - ...op, - direction: "down", - elapsedMs, - result, - }); - } - return op.next(op); - - // TODO: Ability to pipe with the lite-observable system - // .pipe( - // tap({ - // next(result) { - // logResult(result); - // }, - // error(result) { - // logResult(result); - // }, - // }) - // ) - // .subscribe(observer); - }) - ); - }; -} diff --git a/external/rspc/packages/client/src/links/noOpLink.test.ts b/external/rspc/packages/client/src/links/noOpLink.test.ts deleted file mode 100644 index 81f9504..0000000 --- a/external/rspc/packages/client/src/links/noOpLink.test.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { describe, it } from "vitest"; - -describe("No Op Link", () => { - it("todo", async () => { - // TODO - }); -}); diff --git a/external/rspc/packages/client/src/links/noOpLink.ts b/external/rspc/packages/client/src/links/noOpLink.ts deleted file mode 100644 index 6f6670c..0000000 --- a/external/rspc/packages/client/src/links/noOpLink.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Link, ProceduresDef } from ".."; - -export function noOpLink< - T extends ProceduresDef, - TSupportSubscriptions extends boolean = true ->(_?: { - supportsSubscriptions: TSupportSubscriptions; -}): Link< - T, - T, - { - terminatedLink: true; - } & (TSupportSubscriptions extends false - ? { subscriptionsUnsupported: true } - : {}) -> { - return undefined as any; // TODO: Working link -} diff --git a/external/rspc/packages/client/src/typescript.test.ts b/external/rspc/packages/client/src/typescript.test.ts deleted file mode 100644 index 5dd9313..0000000 --- a/external/rspc/packages/client/src/typescript.test.ts +++ /dev/null @@ -1,99 +0,0 @@ -import { describe, it } from "vitest"; -import { inferProcedureInput, inferProcedureResult, inferQueryInput } from "."; -import { assertTy } from "./utils.test"; - -export type Procedures = { - queries: - | { key: "flatteningQuery"; input: Flatten; result: Flatten } - | { key: "noArgQuery"; input: never; result: string } - | { - key: "paginatedQueryCursorAndArg"; - input: PaginatedQueryArg2; - result: MyPaginatedData; - } - | { - key: "paginatedQueryOnlyCursor"; - input: PaginatedQueryArg; - result: MyPaginatedData; - } - | { key: "singleArgQuery"; input: number; result: number }; - mutations: - | { key: "noArgMutation"; input: never; result: string } - | { key: "singleArgMutation"; input: number; result: number }; - subscriptions: - | { key: "noArgSubscription"; input: never; result: string } - | { key: "singleArgSubscription"; input: boolean; result: boolean }; -}; - -export type Flatten = { Unnamed: string }; - -export type MyPaginatedData = { data: string[]; next_cursor: string | null }; - -export type PaginatedQueryArg = { cursor: string }; - -export type PaginatedQueryArg2 = { cursor: string; my_param: number }; - -export type Test = "Unit" | { Unnamed: string }; - -describe("Typescript", () => { - it("query inference helpers", async () => { - assertTy, never>(); - assertTy< - inferProcedureResult, - string - >(); - - assertTy< - inferProcedureInput, - number - >(); - assertTy< - inferProcedureResult, - number - >(); - }); - - it("mutation inference helpers", async () => { - assertTy< - inferProcedureInput, - never - >(); - assertTy< - inferProcedureResult, - string - >(); - - assertTy< - inferProcedureInput, - number - >(); - assertTy< - inferProcedureResult, - number - >(); - }); - - it("subscription inference helpers", async () => { - assertTy< - inferProcedureInput, - never - >(); - assertTy< - inferProcedureResult, - string - >(); - - assertTy< - inferProcedureInput, - boolean - >(); - assertTy< - inferProcedureResult< - Procedures, - "subscriptions", - "singleArgSubscription" - >, - boolean - >(); - }); -}); diff --git a/external/rspc/packages/client/src/typescript.ts b/external/rspc/packages/client/src/typescript.ts deleted file mode 100644 index 327d0d4..0000000 --- a/external/rspc/packages/client/src/typescript.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { inferProcedures, ProceduresDef, ProceduresLike } from "."; - -// TODO: This should come from Rust via Specta -export type OperationType = - | "query" - | "mutation" - | "subscription" - | "subscriptionStop"; - -/** - * TODO: Docs - */ -export type inferProcedureKey< - TProcedures extends ProceduresLike, - TOperation extends keyof ProceduresDef -> = inferProcedures[TOperation]["key"]; - -// TODO -export type inferProcedure< - TProcedures extends ProceduresLike, - TOperation extends keyof ProceduresDef, - K extends inferProcedureKey -> = Extract[TOperation], { key: K }>; - -// TODO -export type inferProcedureInput< - TProcedures extends ProceduresLike, - TOperation extends keyof ProceduresDef, - K extends inferProcedureKey -> = inferProcedure["input"]; - -// TODO -export type inferProcedureResult< - TProcedures extends ProceduresLike, - TOperation extends keyof ProceduresDef, - K extends inferProcedureKey -> = inferProcedure["result"]; diff --git a/external/rspc/packages/client/src/utils.test.ts b/external/rspc/packages/client/src/utils.test.ts deleted file mode 100644 index 19d8419..0000000 --- a/external/rspc/packages/client/src/utils.test.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { describe, it } from "vitest"; - -export function assertTy(_: T); -export function assertTy(); -export function assertTy() {} - -export type FunctionLike = (...args: any[]) => any; -export type HasProperty< - T extends { [x: string]: any }, - Prop extends string -> = Prop extends keyof T ? true : false; - -describe("Test utils", () => { - it("assert", async () => { - assertTy(); - // @ts-expect-error - assertTy(); - - assertTy(true); - // @ts-expect-error - assertTy(false); - }); - - it("FunctionLike", async () => { - assertTy<() => string, FunctionLike>(); - assertTy<() => void, FunctionLike>(); - assertTy<(x: number) => void, FunctionLike>(); - assertTy<(x: number, y: string, z: boolean) => void, FunctionLike>(); - }); - - it("HasProperty", async () => { - const obj = { demo: "hello" }; - assertTy, true>(); - assertTy, false>(); - }); -}); diff --git a/external/rspc/packages/client/tsconfig.json b/external/rspc/packages/client/tsconfig.json deleted file mode 100644 index e6f577d..0000000 --- a/external/rspc/packages/client/tsconfig.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "@rspc/config/tsconfig.json", - "compilerOptions": { - "lib": ["esnext", "dom"] - }, - "include": ["src/**/*"], - "exclude": ["dist/**/*", "src/**/*.test.ts", "src/**/*.test.tsx"] -} diff --git a/external/rspc/packages/config/getRollupConfig.ts b/external/rspc/packages/config/getRollupConfig.ts deleted file mode 100644 index a7aa87e..0000000 --- a/external/rspc/packages/config/getRollupConfig.ts +++ /dev/null @@ -1,88 +0,0 @@ -import { RollupOptions } from "rollup"; -import { swc, defineRollupSwcOption } from "rollup-plugin-swc3"; -import del from "rollup-plugin-delete"; -import typescript from "rollup-plugin-typescript2"; -import dtsRaw from "rollup-plugin-dts"; -import { visualizer } from "rollup-plugin-visualizer"; -import externals from "rollup-plugin-node-externals"; -// @ts-expect-error no typedefs exist for this plugin -import multiInput from "rollup-plugin-multi-input"; - -const dts = ( - typeof dtsRaw !== "function" ? (dtsRaw as any).default : dtsRaw -) as typeof dtsRaw; - -const isWatchMode = process.argv.includes("--watch"); - -export function buildConfig(input: string | string[]): RollupOptions[] { - return [ - { - input, - output: [ - { - dir: `./dist`, - format: "cjs", - entryFileNames: "[name].js", - chunkFileNames: "[name]-[hash].js", - }, - { - dir: `./dist`, - format: "esm", - entryFileNames: "[name].mjs", - chunkFileNames: "[name]-[hash].mjs", - }, - ], - plugins: [ - !isWatchMode && - del({ - targets: "./dist/*.{js,mjs}", - }), - typescript({ - abortOnError: !isWatchMode, - }), - externals({ - deps: true, - devDeps: true, - peerDeps: true, - }), - swc( - defineRollupSwcOption({ - tsconfig: false, - sourceMaps: true, - jsc: { - target: "es2020", - transform: { - react: { - useBuiltins: true, - }, - }, - externalHelpers: true, - }, - }) - ), - visualizer({ - gzipSize: true, - brotliSize: true, - // TODO: Support for viewing the bundle size of `@rspc/client/full` - }), - ], - }, - { - input, - output: { dir: `./dist`, format: "es", entryFileNames: "[name].d.ts" }, - plugins: [ - !isWatchMode && - del({ - targets: "./dist/*.d.ts", - }), - multiInput.default({ relative: "src/" }), - dts({ - tsconfig: "tsconfig.json", - compilerOptions: { - preserveSymlinks: false, - }, - }), - ], - }, - ]; -} diff --git a/external/rspc/packages/config/package.json b/external/rspc/packages/config/package.json deleted file mode 100644 index 86e3b10..0000000 --- a/external/rspc/packages/config/package.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "@rspc/config", - "version": "0.0.0", - "author": "Oscar Beaumont", - "license": "MIT", - "private": true, - "exports": { - "./getRollupConfig": "./dist/getRollupConfig.js", - "./tsconfig.json": "./tsconfig.json" - }, - "scripts": { - "dev": "pnpm build --watch", - "build": "pnpm exec rollup --format=cjs -i getRollupConfig.ts -o dist/getRollupConfig.js --plugin rollup-plugin-swc3,rollup-plugin-node-externals", - "prepare": "npm run build" - }, - "dependencies": { - "@swc/core": "^1.3.27", - "rollup": "^3.10.0", - "rollup-plugin-analyzer": "^4.0.0", - "rollup-plugin-delete": "^2.0.0", - "rollup-plugin-dts": "^5.1.1", - "rollup-plugin-multi-input": "^1.3.3", - "rollup-plugin-node-externals": "^5.1.0", - "rollup-plugin-swc3": "^0.8.0", - "rollup-plugin-typescript2": "^0.34.1", - "rollup-plugin-visualizer": "^5.9.0", - "typescript": "^4.9.4" - }, - "devDependencies": { - "@types/node": "^18.11.18", - "@types/rollup-plugin-delete": "^1.0.0" - } -} diff --git a/external/rspc/packages/config/tsconfig.json b/external/rspc/packages/config/tsconfig.json deleted file mode 100644 index 32c37ed..0000000 --- a/external/rspc/packages/config/tsconfig.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "compilerOptions": { - "target": "es2020", - "strict": true, - // "noUnusedLocals": true, // TODO: enable this - // "noUnusedParameters": true, // TODO: enable this - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true, - "noUncheckedIndexedAccess": true, - "strictNullChecks": true, - "moduleResolution": "node", - "esModuleInterop": true, - "baseUrl": "../", - "paths": { - "@rspc/client": ["./client/src"], - "@rspc/client/full": ["./client/src/full"], - "@rspc/react": ["./react/src"], - "@rspc/tauri": ["./tauri/src"] - } - }, - "include": ["./getRollupConfig.ts"] -} diff --git a/external/rspc/packages/react/package.json b/external/rspc/packages/react/package.json deleted file mode 100644 index 03ee73a..0000000 --- a/external/rspc/packages/react/package.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "name": "@rspc/react", - "version": "0.1.2", - "description": "A blazingly fast and easy to use TRPC-like server for Rust.", - "keywords": [], - "author": "Oscar Beaumont", - "license": "MIT", - "main": "dist/index.js", - "types": "dist/index.d.ts", - "exports": { - "./package.json": "./package.json", - ".": { - "types": "./dist/index.d.ts", - "import": "./dist/index.mjs", - "default": "./dist/index.js" - } - }, - "files": [ - "dist" - ], - "scripts": { - "build": "rollup --config rollup.config.ts --configPlugin swc3", - "dev": "pnpm build --watch", - "test": "vitest" - }, - "dependencies": { - "@rspc/client": "workspace:*" - }, - "devDependencies": { - "@rspc/config": "workspace:^0.0.0", - "@tanstack/react-query": "^4.22.0", - "@types/react": "^18.0.26", - "react": "^18.2.0", - "rollup": "^3.10.0", - "typescript": "^4.9.4", - "vitest": "^0.27.2" - }, - "peerDependencies": { - "@tanstack/react-query": "^4.22.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - } -} diff --git a/external/rspc/packages/react/rollup.config.ts b/external/rspc/packages/react/rollup.config.ts deleted file mode 100644 index 7ca7340..0000000 --- a/external/rspc/packages/react/rollup.config.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { buildConfig } from "@rspc/config/getRollupConfig"; - -export default buildConfig("src/index.tsx"); diff --git a/external/rspc/packages/react/src/index.tsx b/external/rspc/packages/react/src/index.tsx deleted file mode 100644 index 3888dbd..0000000 --- a/external/rspc/packages/react/src/index.tsx +++ /dev/null @@ -1,173 +0,0 @@ -import { - RSPCError, - Client, - ClientFilteredProcs, - GetProcedure, - ProcedureKeyTuple, -} from "@rspc/client"; -import { - QueryClientProvider, - useQuery, - useMutation, - hashQueryKey, -} from "@tanstack/react-query"; -import type { - QueryClient, - UseQueryOptions, - UseMutationOptions, -} from "@tanstack/react-query"; -import * as React from "react"; - -export interface BaseOptions> { - rspc?: { - client?: TClient; - abortOnUnmount?: boolean; - }; -} - -export interface SubscriptionOptions { - enabled?: boolean; - onStarted?: () => void; - onData: (data: TOutput) => void; - onError?: (err: RSPCError) => void; -} - -interface Context> { - queryClient: QueryClient; - client: TClient; -} - -export function createRspcReact>() { - const context = React.createContext | null>(null); - - const Provider = ({ - children, - client, - queryClient, - }: React.PropsWithChildren>) => ( - - {children} - - ); - - type FilteredProcs = ClientFilteredProcs; - - type Queries = FilteredProcs["queries"]; - type Query = GetProcedure; - type Mutations = FilteredProcs["mutations"]; - type Mutation = GetProcedure; - type Subscriptions = FilteredProcs["subscriptions"]; - type Subscription = GetProcedure< - Subscriptions, - K - >; - - type TBaseOptions = BaseOptions; - - return { - Provider, - createHooks() { - function useContext() { - const ctx = React.useContext(context); - if (!ctx) - throw new Error( - "The rspc context has not been set. Ensure you have the `` component higher up in your component tree." - ); - return ctx; - } - - return { - useQuery( - keyAndInput: ProcedureKeyTuple>, - opts?: Omit< - UseQueryOptions< - Query["result"], - RSPCError, - Query["result"], - ProcedureKeyTuple> - >, - "queryKey" | "queryFn" - > & - TBaseOptions - ) { - const { rspc, ...rawOpts } = opts ?? {}; - let client = rspc?.client! || useContext().client; - - return useQuery( - keyAndInput, - () => client.query(keyAndInput), - rawOpts - ); - }, - useMutation( - key: K | [K], - opts?: UseMutationOptions< - Mutation["result"], - RSPCError, - Mutation["input"] extends null - ? undefined - : Mutation["input"], - TContext - > & - TBaseOptions - ) { - const { rspc, ...rawOpts } = opts ?? {}; - let client = rspc?.client || useContext().client; - - type Input = Mutation["input"] extends null - ? undefined - : Mutation["input"]; - - return useMutation(async (input: Input) => { - const actualKey = Array.isArray(key) ? key[0] : key; - return client.mutation([actualKey, input] as any); - }, rawOpts); - }, - useSubscription( - keyAndInput: ProcedureKeyTuple>, - opts: SubscriptionOptions["result"]> & TBaseOptions - ) { - const enabled = opts?.enabled ?? true; - const queryKey = hashQueryKey(keyAndInput); - let client = opts.rspc?.client || useContext().client; - - React.useEffect(() => { - if (!enabled) { - return; - } - - let isStopped = false; - - const subscription = client.subscription(keyAndInput, { - onStarted: () => { - if (!isStopped) { - opts.onStarted?.(); - } - }, - onData: (data) => { - if (!isStopped) { - opts.onData(data); - } - }, - onError: (err) => { - if (!isStopped) { - opts.onError?.(err); - } - }, - }); - - return () => { - isStopped = true; - subscription.unsubscribe(); - }; - }, [queryKey, enabled]); - }, - }; - }, - }; -} diff --git a/external/rspc/packages/react/tsconfig.json b/external/rspc/packages/react/tsconfig.json deleted file mode 100644 index ef8feca..0000000 --- a/external/rspc/packages/react/tsconfig.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "@rspc/config/tsconfig.json", - "compilerOptions": { - "jsx": "react-jsx", - "lib": ["esnext", "dom"] - }, - "include": ["src/**/*"], - "exclude": ["dist/**/*"] -} diff --git a/external/rspc/packages/solid/package.json b/external/rspc/packages/solid/package.json deleted file mode 100644 index ac69689..0000000 --- a/external/rspc/packages/solid/package.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "name": "@rspc/solid", - "version": "0.1.2", - "description": "A blazingly fast and easy to use TRPC-like server for Rust.", - "keywords": [], - "author": "Oscar Beaumont", - "license": "MIT", - "source": "src/index.tsx", - "main": "dist/cjs/index.js", - "module": "dist/esm/index.js", - "types": "dist/types/index.d.ts", - "files": [ - "dist" - ], - "exports": { - "./package.json": "./package.json", - ".": { - "solid": "./dist/source/index.jsx", - "import": "./dist/esm/index.js", - "browser": "./dist/esm/index.js", - "require": "./dist/cjs/index.js", - "node": "./dist/cjs/index.js" - } - }, - "scripts": { - "dev": "rollup -c -w", - "build": "rollup -c", - "test": "vitest" - }, - "dependencies": { - "@rspc/client": "workspace:*" - }, - "devDependencies": { - "@rspc/config": "workspace:^0.0.0", - "@tanstack/solid-query": "^4.22.0", - "rollup": "^3.10.0", - "rollup-preset-solid": "^2.0.1", - "solid-js": "^1.6.8", - "typescript": "^4.9.4", - "vitest": "^0.27.2" - }, - "peerDependencies": { - "@tanstack/solid-query": "^4.6.0", - "solid-js": "^1.5.5" - } -} diff --git a/external/rspc/packages/solid/rollup.config.mjs b/external/rspc/packages/solid/rollup.config.mjs deleted file mode 100644 index 290161b..0000000 --- a/external/rspc/packages/solid/rollup.config.mjs +++ /dev/null @@ -1,5 +0,0 @@ -import withSolid from "rollup-preset-solid"; - -export default withSolid({ - targets: ["esm", "cjs"], -}); diff --git a/external/rspc/packages/solid/src/index.tsx b/external/rspc/packages/solid/src/index.tsx deleted file mode 100644 index 24ac774..0000000 --- a/external/rspc/packages/solid/src/index.tsx +++ /dev/null @@ -1,178 +0,0 @@ -import { - RSPCError, - Client, - ClientFilteredProcs, - GetProcedure, - ProcedureKeyTuple, -} from "@rspc/client"; -import { - QueryClient, - CreateQueryOptions, - createQuery, - createMutation, - CreateMutationOptions, - QueryClientProvider, -} from "@tanstack/solid-query"; -import { - JSX, - createContext, - useContext as _useContext, - createEffect, - Accessor, - onCleanup, - splitProps, -} from "solid-js"; - -export interface BaseOptions> { - rspc?: { - client?: TClient; - }; -} - -export interface SubscriptionOptions { - enabled?: boolean; - onStarted?: () => void; - onData: (data: TOutput) => void; - onError?: (err: RSPCError) => void; -} - -interface ContextType> { - queryClient: QueryClient; - client: TClient; -} - -export function createRspcSolid>() { - const Context = createContext | null>(null); - - const Provider = ( - props: ContextType & { - children?: JSX.Element; - } - ) => { - const [ctx, others] = splitProps(props, ["client", "queryClient"]); - console.log("PROVIDER!!!"); - return ( - - - {others.children} - - - ); - }; - - type FilteredProcs = ClientFilteredProcs; - - type Queries = FilteredProcs["queries"]; - type Query = GetProcedure; - type Mutations = FilteredProcs["mutations"]; - type Mutation = GetProcedure; - type Subscriptions = FilteredProcs["subscriptions"]; - type Subscription = GetProcedure< - Subscriptions, - K - >; - - type TBaseOptions = BaseOptions; - - return { - Provider, - createHooks() { - function useContext() { - const ctx = _useContext(Context); - if (!ctx) - throw new Error( - "The rspc context has not been set. Ensure you have the component higher up in your component tree." - ); - return ctx; - } - - return { - createQuery( - keyAndInput: Accessor>>, - opts?: Omit< - CreateQueryOptions< - Query["result"], - RSPCError, - Query["result"] - // opts needs to be typed, and this prevents it - // Accessor>> - >, - "queryKey" | "queryFn" - > & - TBaseOptions - ) { - const { rspc, ...rawOpts } = opts ?? {}; - let client = rspc?.client ?? useContext().client; - - return createQuery( - keyAndInput as any, - () => client.query(keyAndInput()), - rawOpts - ); - }, - createMutation( - key: K | [K], - opts?: CreateMutationOptions< - Mutation["result"], - RSPCError, - Mutation["input"] extends null - ? undefined - : Mutation["input"], - TContext - > & - TBaseOptions - ) { - const { rspc, ...rawOpts } = opts ?? {}; - let client = rspc?.client ?? useContext().client; - - type Input = Mutation["input"] extends null - ? undefined - : Mutation["input"]; - - return createMutation(async (input: Input) => { - const actualKey = Array.isArray(key) ? key[0] : key; - return client.mutation([actualKey, input] as any); - }, rawOpts); - }, - createSubscription( - keyAndInput: Accessor>>, - opts: SubscriptionOptions["result"]> & TBaseOptions - ) { - const enabled = () => opts?.enabled ?? true; - let client = opts.rspc?.client ?? useContext().client; - - createEffect(() => { - if (!enabled()) { - return; - } - - let isStopped = false; - - const subscription = client.subscription(keyAndInput(), { - onStarted: () => { - if (!isStopped) { - opts.onStarted?.(); - } - }, - onData: (data) => { - if (!isStopped) { - opts.onData(data); - } - }, - onError: (err) => { - if (!isStopped) { - opts.onError?.(err); - } - }, - }); - - onCleanup(() => { - isStopped = true; - subscription.unsubscribe(); - }); - }); - }, - }; - }, - }; -} diff --git a/external/rspc/packages/solid/tsconfig.json b/external/rspc/packages/solid/tsconfig.json deleted file mode 100644 index b71f538..0000000 --- a/external/rspc/packages/solid/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "@rspc/config/tsconfig.json", - "compilerOptions": { - "jsx": "preserve", - "jsxImportSource": "solid-js", - "lib": ["esnext", "dom"] - }, - "include": ["src/**/*"], - "exclude": ["dist/**/*"] -} diff --git a/external/rspc/packages/tauri/package.json b/external/rspc/packages/tauri/package.json deleted file mode 100644 index a4c42f2..0000000 --- a/external/rspc/packages/tauri/package.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "name": "@rspc/tauri", - "version": "0.1.2", - "description": "A blazingly fast and easy to use TRPC-like server for Rust.", - "keywords": [], - "author": "Oscar Beaumont", - "license": "MIT", - "main": "dist/index.js", - "types": "dist/index.d.ts", - "exports": { - "./package.json": "./package.json", - ".": { - "types": "./dist/index.d.ts", - "import": "./dist/index.mjs", - "default": "./dist/index.js" - } - }, - "files": [ - "dist" - ], - "scripts": { - "build": "rollup --config rollup.config.ts --configPlugin swc3", - "dev": "pnpm build --watch", - "test": "vitest" - }, - "dependencies": { - "@rspc/client": "workspace:*" - }, - "devDependencies": { - "@rspc/config": "workspace:^0.0.0", - "@tauri-apps/api": "^1.2.0", - "rollup": "^3.10.0", - "typescript": "^4.9.4", - "vitest": "^0.27.2" - }, - "peerDependencies": { - "@tauri-apps/api": "^1.0.2" - } -} diff --git a/external/rspc/packages/tauri/rollup.config.ts b/external/rspc/packages/tauri/rollup.config.ts deleted file mode 100644 index 4ac29de..0000000 --- a/external/rspc/packages/tauri/rollup.config.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { buildConfig } from "@rspc/config/getRollupConfig"; - -export default buildConfig("src/index.ts"); diff --git a/external/rspc/packages/tauri/src/index.ts b/external/rspc/packages/tauri/src/index.ts deleted file mode 100644 index 1442ced..0000000 --- a/external/rspc/packages/tauri/src/index.ts +++ /dev/null @@ -1,132 +0,0 @@ -import { - Operation, - ProcedureType, - TRPCClientOutgoingMessage, - UnsubscribeFn, - TRPCRequestMessage, - TRPCWebSocketClient, - ProceduresDef, - TRPCLink, - wsLink, -} from "@rspc/client"; -import { listen } from "@tauri-apps/api/event"; -import { appWindow } from "@tauri-apps/api/window"; - -type TCallbacks = any; // TODO - -export function tauriLink< - TProcedures extends ProceduresDef ->(): TRPCLink { - return wsLink({ - client: createTauriClient(), - }); -} - -export function createTauriClient(): TRPCWebSocketClient { - /** - * outgoing messages buffer whilst not open - */ - let outgoing: TRPCClientOutgoingMessage[] = []; - /** - * pending outgoing requests that are awaiting callback - */ - type TRequest = { - /** - * Reference to the WebSocket instance this request was made to - */ - ws: WebSocket; - type: ProcedureType; - callbacks: TCallbacks; - op: Operation; - }; - const pendingRequests: Record = - Object.create(null); - let dispatchTimer: ReturnType | number | null = null; - let state: "open" | "closed" = "open"; - - function dispatch() { - if (state !== "open" || dispatchTimer) { - return; - } - dispatchTimer = setTimeout(() => { - dispatchTimer = null; - - if (outgoing.length === 0) { - return; - } - - if (outgoing.length === 1) { - // single send - appWindow.emit("plugin:rspc:transport", JSON.stringify(outgoing.pop())); - } else { - // batch send - appWindow.emit("plugin:rspc:transport", JSON.stringify(outgoing)); - } - // clear - outgoing = []; - }); - } - - listen("plugin:rspc:transport:resp", (event) => { - const data = event.payload as any; - if ("method" in data) { - } else { - const req = data.id !== null && pendingRequests[data.id]; - if (!req) { - // do something? - return; - } - req.callbacks.next?.(data); - if ("result" in data && data.result.type === "stopped") { - req.callbacks.complete(); - } - } - }).then(() => { - state = "open"; - dispatch(); - }); - - function request(op: Operation, callbacks: TCallbacks): UnsubscribeFn { - const { type, input, path, id } = op; - const envelope: TRPCRequestMessage = { - id, - method: type, - params: { - input, - path, - }, - }; - pendingRequests[id] = { - ws: undefined as any, // TODO: Remove this field - type, - callbacks, - op, - }; - // enqueue message - outgoing.push(envelope); - dispatch(); - return () => { - const callbacks = pendingRequests[id]?.callbacks; - delete pendingRequests[id]; - outgoing = outgoing.filter((msg) => msg.id !== id); - callbacks?.complete?.(); - if (op.type === "subscription") { - outgoing.push({ - id, - method: "subscriptionStop", - }); - dispatch(); - } - }; - } - - return { - close: () => { - state = "closed"; - // TODO: Close all open subscriptions - // closeIfNoPending(activeConnection); - // TODO - }, - request, - }; -} diff --git a/external/rspc/packages/tauri/tsconfig.json b/external/rspc/packages/tauri/tsconfig.json deleted file mode 100644 index ed51a0f..0000000 --- a/external/rspc/packages/tauri/tsconfig.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "@rspc/config/tsconfig.json", - "compilerOptions": { - "lib": ["esnext", "dom"] - }, - "include": ["src/**/*"], - "exclude": ["dist/**/*"] -} diff --git a/external/rspc/packages/vscode/.vscodeignore b/external/rspc/packages/vscode/.vscodeignore deleted file mode 100644 index f369b5e..0000000 --- a/external/rspc/packages/vscode/.vscodeignore +++ /dev/null @@ -1,4 +0,0 @@ -.vscode/** -.vscode-test/** -.gitignore -vsc-extension-quickstart.md diff --git a/external/rspc/packages/vscode/LICENSE b/external/rspc/packages/vscode/LICENSE deleted file mode 100644 index 6d135f3..0000000 --- a/external/rspc/packages/vscode/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2022 Oscar Beaumont - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/external/rspc/packages/vscode/logo.png b/external/rspc/packages/vscode/logo.png deleted file mode 100644 index 96fa1b8..0000000 Binary files a/external/rspc/packages/vscode/logo.png and /dev/null differ diff --git a/external/rspc/packages/vscode/package.json b/external/rspc/packages/vscode/package.json deleted file mode 100644 index 28b1bc8..0000000 --- a/external/rspc/packages/vscode/package.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "name": "rspc-vscode", - "displayName": "rspc", - "description": "A collection of snippets to make rspc's developer experience better.", - "publisher": "oscartbeaumont", - "repository": { - "type": "git", - "url": "https://github.com/oscartbeaumont/rspc.git" - }, - "icon": "logo.png", - "version": "0.0.1", - "engines": { - "vscode": "^1.70.0" - }, - "categories": [ - "Snippets" - ], - "keywords": [ - "rspc", - "rust" - ], - "contributes": { - "snippets": [ - { - "language": "rust", - "path": "./snippets/rust.code-snippets" - } - ] - } -} diff --git a/external/rspc/packages/vscode/snippets/rust.code-snippets b/external/rspc/packages/vscode/snippets/rust.code-snippets deleted file mode 100644 index d6d313c..0000000 --- a/external/rspc/packages/vscode/snippets/rust.code-snippets +++ /dev/null @@ -1,60 +0,0 @@ -{ - "rspc query": { - "prefix": ".q", - "body": [ - ".query(\"$1\", |t| t(|ctx, _: ()| async move { ${2:\"Hello World\"} }))" - ], - "description": "Create a rspc query with the `t(...)` syntax" - }, - "rspc synchronous query": { - "prefix": ".qs", - "body": [".query(\"$1\", |t| t(|ctx, _: ()| ${2:\"Hello World\"}))"], - "description": "Create a synchronous rspc query with the `t(...)` syntax" - }, - "rspc full query": { - "prefix": ".qf", - "body": [ - ".query(\"$1\", |t| {", - "\tt.resolver(|ctx, _: ()| async move { ${2:\"Hello World\"} })", - "})" - ], - "description": "Create a rspc query with the `t.resolver(...)` syntax" - }, - "rspc mutation": { - "prefix": ".m", - "body": [ - ".mutation(\"$1\", |t| t(|ctx, _: ()| async move { ${2:\"Hello World\"} }))" - ], - "description": "Create a rspc mutation with the `t(...)` syntax" - }, - "rspc synchronous mutation": { - "prefix": ".ms", - "body": [".mutation(\"$1\", |t| t(|ctx, _: ()| ${2:\"Hello World\"}))"], - "description": "Create a synchronous rspc mutation with the `t(...)` syntax" - }, - "rspc full mutation": { - "prefix": ".mf", - "body": [ - ".mutation(\"$1\", |t| {", - "\tt.resolver(|ctx, _: ()| async move { ${2:\"Hello World\"} })", - "})" - ], - "description": "Create a rspc mutation with the `t.resolver(...)` syntax" - }, - "rspc subscription": { - "prefix": ".s", - "body": [ - ".subscription(\"$1\", |t| t(|ctx, _: ()| stream! { yield ${2:\"Hello World\"} }))" - ], - "description": "Create a rspc subscription with the `t(...)` syntax" - }, - "rspc full subscription": { - "prefix": ".sf", - "body": [ - ".subscription(\"$1\", |t| {", - "\tt.resolver(|ctx, _: ()| stream! { yield ${2:\"Hello World\"} })", - "})" - ], - "description": "Create a rspc subscription with the `t.resolver(...)` syntax" - } -} diff --git a/external/rspc/pnpm-lock.yaml b/external/rspc/pnpm-lock.yaml deleted file mode 100644 index 0d6ae5e..0000000 --- a/external/rspc/pnpm-lock.yaml +++ /dev/null @@ -1,6606 +0,0 @@ -lockfileVersion: 5.4 - -importers: - - .: - specifiers: {} - - docs: - specifiers: - '@astrojs/sitemap': ^1.0.0 - '@astrojs/solid-js': ^1.2.3 - '@astrojs/tailwind': ^2.1.3 - '@tailwindcss/typography': ^0.5.9 - astro: 1.9.2 - astro-compress: ^1.1.25 - astro-icon: ^0.8.0 - astro-spa: ^1.3.9 - clsx: ^1.2.1 - morphdom: ^2.6.1 - node-html-parser: ^6.1.4 - rehype-external-links: ^2.0.1 - solid-js: ^1.6.8 - svgo: ^3.0.2 - tailwind-scrollbar: 2.1.0 - tailwindcss: ^3.2.4 - dependencies: - astro-spa: 1.3.9 - clsx: 1.2.1 - morphdom: 2.6.1 - solid-js: 1.6.8 - devDependencies: - '@astrojs/sitemap': 1.0.0 - '@astrojs/solid-js': 1.2.3_solid-js@1.6.8 - '@astrojs/tailwind': 2.1.3_tailwindcss@3.2.4 - '@tailwindcss/typography': 0.5.9_tailwindcss@3.2.4 - astro: 1.9.2 - astro-compress: 1.1.25 - astro-icon: 0.8.0 - node-html-parser: 6.1.4 - rehype-external-links: 2.0.1 - svgo: 3.0.2 - tailwind-scrollbar: 2.1.0_tailwindcss@3.2.4 - tailwindcss: 3.2.4 - - examples/astro: - specifiers: - '@astrojs/react': ^1.2.2 - '@astrojs/solid-js': ^1.2.3 - '@rspc/client': workspace:* - '@rspc/config': workspace:^0.0.0 - '@rspc/react': workspace:* - '@rspc/solid': workspace:* - '@tanstack/react-query': ^4.22.0 - '@tanstack/solid-query': ^4.22.0 - '@types/react': ^18.0.26 - astro: 1.9.2 - react: ^18.2.0 - react-dom: ^18.2.0 - solid-js: ^1.6.8 - dependencies: - '@rspc/client': link:../../packages/client - '@rspc/react': link:../../packages/react - '@rspc/solid': link:../../packages/solid - '@tanstack/react-query': 4.22.0_biqbaboplfbrettd7655fr4n2y - '@tanstack/solid-query': 4.22.0_solid-js@1.6.8 - astro: 1.9.2 - react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 - solid-js: 1.6.8 - devDependencies: - '@astrojs/react': 1.2.2_ib3m5ricvtkl2cll7qpr2f6lvq - '@astrojs/solid-js': 1.2.3_solid-js@1.6.8 - '@rspc/config': link:../../packages/config - '@types/react': 18.0.26 - - examples/nextjs: - specifiers: - '@rspc/client': workspace:* - '@rspc/react': workspace:* - '@tanstack/react-query': ^4.22.0 - '@types/node': ^18.11.18 - '@types/react': ^18.0.26 - '@types/react-dom': ^18.0.10 - next: ^13.1.1 - react: ^18.2.0 - react-dom: ^18.2.0 - typescript: ^4.9.4 - dependencies: - '@rspc/client': link:../../packages/client - '@rspc/react': link:../../packages/react - '@tanstack/react-query': 4.22.0_biqbaboplfbrettd7655fr4n2y - next: 13.1.1_biqbaboplfbrettd7655fr4n2y - react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 - devDependencies: - '@types/node': 18.11.18 - '@types/react': 18.0.26 - '@types/react-dom': 18.0.10 - typescript: 4.9.4 - - packages/client: - specifiers: - '@rspc/config': workspace:* - rollup: ^3.10.0 - typescript: ^4.9.4 - vitest: ^0.27.2 - devDependencies: - '@rspc/config': link:../config - rollup: 3.10.0 - typescript: 4.9.4 - vitest: 0.27.2 - - packages/config: - specifiers: - '@swc/core': ^1.3.27 - '@types/node': ^18.11.18 - '@types/rollup-plugin-delete': ^1.0.0 - rollup: ^3.10.0 - rollup-plugin-analyzer: ^4.0.0 - rollup-plugin-delete: ^2.0.0 - rollup-plugin-dts: ^5.1.1 - rollup-plugin-multi-input: ^1.3.3 - rollup-plugin-node-externals: ^5.1.0 - rollup-plugin-swc3: ^0.8.0 - rollup-plugin-typescript2: ^0.34.1 - rollup-plugin-visualizer: ^5.9.0 - typescript: ^4.9.4 - dependencies: - '@swc/core': 1.3.27 - rollup: 3.10.0 - rollup-plugin-analyzer: 4.0.0 - rollup-plugin-delete: 2.0.0 - rollup-plugin-dts: 5.1.1_eymahajmafh3u7vrzmo7ylp2pa - rollup-plugin-multi-input: 1.3.3 - rollup-plugin-node-externals: 5.1.0_rollup@3.10.0 - rollup-plugin-swc3: 0.8.0_zlsyfn7h5mqntbbpmgh5b3ythu - rollup-plugin-typescript2: 0.34.1_eymahajmafh3u7vrzmo7ylp2pa - rollup-plugin-visualizer: 5.9.0_rollup@3.10.0 - typescript: 4.9.4 - devDependencies: - '@types/node': 18.11.18 - '@types/rollup-plugin-delete': 1.0.0 - - packages/react: - specifiers: - '@rspc/client': workspace:* - '@rspc/config': workspace:^0.0.0 - '@tanstack/react-query': ^4.22.0 - '@types/react': ^18.0.26 - react: ^18.2.0 - rollup: ^3.10.0 - typescript: ^4.9.4 - vitest: ^0.27.2 - dependencies: - '@rspc/client': link:../client - devDependencies: - '@rspc/config': link:../config - '@tanstack/react-query': 4.22.0_react@18.2.0 - '@types/react': 18.0.26 - react: 18.2.0 - rollup: 3.10.0 - typescript: 4.9.4 - vitest: 0.27.2 - - packages/solid: - specifiers: - '@rspc/client': workspace:* - '@rspc/config': workspace:^0.0.0 - '@tanstack/solid-query': ^4.22.0 - rollup: ^3.10.0 - rollup-preset-solid: ^2.0.1 - solid-js: ^1.6.8 - typescript: ^4.9.4 - vitest: ^0.27.2 - dependencies: - '@rspc/client': link:../client - devDependencies: - '@rspc/config': link:../config - '@tanstack/solid-query': 4.22.0_solid-js@1.6.8 - rollup: 3.10.0 - rollup-preset-solid: 2.0.1 - solid-js: 1.6.8 - typescript: 4.9.4 - vitest: 0.27.2 - - packages/tauri: - specifiers: - '@rspc/client': workspace:* - '@rspc/config': workspace:^0.0.0 - '@tauri-apps/api': ^1.2.0 - rollup: ^3.10.0 - typescript: ^4.9.4 - vitest: ^0.27.2 - dependencies: - '@rspc/client': link:../client - devDependencies: - '@rspc/config': link:../config - '@tauri-apps/api': 1.2.0 - rollup: 3.10.0 - typescript: 4.9.4 - vitest: 0.27.2 - - packages/vscode: - specifiers: {} - -packages: - - /@ampproject/remapping/2.2.0: - resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/gen-mapping': 0.1.1 - '@jridgewell/trace-mapping': 0.3.17 - - /@astrojs/compiler/0.31.4: - resolution: {integrity: sha512-6bBFeDTtPOn4jZaiD3p0f05MEGQL9pw2Zbfj546oFETNmjJFWO3nzHz6/m+P53calknCvyVzZ5YhoBLIvzn5iw==} - - /@astrojs/language-server/0.28.3: - resolution: {integrity: sha512-fPovAX/X46eE2w03jNRMpQ7W9m2mAvNt4Ay65lD9wl1Z5vIQYxlg7Enp9qP225muTr4jSVB5QiLumFJmZMAaVA==} - hasBin: true - dependencies: - '@vscode/emmet-helper': 2.8.6 - events: 3.3.0 - prettier: 2.8.2 - prettier-plugin-astro: 0.7.2 - source-map: 0.7.4 - vscode-css-languageservice: 6.2.1 - vscode-html-languageservice: 5.0.3 - vscode-languageserver: 8.0.2 - vscode-languageserver-protocol: 3.17.2 - vscode-languageserver-textdocument: 1.0.8 - vscode-languageserver-types: 3.17.2 - vscode-uri: 3.0.7 - - /@astrojs/markdown-remark/1.2.0: - resolution: {integrity: sha512-Cb+uhSuukyfERknfJ8K4iJLeKJaiZWi1BTwPS4fzw0bc9kGKe5VeTRzd2E25+vaMnRTk0tN/y6QfYEMMN3Q97g==} - dependencies: - '@astrojs/micromark-extension-mdx-jsx': 1.0.3 - '@astrojs/prism': 1.0.2 - acorn: 8.8.1 - acorn-jsx: 5.3.2_acorn@8.8.1 - github-slugger: 1.5.0 - hast-util-to-html: 8.0.4 - import-meta-resolve: 2.2.1 - mdast-util-from-markdown: 1.2.0 - mdast-util-mdx-expression: 1.3.1 - mdast-util-mdx-jsx: 1.2.0 - micromark-extension-mdx-expression: 1.0.3 - micromark-extension-mdx-md: 1.0.0 - micromark-util-combine-extensions: 1.0.0 - rehype-raw: 6.1.1 - rehype-stringify: 9.0.3 - remark-gfm: 3.0.1 - remark-parse: 10.0.1 - remark-rehype: 10.1.0 - remark-smartypants: 2.0.0 - shiki: 0.11.1 - unified: 10.1.2 - unist-util-map: 3.1.2 - unist-util-visit: 4.1.1 - vfile: 5.3.6 - transitivePeerDependencies: - - supports-color - - /@astrojs/micromark-extension-mdx-jsx/1.0.3: - resolution: {integrity: sha512-O15+i2DGG0qb1R/1SYbFXgOKDGbYdV8iJMtuboVb1S9YFQfMOJxaCMco0bhXQI7PmZcQ4pZWIjT5oZ64dXUtRA==} - dependencies: - '@types/acorn': 4.0.6 - estree-util-is-identifier-name: 2.0.1 - micromark-factory-mdx-expression: 1.0.6 - micromark-factory-space: 1.0.0 - micromark-util-character: 1.1.0 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 - uvu: 0.5.6 - vfile-message: 3.1.3 - - /@astrojs/prism/1.0.2: - resolution: {integrity: sha512-o3cUVoAuALDqdN5puNlsN2eO4Yi1kDh68YO8V7o6U4Ts+J/mMayzlJ7JsgYAmob0xrf/XnADVgu8khfMv/w3uA==} - engines: {node: ^14.18.0 || >=16.12.0} - dependencies: - prismjs: 1.29.0 - - /@astrojs/react/1.2.2_ib3m5ricvtkl2cll7qpr2f6lvq: - resolution: {integrity: sha512-ab9fYvzkC74J7N+M3DWQuZgwu7sYjW0aLO3sEAdCX/jZZz+0BhrqS8m9QjtGJyQK/niF4tgJjpPfadopxKc56g==} - engines: {node: ^14.18.0 || >=16.12.0} - peerDependencies: - '@types/react': ^17.0.50 || ^18.0.21 - '@types/react-dom': ^17.0.17 || ^18.0.6 - react: ^17.0.2 || ^18.0.0 - react-dom: ^17.0.2 || ^18.0.0 - dependencies: - '@babel/core': 7.20.12 - '@babel/plugin-transform-react-jsx': 7.20.7_@babel+core@7.20.12 - '@types/react': 18.0.26 - react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@astrojs/sitemap/1.0.0: - resolution: {integrity: sha512-42GxuF5FP7RaKXZrwGLBLOX3hPv+Wl7ExJC43O0J5e34ojJkLeKf7QfwN1UwrJlqH0Ywi0Fm4/xGe482G09+wg==} - dependencies: - sitemap: 7.1.1 - zod: 3.20.2 - dev: true - - /@astrojs/solid-js/1.2.3_solid-js@1.6.8: - resolution: {integrity: sha512-YyWQVcIeUMGKTnK3myXmBrG6dfYL5qiQNn8fv50jV0nPgahLeSUTIVxtt5WtqmbFr5kGTwDyk63TZoUvCUWJXA==} - engines: {node: ^14.18.0 || >=16.12.0} - peerDependencies: - solid-js: ^1.4.3 - dependencies: - babel-preset-solid: 1.6.7 - solid-js: 1.6.8 - vitefu: 0.2.4 - transitivePeerDependencies: - - '@babel/core' - - vite - dev: true - - /@astrojs/tailwind/2.1.3_tailwindcss@3.2.4: - resolution: {integrity: sha512-W7UUUBJ3itDGcvJPvk+M/eNKFlLBYGODIzPsJ3zuehNzcJDhv/Ues+TzrpSvd0FaKfmV9Zlq3ZtToy96xxJU6Q==} - peerDependencies: - tailwindcss: ^3.0.24 - dependencies: - '@proload/core': 0.3.3 - autoprefixer: 10.4.13_postcss@8.4.21 - postcss: 8.4.21 - tailwindcss: 3.2.4 - dev: true - - /@astrojs/telemetry/1.0.1: - resolution: {integrity: sha512-SJVfZHp00f8VZsT1fsx1+6acJGUNt/84xZytV5znPzzNE8RXjlE0rv03llgTsEeUHYZc6uJah91jNojS7RldFg==} - engines: {node: ^14.18.0 || >=16.12.0} - dependencies: - ci-info: 3.7.1 - debug: 4.3.4 - dlv: 1.1.3 - dset: 3.1.2 - is-docker: 3.0.0 - is-wsl: 2.2.0 - node-fetch: 3.3.0 - which-pm-runs: 1.1.0 - transitivePeerDependencies: - - supports-color - - /@astrojs/webapi/1.1.1: - resolution: {integrity: sha512-yeUvP27PoiBK/WCxyQzC4HLYZo4Hg6dzRd/dTsL50WGlAQVCwWcqzVJrIZKvzNDNaW/fIXutZTmdj6nec0PIGg==} - dependencies: - global-agent: 3.0.0 - node-fetch: 3.3.0 - - /@babel/code-frame/7.18.6: - resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/highlight': 7.18.6 - - /@babel/compat-data/7.20.10: - resolution: {integrity: sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg==} - engines: {node: '>=6.9.0'} - - /@babel/core/7.20.12: - resolution: {integrity: sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==} - engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.2.0 - '@babel/code-frame': 7.18.6 - '@babel/generator': 7.20.7 - '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.12 - '@babel/helper-module-transforms': 7.20.11 - '@babel/helpers': 7.20.7 - '@babel/parser': 7.20.7 - '@babel/template': 7.20.7 - '@babel/traverse': 7.20.12 - '@babel/types': 7.20.7 - convert-source-map: 1.9.0 - debug: 4.3.4 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - - /@babel/generator/7.20.7: - resolution: {integrity: sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.20.7 - '@jridgewell/gen-mapping': 0.3.2 - jsesc: 2.5.2 - - /@babel/helper-annotate-as-pure/7.18.6: - resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.20.7 - - /@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.20.7 - dev: true - - /@babel/helper-compilation-targets/7.20.7_@babel+core@7.20.12: - resolution: {integrity: sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/compat-data': 7.20.10 - '@babel/core': 7.20.12 - '@babel/helper-validator-option': 7.18.6 - browserslist: 4.21.4 - lru-cache: 5.1.1 - semver: 6.3.0 - - /@babel/helper-create-class-features-plugin/7.20.12_@babel+core@7.20.12: - resolution: {integrity: sha512-9OunRkbT0JQcednL0UFvbfXpAsUXiGjUk0a7sN8fUXX7Mue79cUSMjHGDRRi/Vz9vYlpIhLV5fMD5dKoMhhsNQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.19.0 - '@babel/helper-member-expression-to-functions': 7.20.7 - '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/helper-replace-supers': 7.20.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 - '@babel/helper-split-export-declaration': 7.18.6 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/helper-create-regexp-features-plugin/7.20.5_@babel+core@7.20.12: - resolution: {integrity: sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-annotate-as-pure': 7.18.6 - regexpu-core: 5.2.2 - dev: true - - /@babel/helper-define-polyfill-provider/0.3.3_@babel+core@7.20.12: - resolution: {integrity: sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==} - peerDependencies: - '@babel/core': ^7.4.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - debug: 4.3.4 - lodash.debounce: 4.0.8 - resolve: 1.22.1 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/helper-environment-visitor/7.18.9: - resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} - engines: {node: '>=6.9.0'} - - /@babel/helper-explode-assignable-expression/7.18.6: - resolution: {integrity: sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.20.7 - dev: true - - /@babel/helper-function-name/7.19.0: - resolution: {integrity: sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.20.7 - '@babel/types': 7.20.7 - - /@babel/helper-hoist-variables/7.18.6: - resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.20.7 - - /@babel/helper-member-expression-to-functions/7.20.7: - resolution: {integrity: sha512-9J0CxJLq315fEdi4s7xK5TQaNYjZw+nDVpVqr1axNGKzdrdwYBD5b4uKv3n75aABG0rCCTK8Im8Ww7eYfMrZgw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.20.7 - dev: true - - /@babel/helper-module-imports/7.18.6: - resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.20.7 - - /@babel/helper-module-transforms/7.20.11: - resolution: {integrity: sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==} - 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.20.2 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/helper-validator-identifier': 7.19.1 - '@babel/template': 7.20.7 - '@babel/traverse': 7.20.12 - '@babel/types': 7.20.7 - transitivePeerDependencies: - - supports-color - - /@babel/helper-optimise-call-expression/7.18.6: - resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.20.7 - dev: true - - /@babel/helper-plugin-utils/7.20.2: - resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==} - engines: {node: '>=6.9.0'} - - /@babel/helper-remap-async-to-generator/7.18.9_@babel+core@7.20.12: - resolution: {integrity: sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-wrap-function': 7.20.5 - '@babel/types': 7.20.7 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/helper-replace-supers/7.20.7: - resolution: {integrity: sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-member-expression-to-functions': 7.20.7 - '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/template': 7.20.7 - '@babel/traverse': 7.20.12 - '@babel/types': 7.20.7 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/helper-simple-access/7.20.2: - resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.20.7 - - /@babel/helper-skip-transparent-expression-wrappers/7.20.0: - resolution: {integrity: sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.20.7 - dev: true - - /@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.20.7 - - /@babel/helper-string-parser/7.19.4: - resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} - engines: {node: '>=6.9.0'} - - /@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.20.5: - resolution: {integrity: sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-function-name': 7.19.0 - '@babel/template': 7.20.7 - '@babel/traverse': 7.20.12 - '@babel/types': 7.20.7 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/helpers/7.20.7: - resolution: {integrity: sha512-PBPjs5BppzsGaxHQCDKnZ6Gd9s6xl8bBCluz3vEInLGRJmnZan4F6BYCeqtyXqkk4W5IlPmjK4JlOuZkpJ3xZA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.20.7 - '@babel/traverse': 7.20.12 - '@babel/types': 7.20.7 - transitivePeerDependencies: - - supports-color - - /@babel/highlight/7.18.6: - resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.19.1 - chalk: 2.4.2 - js-tokens: 4.0.0 - - /@babel/parser/7.20.7: - resolution: {integrity: sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.20.7 - - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.20.7_@babel+core@7.20.12: - resolution: {integrity: sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.13.0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 - '@babel/plugin-proposal-optional-chaining': 7.20.7_@babel+core@7.20.12 - dev: true - - /@babel/plugin-proposal-async-generator-functions/7.20.7_@babel+core@7.20.12: - resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.20.12 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.20.12 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-proposal-class-properties/7.18.6_@babel+core@7.20.12: - 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.20.12 - '@babel/helper-create-class-features-plugin': 7.20.12_@babel+core@7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-proposal-class-static-block/7.20.7_@babel+core@7.20.12: - resolution: {integrity: sha512-AveGOoi9DAjUYYuUAG//Ig69GlazLnoyzMw68VCDux+c1tsnnH/OkYcpz/5xzMkEFC6UxjR5Gw1c+iY2wOGVeQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.12.0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-create-class-features-plugin': 7.20.12_@babel+core@7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.20.12 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-proposal-dynamic-import/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.20.12 - dev: true - - /@babel/plugin-proposal-export-namespace-from/7.18.9_@babel+core@7.20.12: - resolution: {integrity: sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.20.12 - dev: true - - /@babel/plugin-proposal-json-strings/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.20.12 - dev: true - - /@babel/plugin-proposal-logical-assignment-operators/7.20.7_@babel+core@7.20.12: - resolution: {integrity: sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.20.12 - dev: true - - /@babel/plugin-proposal-nullish-coalescing-operator/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.20.12 - dev: true - - /@babel/plugin-proposal-numeric-separator/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.20.12 - dev: true - - /@babel/plugin-proposal-object-rest-spread/7.20.7_@babel+core@7.20.12: - resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.20.10 - '@babel/core': 7.20.12 - '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-transform-parameters': 7.20.7_@babel+core@7.20.12 - dev: true - - /@babel/plugin-proposal-optional-catch-binding/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.20.12 - dev: true - - /@babel/plugin-proposal-optional-chaining/7.20.7_@babel+core@7.20.12: - resolution: {integrity: sha512-T+A7b1kfjtRM51ssoOfS1+wbyCVqorfyZhT99TvxxLMirPShD8CzKMRepMlCBGM5RpHMbn8s+5MMHnPstJH6mQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.20.12 - dev: true - - /@babel/plugin-proposal-private-methods/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-create-class-features-plugin': 7.20.12_@babel+core@7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-proposal-private-property-in-object/7.20.5_@babel+core@7.20.12: - resolution: {integrity: sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-create-class-features-plugin': 7.20.12_@babel+core@7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.20.12 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-proposal-unicode-property-regex/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} - engines: {node: '>=4'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-create-regexp-features-plugin': 7.20.5_@babel+core@7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.20.12: - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.20.12: - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-class-static-block/7.14.5_@babel+core@7.20.12: - resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.20.12: - resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-export-namespace-from/7.8.3_@babel+core@7.20.12: - resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-import-assertions/7.20.0_@babel+core@7.20.12: - resolution: {integrity: sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.20.12: - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-jsx/7.18.6: - resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - - /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.20.12: - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.20.12: - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.20.12: - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.20.12: - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.20.12: - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.20.12: - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-private-property-in-object/7.14.5_@babel+core@7.20.12: - resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.20.12: - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-typescript/7.20.0_@babel+core@7.20.12: - resolution: {integrity: sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-transform-arrow-functions/7.20.7_@babel+core@7.20.12: - resolution: {integrity: sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-transform-async-to-generator/7.20.7_@babel+core@7.20.12: - resolution: {integrity: sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-module-imports': 7.18.6 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.20.12 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-transform-block-scoped-functions/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-transform-block-scoping/7.20.11_@babel+core@7.20.12: - resolution: {integrity: sha512-tA4N427a7fjf1P0/2I4ScsHGc5jcHPbb30xMbaTke2gxDuWpUfXDuX1FEymJwKk4tuGUvGcejAR6HdZVqmmPyw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-transform-classes/7.20.7_@babel+core@7.20.12: - resolution: {integrity: sha512-LWYbsiXTPKl+oBlXUGlwNlJZetXD5Am+CyBdqhPsDVjM9Jc8jwBJFrKhHf900Kfk2eZG1y9MAG3UNajol7A4VQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.12 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.19.0 - '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-replace-supers': 7.20.7 - '@babel/helper-split-export-declaration': 7.18.6 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-transform-computed-properties/7.20.7_@babel+core@7.20.12: - resolution: {integrity: sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/template': 7.20.7 - dev: true - - /@babel/plugin-transform-destructuring/7.20.7_@babel+core@7.20.12: - resolution: {integrity: sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-transform-dotall-regex/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-create-regexp-features-plugin': 7.20.5_@babel+core@7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-transform-duplicate-keys/7.18.9_@babel+core@7.20.12: - resolution: {integrity: sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-transform-exponentiation-operator/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.18.9 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-transform-for-of/7.18.8_@babel+core@7.20.12: - resolution: {integrity: sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-transform-function-name/7.18.9_@babel+core@7.20.12: - resolution: {integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.12 - '@babel/helper-function-name': 7.19.0 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-transform-literals/7.18.9_@babel+core@7.20.12: - resolution: {integrity: sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-transform-member-expression-literals/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-transform-modules-amd/7.20.11_@babel+core@7.20.12: - resolution: {integrity: sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-module-transforms': 7.20.11 - '@babel/helper-plugin-utils': 7.20.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-transform-modules-commonjs/7.20.11_@babel+core@7.20.12: - resolution: {integrity: sha512-S8e1f7WQ7cimJQ51JkAaDrEtohVEitXjgCGAS2N8S31Y42E+kWwfSz83LYz57QdBm7q9diARVqanIaH2oVgQnw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-module-transforms': 7.20.11 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-simple-access': 7.20.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-transform-modules-systemjs/7.20.11_@babel+core@7.20.12: - resolution: {integrity: sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-module-transforms': 7.20.11 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-validator-identifier': 7.19.1 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-transform-modules-umd/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-module-transforms': 7.20.11 - '@babel/helper-plugin-utils': 7.20.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-transform-named-capturing-groups-regex/7.20.5_@babel+core@7.20.12: - resolution: {integrity: sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-create-regexp-features-plugin': 7.20.5_@babel+core@7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-transform-new-target/7.18.6_@babel+core@7.20.12: - 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.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-transform-object-super/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-replace-supers': 7.20.7 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-transform-parameters/7.20.7_@babel+core@7.20.12: - resolution: {integrity: sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-transform-property-literals/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-transform-react-jsx/7.20.7_@babel+core@7.20.12: - resolution: {integrity: sha512-Tfq7qqD+tRj3EoDhY00nn2uP2hsRxgYGi5mLQ5TimKav0a9Lrpd4deE+fcLXU8zFYRjlKPHZhpCvfEA6qnBxqQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-module-imports': 7.18.6 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.20.12 - '@babel/types': 7.20.7 - - /@babel/plugin-transform-regenerator/7.20.5_@babel+core@7.20.12: - resolution: {integrity: sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - regenerator-transform: 0.15.1 - dev: true - - /@babel/plugin-transform-reserved-words/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-transform-shorthand-properties/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-transform-spread/7.20.7_@babel+core@7.20.12: - resolution: {integrity: sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 - dev: true - - /@babel/plugin-transform-sticky-regex/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-transform-template-literals/7.18.9_@babel+core@7.20.12: - resolution: {integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-transform-typeof-symbol/7.18.9_@babel+core@7.20.12: - resolution: {integrity: sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-transform-typescript/7.20.7_@babel+core@7.20.12: - resolution: {integrity: sha512-m3wVKEvf6SoszD8pu4NZz3PvfKRCMgk6D6d0Qi9hNnlM5M6CFS92EgF4EiHVLKbU0r/r7ty1hg7NPZwE7WRbYw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-create-class-features-plugin': 7.20.12_@babel+core@7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-typescript': 7.20.0_@babel+core@7.20.12 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-transform-unicode-escapes/7.18.10_@babel+core@7.20.12: - 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.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-transform-unicode-regex/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-create-regexp-features-plugin': 7.20.5_@babel+core@7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/preset-env/7.20.2_@babel+core@7.20.12: - resolution: {integrity: sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.20.10 - '@babel/core': 7.20.12 - '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-validator-option': 7.18.6 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.20.7_@babel+core@7.20.12 - '@babel/plugin-proposal-async-generator-functions': 7.20.7_@babel+core@7.20.12 - '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-class-static-block': 7.20.7_@babel+core@7.20.12 - '@babel/plugin-proposal-dynamic-import': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-export-namespace-from': 7.18.9_@babel+core@7.20.12 - '@babel/plugin-proposal-json-strings': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-logical-assignment-operators': 7.20.7_@babel+core@7.20.12 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-numeric-separator': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-object-rest-spread': 7.20.7_@babel+core@7.20.12 - '@babel/plugin-proposal-optional-catch-binding': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-optional-chaining': 7.20.7_@babel+core@7.20.12 - '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-private-property-in-object': 7.20.5_@babel+core@7.20.12 - '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.20.12 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.20.12 - '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.20.12 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-import-assertions': 7.20.0_@babel+core@7.20.12 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.20.12 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.20.12 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.20.12 - '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.20.12 - '@babel/plugin-transform-arrow-functions': 7.20.7_@babel+core@7.20.12 - '@babel/plugin-transform-async-to-generator': 7.20.7_@babel+core@7.20.12 - '@babel/plugin-transform-block-scoped-functions': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-block-scoping': 7.20.11_@babel+core@7.20.12 - '@babel/plugin-transform-classes': 7.20.7_@babel+core@7.20.12 - '@babel/plugin-transform-computed-properties': 7.20.7_@babel+core@7.20.12 - '@babel/plugin-transform-destructuring': 7.20.7_@babel+core@7.20.12 - '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-duplicate-keys': 7.18.9_@babel+core@7.20.12 - '@babel/plugin-transform-exponentiation-operator': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-for-of': 7.18.8_@babel+core@7.20.12 - '@babel/plugin-transform-function-name': 7.18.9_@babel+core@7.20.12 - '@babel/plugin-transform-literals': 7.18.9_@babel+core@7.20.12 - '@babel/plugin-transform-member-expression-literals': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-modules-amd': 7.20.11_@babel+core@7.20.12 - '@babel/plugin-transform-modules-commonjs': 7.20.11_@babel+core@7.20.12 - '@babel/plugin-transform-modules-systemjs': 7.20.11_@babel+core@7.20.12 - '@babel/plugin-transform-modules-umd': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-named-capturing-groups-regex': 7.20.5_@babel+core@7.20.12 - '@babel/plugin-transform-new-target': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-object-super': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-parameters': 7.20.7_@babel+core@7.20.12 - '@babel/plugin-transform-property-literals': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-regenerator': 7.20.5_@babel+core@7.20.12 - '@babel/plugin-transform-reserved-words': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-spread': 7.20.7_@babel+core@7.20.12 - '@babel/plugin-transform-sticky-regex': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.20.12 - '@babel/plugin-transform-typeof-symbol': 7.18.9_@babel+core@7.20.12 - '@babel/plugin-transform-unicode-escapes': 7.18.10_@babel+core@7.20.12 - '@babel/plugin-transform-unicode-regex': 7.18.6_@babel+core@7.20.12 - '@babel/preset-modules': 0.1.5_@babel+core@7.20.12 - '@babel/types': 7.20.7 - babel-plugin-polyfill-corejs2: 0.3.3_@babel+core@7.20.12 - babel-plugin-polyfill-corejs3: 0.6.0_@babel+core@7.20.12 - babel-plugin-polyfill-regenerator: 0.4.1_@babel+core@7.20.12 - core-js-compat: 3.27.1 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/preset-modules/0.1.5_@babel+core@7.20.12: - resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.20.12 - '@babel/types': 7.20.7 - esutils: 2.0.3 - dev: true - - /@babel/preset-typescript/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-validator-option': 7.18.6 - '@babel/plugin-transform-typescript': 7.20.7_@babel+core@7.20.12 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/runtime/7.20.7: - resolution: {integrity: sha512-UF0tvkUtxwAgZ5W/KrkHf0Rn0fdnLDU9ScxBrEVNUprE/MzirjK4MJUX1/BVDv00Sv8cljtukVK1aky++X1SjQ==} - engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.13.11 - dev: true - - /@babel/template/7.20.7: - resolution: {integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.18.6 - '@babel/parser': 7.20.7 - '@babel/types': 7.20.7 - - /@babel/traverse/7.20.12: - resolution: {integrity: sha512-MsIbFN0u+raeja38qboyF8TIT7K0BFzz/Yd/77ta4MsUsmP2RAnidIlwq7d5HFQrH/OZJecGV6B71C4zAgpoSQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.18.6 - '@babel/generator': 7.20.7 - '@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.20.7 - '@babel/types': 7.20.7 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - - /@babel/types/7.20.7: - resolution: {integrity: sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.19.4 - '@babel/helper-validator-identifier': 7.19.1 - to-fast-properties: 2.0.0 - - /@emmetio/abbreviation/2.2.3: - resolution: {integrity: sha512-87pltuCPt99aL+y9xS6GPZ+Wmmyhll2WXH73gG/xpGcQ84DRnptBsI2r0BeIQ0EB/SQTOe2ANPqFqj3Rj5FOGA==} - dependencies: - '@emmetio/scanner': 1.0.0 - - /@emmetio/css-abbreviation/2.1.4: - resolution: {integrity: sha512-qk9L60Y+uRtM5CPbB0y+QNl/1XKE09mSO+AhhSauIfr2YOx/ta3NJw2d8RtCFxgzHeRqFRr8jgyzThbu+MZ4Uw==} - dependencies: - '@emmetio/scanner': 1.0.0 - - /@emmetio/scanner/1.0.0: - resolution: {integrity: sha512-8HqW8EVqjnCmWXVpqAOZf+EGESdkR27odcMMMGefgKXtar00SoYNSryGv//TELI4T3QFsECo78p+0lmalk/CFA==} - - /@esbuild/android-arm/0.15.18: - resolution: {integrity: sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - requiresBuild: true - optional: true - - /@esbuild/android-arm/0.16.17: - resolution: {integrity: sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@esbuild/android-arm64/0.16.17: - resolution: {integrity: sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@esbuild/android-x64/0.16.17: - resolution: {integrity: sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@esbuild/darwin-arm64/0.16.17: - resolution: {integrity: sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@esbuild/darwin-x64/0.16.17: - resolution: {integrity: sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@esbuild/freebsd-arm64/0.16.17: - resolution: {integrity: sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/freebsd-x64/0.16.17: - resolution: {integrity: sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-arm/0.16.17: - resolution: {integrity: sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-arm64/0.16.17: - resolution: {integrity: sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-ia32/0.16.17: - resolution: {integrity: sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-loong64/0.15.18: - resolution: {integrity: sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - requiresBuild: true - optional: true - - /@esbuild/linux-loong64/0.16.17: - resolution: {integrity: sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-mips64el/0.16.17: - resolution: {integrity: sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-ppc64/0.16.17: - resolution: {integrity: sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-riscv64/0.16.17: - resolution: {integrity: sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-s390x/0.16.17: - resolution: {integrity: sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-x64/0.16.17: - resolution: {integrity: sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/netbsd-x64/0.16.17: - resolution: {integrity: sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/openbsd-x64/0.16.17: - resolution: {integrity: sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/sunos-x64/0.16.17: - resolution: {integrity: sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: true - optional: true - - /@esbuild/win32-arm64/0.16.17: - resolution: {integrity: sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@esbuild/win32-ia32/0.16.17: - resolution: {integrity: sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@esbuild/win32-x64/0.16.17: - resolution: {integrity: sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@fastify/deepmerge/1.3.0: - resolution: {integrity: sha512-J8TOSBq3SoZbDhM9+R/u77hP93gz/rajSA+K2kGyijPpORPWUXHUpTaleoj+92As0S9uPRP7Oi8IqMf0u+ro6A==} - dev: false - - /@jridgewell/gen-mapping/0.1.1: - resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.14 - - /@jridgewell/gen-mapping/0.3.2: - resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.14 - '@jridgewell/trace-mapping': 0.3.17 - - /@jridgewell/resolve-uri/3.1.0: - resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} - engines: {node: '>=6.0.0'} - - /@jridgewell/set-array/1.1.2: - resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} - engines: {node: '>=6.0.0'} - - /@jridgewell/source-map/0.3.2: - resolution: {integrity: sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==} - dependencies: - '@jridgewell/gen-mapping': 0.3.2 - '@jridgewell/trace-mapping': 0.3.17 - dev: true - - /@jridgewell/sourcemap-codec/1.4.14: - resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} - - /@jridgewell/trace-mapping/0.3.17: - resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==} - dependencies: - '@jridgewell/resolve-uri': 3.1.0 - '@jridgewell/sourcemap-codec': 1.4.14 - - /@ljharb/has-package-exports-patterns/0.0.2: - resolution: {integrity: sha512-4/RWEeXDO6bocPONheFe6gX/oQdP/bEpv0oL4HqjPP5DCenBSt0mHgahppY49N0CpsaqffdwPq+TlX9CYOq2Dw==} - - /@next/env/13.1.1: - resolution: {integrity: sha512-vFMyXtPjSAiOXOywMojxfKIqE3VWN5RCAx+tT3AS3pcKjMLFTCJFUWsKv8hC+87Z1F4W3r68qTwDFZIFmd5Xkw==} - dev: false - - /@next/swc-android-arm-eabi/13.1.1: - resolution: {integrity: sha512-qnFCx1kT3JTWhWve4VkeWuZiyjG0b5T6J2iWuin74lORCupdrNukxkq9Pm+Z7PsatxuwVJMhjUoYz7H4cWzx2A==} - engines: {node: '>= 10'} - cpu: [arm] - os: [android] - requiresBuild: true - dev: false - optional: true - - /@next/swc-android-arm64/13.1.1: - resolution: {integrity: sha512-eCiZhTzjySubNqUnNkQCjU3Fh+ep3C6b5DCM5FKzsTH/3Gr/4Y7EiaPZKILbvnXmhWtKPIdcY6Zjx51t4VeTfA==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: false - optional: true - - /@next/swc-darwin-arm64/13.1.1: - resolution: {integrity: sha512-9zRJSSIwER5tu9ADDkPw5rIZ+Np44HTXpYMr0rkM656IvssowPxmhK0rTreC1gpUCYwFsRbxarUJnJsTWiutPg==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: false - optional: true - - /@next/swc-darwin-x64/13.1.1: - resolution: {integrity: sha512-qWr9qEn5nrnlhB0rtjSdR00RRZEtxg4EGvicIipqZWEyayPxhUu6NwKiG8wZiYZCLfJ5KWr66PGSNeDMGlNaiA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: false - optional: true - - /@next/swc-freebsd-x64/13.1.1: - resolution: {integrity: sha512-UwP4w/NcQ7V/VJEj3tGVszgb4pyUCt3lzJfUhjDMUmQbzG9LDvgiZgAGMYH6L21MoyAATJQPDGiAMWAPKsmumA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: false - optional: true - - /@next/swc-linux-arm-gnueabihf/13.1.1: - resolution: {integrity: sha512-CnsxmKHco9sosBs1XcvCXP845Db+Wx1G0qouV5+Gr+HT/ZlDYEWKoHVDgnJXLVEQzq4FmHddBNGbXvgqM1Gfkg==} - engines: {node: '>= 10'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@next/swc-linux-arm64-gnu/13.1.1: - resolution: {integrity: sha512-JfDq1eri5Dif+VDpTkONRd083780nsMCOKoFG87wA0sa4xL8LGcXIBAkUGIC1uVy9SMsr2scA9CySLD/i+Oqiw==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@next/swc-linux-arm64-musl/13.1.1: - resolution: {integrity: sha512-GA67ZbDq2AW0CY07zzGt07M5b5Yaq5qUpFIoW3UFfjOPgb0Sqf3DAW7GtFMK1sF4ROHsRDMGQ9rnT0VM2dVfKA==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@next/swc-linux-x64-gnu/13.1.1: - resolution: {integrity: sha512-nnjuBrbzvqaOJaV+XgT8/+lmXrSCOt1YYZn/irbDb2fR2QprL6Q7WJNgwsZNxiLSfLdv+2RJGGegBx9sLBEzGA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@next/swc-linux-x64-musl/13.1.1: - resolution: {integrity: sha512-CM9xnAQNIZ8zf/igbIT/i3xWbQZYaF397H+JroF5VMOCUleElaMdQLL5riJml8wUfPoN3dtfn2s4peSr3azz/g==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@next/swc-win32-arm64-msvc/13.1.1: - resolution: {integrity: sha512-pzUHOGrbgfGgPlOMx9xk3QdPJoRPU+om84hqVoe6u+E0RdwOG0Ho/2UxCgDqmvpUrMab1Deltlt6RqcXFpnigQ==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /@next/swc-win32-ia32-msvc/13.1.1: - resolution: {integrity: sha512-WeX8kVS46aobM9a7Xr/kEPcrTyiwJqQv/tbw6nhJ4fH9xNZ+cEcyPoQkwPo570dCOLz3Zo9S2q0E6lJ/EAUOBg==} - engines: {node: '>= 10'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /@next/swc-win32-x64-msvc/13.1.1: - resolution: {integrity: sha512-mVF0/3/5QAc5EGVnb8ll31nNvf3BWpPY4pBb84tk+BfQglWLqc5AC9q1Ht/YMWiEgs8ALNKEQ3GQnbY0bJF2Gg==} - engines: {node: '>= 10'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /@nodelib/fs.scandir/2.1.5: - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - - /@nodelib/fs.stat/2.0.5: - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - - /@nodelib/fs.walk/1.2.8: - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.15.0 - - /@pkgr/utils/2.3.1: - resolution: {integrity: sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==} - engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - dependencies: - cross-spawn: 7.0.3 - is-glob: 4.0.3 - open: 8.4.0 - picocolors: 1.0.0 - tiny-glob: 0.2.9 - tslib: 2.4.1 - - /@polka/url/1.0.0-next.21: - resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==} - - /@proload/core/0.3.3: - resolution: {integrity: sha512-7dAFWsIK84C90AMl24+N/ProHKm4iw0akcnoKjRvbfHifJZBLhaDsDus1QJmhG12lXj4e/uB/8mB/0aduCW+NQ==} - dependencies: - deepmerge: 4.2.2 - escalade: 3.1.1 - - /@proload/plugin-tsm/0.2.1_@proload+core@0.3.3: - resolution: {integrity: sha512-Ex1sL2BxU+g8MHdAdq9SZKz+pU34o8Zcl9PHWo2WaG9hrnlZme607PU6gnpoAYsDBpHX327+eu60wWUk+d/b+A==} - peerDependencies: - '@proload/core': ^0.3.2 - dependencies: - '@proload/core': 0.3.3 - tsm: 2.3.0 - - /@rollup/plugin-babel/6.0.3_rwtmcocladng44j6a3ylx32v3q: - resolution: {integrity: sha512-fKImZKppa1A/gX73eg4JGo+8kQr/q1HBQaCGKECZ0v4YBBv3lFqi14+7xyApECzvkLTHCifx+7ntcrvtBIRcpg==} - engines: {node: '>=14.0.0'} - peerDependencies: - '@babel/core': ^7.0.0 - '@types/babel__core': ^7.1.9 - rollup: ^1.20.0||^2.0.0||^3.0.0 - peerDependenciesMeta: - '@types/babel__core': - optional: true - rollup: - optional: true - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-module-imports': 7.18.6 - '@rollup/pluginutils': 5.0.2_rollup@3.10.0 - rollup: 3.10.0 - dev: true - - /@rollup/plugin-node-resolve/15.0.1_rollup@3.10.0: - resolution: {integrity: sha512-ReY88T7JhJjeRVbfCyNj+NXAG3IIsVMsX9b5/9jC98dRP8/yxlZdz7mHZbHk5zHr24wZZICS5AcXsFZAXYUQEg==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^2.78.0||^3.0.0 - peerDependenciesMeta: - rollup: - optional: true - dependencies: - '@rollup/pluginutils': 5.0.2_rollup@3.10.0 - '@types/resolve': 1.20.2 - deepmerge: 4.2.2 - is-builtin-module: 3.2.0 - is-module: 1.0.0 - resolve: 1.22.1 - rollup: 3.10.0 - dev: true - - /@rollup/plugin-terser/0.1.0_rollup@3.10.0: - resolution: {integrity: sha512-N2KK+qUfHX2hBzVzM41UWGLrEmcjVC37spC8R3c9mt3oEDFKh3N2e12/lLp9aVSt86veR0TQiCNQXrm8C6aiUQ==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^2.x || ^3.x - peerDependenciesMeta: - rollup: - optional: true - dependencies: - rollup: 3.10.0 - terser: 5.16.1 - dev: true - - /@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: false - - /@rollup/pluginutils/5.0.2_rollup@3.10.0: - resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0 - peerDependenciesMeta: - rollup: - optional: true - dependencies: - '@types/estree': 1.0.0 - estree-walker: 2.0.2 - picomatch: 2.3.1 - rollup: 3.10.0 - dev: true - - /@swc/core-darwin-arm64/1.3.27: - resolution: {integrity: sha512-IKlxkhEy99CnP9nduaf5IJWIFcr6D5cZCjYmCs7nWkjMV+aAieyDO9AX4LT8AcHy6CF7ByOX7SKoqk+gVMAaKw==} - engines: {node: '>=10'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: false - optional: true - - /@swc/core-darwin-x64/1.3.27: - resolution: {integrity: sha512-MtabZIhFf/dL3vs6UMbd+vJsjIkm2NaFqulGV0Jofy2bfVZPTj/b5pXeOlUsTWy7JcH1uixjdx4RvJRyvqJxQA==} - engines: {node: '>=10'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: false - optional: true - - /@swc/core-linux-arm-gnueabihf/1.3.27: - resolution: {integrity: sha512-XELMoGcUTAkk+G4buwIIhu6AIr1U418Odt22HUW8+ZvV+Wty2ICgR/myOIhM3xMb6U2L8ay+evMqoVNMQ0RRTg==} - engines: {node: '>=10'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@swc/core-linux-arm64-gnu/1.3.27: - resolution: {integrity: sha512-O6vtT6bnrVR9PzEIuA5U7tIfYo7bv97H9K9Vqy2oyHNeGN0H36DKwS4UqPreHtziXNF5+7ubdUYUkrG/j8UnUQ==} - engines: {node: '>=10'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@swc/core-linux-arm64-musl/1.3.27: - resolution: {integrity: sha512-Oa0E1i7dOTWpaEZumKoNbTE/Ap+da6nlhqKVUdYrFDrOBi25tz76SdxZIyvAszzmgY89b5yd1naourKmkPXpww==} - engines: {node: '>=10'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@swc/core-linux-x64-gnu/1.3.27: - resolution: {integrity: sha512-S3v9H8oL2a8Ur6AjQyhkC6HfBVPOxKMdBhcZmdNuVgEUHbHdbf/Lka85F9IOYXEarMn0FtQw3ywowS22O9L5Uw==} - engines: {node: '>=10'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@swc/core-linux-x64-musl/1.3.27: - resolution: {integrity: sha512-6DDkdXlOADpwICFZTRphCR+cIeS8aEYh4NlyzBito0mOWwIIdfCgALzhkTQOzTOkcD42bP97CIoZ97hqV/puOg==} - engines: {node: '>=10'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@swc/core-win32-arm64-msvc/1.3.27: - resolution: {integrity: sha512-baxfH4AbEcaTNo08wxV0W6hiMXwVCxPS4qc0amHpXPti92unvSqeDR1W3C9GjHqzXlWtmCRsq8Ww1pal6ZVLrw==} - engines: {node: '>=10'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /@swc/core-win32-ia32-msvc/1.3.27: - resolution: {integrity: sha512-7iLJnH71k5qCwxv9NcM/P7nIEzTsC7r1sIiQW6bu+CpC8qZvwl0PS+XvQRlLly2gCZM+Le98tksYG14MEh+Hrw==} - engines: {node: '>=10'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /@swc/core-win32-x64-msvc/1.3.27: - resolution: {integrity: sha512-mFM907PDw/jrQ44+TRjIVGEOy2Mu06mMMz0HPMFuRsBzl5t0Kajp3vmn8FkkpS9wH5982VPi6hPYVTb7QJo5Qg==} - engines: {node: '>=10'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /@swc/core/1.3.27: - resolution: {integrity: sha512-praRNgpeYGvwDIm/Cl6JU+yHMvwVraL0U6ejMgGyzvpcm1FVsZd1/EYXGqzbBJ0ALv7Gx4eK56h4GnwV6d4L0w==} - engines: {node: '>=10'} - requiresBuild: true - optionalDependencies: - '@swc/core-darwin-arm64': 1.3.27 - '@swc/core-darwin-x64': 1.3.27 - '@swc/core-linux-arm-gnueabihf': 1.3.27 - '@swc/core-linux-arm64-gnu': 1.3.27 - '@swc/core-linux-arm64-musl': 1.3.27 - '@swc/core-linux-x64-gnu': 1.3.27 - '@swc/core-linux-x64-musl': 1.3.27 - '@swc/core-win32-arm64-msvc': 1.3.27 - '@swc/core-win32-ia32-msvc': 1.3.27 - '@swc/core-win32-x64-msvc': 1.3.27 - dev: false - - /@swc/helpers/0.4.14: - resolution: {integrity: sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==} - dependencies: - tslib: 2.4.1 - dev: false - - /@tailwindcss/typography/0.5.9_tailwindcss@3.2.4: - resolution: {integrity: sha512-t8Sg3DyynFysV9f4JDOVISGsjazNb48AeIYQwcL+Bsq5uf4RYL75C1giZ43KISjeDGBaTN3Kxh7Xj/vRSMJUUg==} - peerDependencies: - tailwindcss: '>=3.0.0 || insiders' - dependencies: - lodash.castarray: 4.4.0 - lodash.isplainobject: 4.0.6 - lodash.merge: 4.6.2 - postcss-selector-parser: 6.0.10 - tailwindcss: 3.2.4 - dev: true - - /@tanstack/query-core/4.22.0: - resolution: {integrity: sha512-OeLyBKBQoT265f5G9biReijeP8mBxNFwY7ZUu1dKL+YzqpG5q5z7J/N1eT8aWyKuhyDTiUHuKm5l+oIVzbtrjw==} - - /@tanstack/react-query/4.22.0_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-P9o+HjG42uB/xHR6dMsJaPhtZydSe4v0xdG5G/cEj1oHZAXelMlm67/rYJNQGKgBamKElKogj+HYGF+NY2yHYg==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-native: '*' - peerDependenciesMeta: - react-dom: - optional: true - react-native: - optional: true - dependencies: - '@tanstack/query-core': 4.22.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 - dev: false - - /@tanstack/react-query/4.22.0_react@18.2.0: - resolution: {integrity: sha512-P9o+HjG42uB/xHR6dMsJaPhtZydSe4v0xdG5G/cEj1oHZAXelMlm67/rYJNQGKgBamKElKogj+HYGF+NY2yHYg==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-native: '*' - peerDependenciesMeta: - react-dom: - optional: true - react-native: - optional: true - dependencies: - '@tanstack/query-core': 4.22.0 - react: 18.2.0 - use-sync-external-store: 1.2.0_react@18.2.0 - dev: true - - /@tanstack/solid-query/4.22.0_solid-js@1.6.8: - resolution: {integrity: sha512-xNS9tS1XGAY1CD2i6+Lo31wFbizMPPO+NfT3E1E8EFq4Y6t2ewrcEI43X7Wl9mKrntWfLLD75KvnK5LWDhpCiw==} - peerDependencies: - solid-js: ^1.5.7 - dependencies: - '@tanstack/query-core': 4.22.0 - solid-js: 1.6.8 - - /@tauri-apps/api/1.2.0: - resolution: {integrity: sha512-lsI54KI6HGf7VImuf/T9pnoejfgkNoXveP14pVV7XarrQ46rOejIVJLFqHI9sRReJMGdh2YuCoI3cc/yCWCsrw==} - engines: {node: '>= 14.6.0', npm: '>= 6.6.0', yarn: '>= 1.19.1'} - dev: true - - /@trysound/sax/0.2.0: - resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} - engines: {node: '>=10.13.0'} - dev: true - - /@types/acorn/4.0.6: - resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} - dependencies: - '@types/estree': 1.0.0 - - /@types/babel__core/7.1.20: - resolution: {integrity: sha512-PVb6Bg2QuscZ30FvOU7z4guG6c926D9YRvOxEaelzndpMsvP+YM74Q/dAFASpg2l6+XLalxSGxcq/lrgYWZtyQ==} - dependencies: - '@babel/parser': 7.20.7 - '@babel/types': 7.20.7 - '@types/babel__generator': 7.6.4 - '@types/babel__template': 7.4.1 - '@types/babel__traverse': 7.18.3 - - /@types/babel__generator/7.6.4: - resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} - dependencies: - '@babel/types': 7.20.7 - - /@types/babel__template/7.4.1: - resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} - dependencies: - '@babel/parser': 7.20.7 - '@babel/types': 7.20.7 - - /@types/babel__traverse/7.18.3: - resolution: {integrity: sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==} - dependencies: - '@babel/types': 7.20.7 - - /@types/chai-subset/1.3.3: - resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} - dependencies: - '@types/chai': 4.3.4 - dev: true - - /@types/chai/4.3.4: - resolution: {integrity: sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==} - dev: true - - /@types/css-tree/2.0.1: - resolution: {integrity: sha512-eeRN9rsZK/ZD5nmJCeZXxyTwq+gsvN1EljeCPEyXk+vLOAwsgpsrdXio4lPBzxAuhIKu3MK7QvZxWUw9xDX8Bg==} - dev: true - - /@types/csso/5.0.0: - resolution: {integrity: sha512-EMrCTGpXRUsbFfZBzn2jcW6Sqg8kxWXkJcpvAGYSEzFqAJ2THDJSwiMeS2fPUw+0p6RQNT/n8F/skEc9hUBc0g==} - dependencies: - '@types/css-tree': 2.0.1 - dev: true - - /@types/debug/4.1.7: - resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} - dependencies: - '@types/ms': 0.7.31 - - /@types/estree-jsx/0.0.1: - resolution: {integrity: sha512-gcLAYiMfQklDCPjQegGn0TBAn9it05ISEsEhlKQUddIk7o2XDokOcTN7HBO8tznM0D9dGezvHEfRZBfZf6me0A==} - dependencies: - '@types/estree': 1.0.0 - - /@types/estree-jsx/1.0.0: - resolution: {integrity: sha512-3qvGd0z8F2ENTGr/GG1yViqfiKmRfrXVx5sJyHGFu3z7m5g5utCQtGp/g29JnjflhtQJBv1WDQukHiT58xPcYQ==} - dependencies: - '@types/estree': 1.0.0 - - /@types/estree/1.0.0: - resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==} - - /@types/glob/7.2.0: - resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} - dependencies: - '@types/minimatch': 5.1.2 - '@types/node': 18.11.18 - - /@types/hast/2.3.4: - resolution: {integrity: sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==} - dependencies: - '@types/unist': 2.0.6 - - /@types/html-escaper/3.0.0: - resolution: {integrity: sha512-OcJcvP3Yk8mjYwf/IdXZtTE1tb/u0WF0qa29ER07ZHCYUBZXSN29Z1mBS+/96+kNMGTFUAbSz9X+pHmHpZrTCw==} - - /@types/html-minifier-terser/7.0.0: - resolution: {integrity: sha512-hw3bhStrg5e3FQT8qZKCJTrzt/UbEaunU1xRWJ+aNOTmeBMvE3S4Ml2HiiNnZgL8izu0LFVkHUoPFXL1s5QNpQ==} - dev: true - - /@types/json5/0.0.30: - resolution: {integrity: sha512-sqm9g7mHlPY/43fcSNrCYfOeX9zkTTK+euO5E6+CVijSMm5tTjkVdwdqRkY3ljjIAf8679vps5jKUoJBCLsMDA==} - - /@types/mdast/3.0.10: - resolution: {integrity: sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==} - dependencies: - '@types/unist': 2.0.6 - - /@types/minimatch/5.1.2: - resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} - - /@types/ms/0.7.31: - resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} - - /@types/nlcst/1.0.0: - resolution: {integrity: sha512-3TGCfOcy8R8mMQ4CNSNOe3PG66HttvjcLzCoOpvXvDtfWOTi+uT/rxeOKm/qEwbM4SNe1O/PjdiBK2YcTjU4OQ==} - dependencies: - '@types/unist': 2.0.6 - - /@types/node/17.0.45: - resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} - dev: true - - /@types/node/18.11.18: - resolution: {integrity: sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==} - - /@types/parse5/6.0.3: - resolution: {integrity: sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==} - - /@types/prop-types/15.7.5: - resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} - dev: true - - /@types/react-dom/18.0.10: - resolution: {integrity: sha512-E42GW/JA4Qv15wQdqJq8DL4JhNpB3prJgjgapN3qJT9K2zO5IIAQh4VXvCEDupoqAwnz0cY4RlXeC/ajX5SFHg==} - dependencies: - '@types/react': 18.0.26 - dev: true - - /@types/react/18.0.26: - resolution: {integrity: sha512-hCR3PJQsAIXyxhTNSiDFY//LhnMZWpNNr5etoCqx/iUfGc5gXWtQR2Phl908jVR6uPXacojQWTg4qRpkxTuGug==} - dependencies: - '@types/prop-types': 15.7.5 - '@types/scheduler': 0.16.2 - csstype: 3.1.1 - dev: true - - /@types/resolve/1.20.2: - resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} - - /@types/rollup-plugin-delete/1.0.0: - resolution: {integrity: sha512-ihEtKmnBq1gC6LntwdNkKOHReQ0NlBpQrNvxk2DL/Kk/SBDHeI36JAomPmR3baQvqL+Y3HcDY4g82fJlOFtULw==} - deprecated: This is a stub types definition. rollup-plugin-delete provides its own type definitions, so you do not need this installed. - dependencies: - rollup-plugin-delete: 2.0.0 - dev: true - - /@types/sax/1.2.4: - resolution: {integrity: sha512-pSAff4IAxJjfAXUG6tFkO7dsSbTmf8CtUpfhhZ5VhkRpC4628tJhh3+V6H1E+/Gs9piSzYKT5yzHO5M4GG9jkw==} - dependencies: - '@types/node': 17.0.45 - dev: true - - /@types/scheduler/0.16.2: - resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==} - dev: true - - /@types/sharp/0.31.1: - resolution: {integrity: sha512-5nWwamN9ZFHXaYEincMSuza8nNfOof8nmO+mcI+Agx1uMUk4/pQnNIcix+9rLPXzKrm1pS34+6WRDbDV0Jn7ag==} - dependencies: - '@types/node': 18.11.18 - dev: true - - /@types/unist/2.0.6: - resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} - - /@types/yargs-parser/21.0.0: - resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} - - /@vscode/emmet-helper/2.8.6: - resolution: {integrity: sha512-IIB8jbiKy37zN8bAIHx59YmnIelY78CGHtThnibD/d3tQOKRY83bYVi9blwmZVUZh6l9nfkYH3tvReaiNxY9EQ==} - dependencies: - emmet: 2.3.6 - jsonc-parser: 2.3.1 - vscode-languageserver-textdocument: 1.0.8 - vscode-languageserver-types: 3.17.2 - vscode-uri: 2.1.2 - - /@vscode/l10n/0.0.10: - resolution: {integrity: sha512-E1OCmDcDWa0Ya7vtSjp/XfHFGqYJfh+YPC1RkATU71fTac+j1JjCcB3qwSzmlKAighx2WxhLlfhS0RwAN++PFQ==} - - /acorn-jsx/5.3.2_acorn@8.8.1: - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - dependencies: - acorn: 8.8.1 - - /acorn-node/1.8.2: - resolution: {integrity: sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==} - dependencies: - acorn: 7.4.1 - acorn-walk: 7.2.0 - xtend: 4.0.2 - dev: true - - /acorn-walk/7.2.0: - resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} - engines: {node: '>=0.4.0'} - dev: true - - /acorn-walk/8.2.0: - resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} - engines: {node: '>=0.4.0'} - dev: true - - /acorn/7.4.1: - resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: true - - /acorn/8.8.1: - resolution: {integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==} - engines: {node: '>=0.4.0'} - hasBin: true - - /aggregate-error/3.1.0: - resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} - engines: {node: '>=8'} - dependencies: - clean-stack: 2.2.0 - indent-string: 4.0.0 - - /ansi-align/3.0.1: - resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} - dependencies: - string-width: 4.2.3 - - /ansi-regex/5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - /ansi-regex/6.0.1: - resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} - engines: {node: '>=12'} - - /ansi-styles/3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} - dependencies: - color-convert: 1.9.3 - - /ansi-styles/4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - dependencies: - color-convert: 2.0.1 - - /ansi-styles/6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} - - /anymatch/3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - dev: true - - /arg/5.0.2: - resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} - dev: true - - /argparse/1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} - dependencies: - sprintf-js: 1.0.3 - - /array-iterate/2.0.1: - resolution: {integrity: sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==} - - /array-union/2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - - /assertion-error/1.1.0: - resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} - dev: true - - /ast-types/0.14.2: - resolution: {integrity: sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==} - engines: {node: '>=4'} - dependencies: - tslib: 2.4.1 - - /astro-compress/1.1.25: - resolution: {integrity: sha512-67AZL1cQ/GF0bEEOpzSRzJiHVHUExSy0mCt3kbh4maWP5ikdBmv4I4BlFhlBWOmS/POukSwtxHbkP2l9bALdbQ==} - dependencies: - '@types/csso': 5.0.0 - '@types/html-minifier-terser': 7.0.0 - '@types/sharp': 0.31.1 - csso: 5.0.5 - files-pipeline: 0.0.2 - html-minifier-terser: 7.1.0 - sharp: 0.31.3 - svgo: 3.0.2 - terser: 5.16.1 - dev: true - - /astro-icon/0.8.0: - resolution: {integrity: sha512-sCzhZcl46BIyLJVg89hq5J4uQABn2psmGvK4cUaxib+M/kBI3TrPy1w3g2O5h/WcrTHLVN9LyxjgkD4lEJJFpw==} - dependencies: - node-fetch: 3.3.0 - resolve-pkg: 2.0.0 - svgo: 2.8.0 - dev: true - - /astro-spa/1.3.9: - resolution: {integrity: sha512-VmXMUsKNHA1gjJYq/SO5EqRAmqifOhBOpOAaXnlH5skgTy0tq9fwANJhh1LJpaahPBGqXAaoIw6Gdq/SBRz9Ww==} - dev: false - - /astro/1.9.2: - resolution: {integrity: sha512-L+Ma0eR0Aa6QZg7RF0lEs+106Ye1/zukvtq3KtsYIogAojltlwllwU9X5CwMBzFwA55NxpNp4gSRh5US/xb+8Q==} - engines: {node: ^14.18.0 || >=16.12.0, npm: '>=6.14.0'} - hasBin: true - dependencies: - '@astrojs/compiler': 0.31.4 - '@astrojs/language-server': 0.28.3 - '@astrojs/markdown-remark': 1.2.0 - '@astrojs/telemetry': 1.0.1 - '@astrojs/webapi': 1.1.1 - '@babel/core': 7.20.12 - '@babel/generator': 7.20.7 - '@babel/parser': 7.20.7 - '@babel/plugin-transform-react-jsx': 7.20.7_@babel+core@7.20.12 - '@babel/traverse': 7.20.12 - '@babel/types': 7.20.7 - '@proload/core': 0.3.3 - '@proload/plugin-tsm': 0.2.1_@proload+core@0.3.3 - '@types/babel__core': 7.1.20 - '@types/html-escaper': 3.0.0 - '@types/yargs-parser': 21.0.0 - acorn: 8.8.1 - boxen: 6.2.1 - ci-info: 3.7.1 - common-ancestor-path: 1.0.1 - cookie: 0.5.0 - debug: 4.3.4 - deepmerge-ts: 4.2.2 - devalue: 4.2.2 - diff: 5.1.0 - es-module-lexer: 1.1.0 - estree-walker: 3.0.2 - execa: 6.1.0 - fast-glob: 3.2.12 - github-slugger: 2.0.0 - gray-matter: 4.0.3 - html-entities: 2.3.3 - html-escaper: 3.0.3 - import-meta-resolve: 2.2.1 - kleur: 4.1.5 - magic-string: 0.27.0 - mime: 3.0.0 - ora: 6.1.2 - path-browserify: 1.0.1 - path-to-regexp: 6.2.1 - postcss: 8.4.21 - postcss-load-config: 3.1.4_postcss@8.4.21 - preferred-pm: 3.0.3 - prompts: 2.4.2 - recast: 0.20.5 - rehype: 12.0.1 - resolve: 1.22.1 - rollup: 2.79.1 - semver: 7.3.8 - shiki: 0.11.1 - sirv: 2.0.2 - slash: 4.0.0 - string-width: 5.1.2 - strip-ansi: 7.0.1 - supports-esm: 1.0.0 - tsconfig-resolver: 3.0.1 - typescript: 4.9.4 - unist-util-visit: 4.1.1 - vfile: 5.3.6 - vite: 3.2.5 - vitefu: 0.2.4_vite@3.2.5 - yargs-parser: 21.1.1 - zod: 3.20.2 - transitivePeerDependencies: - - '@types/node' - - less - - sass - - stylus - - sugarss - - supports-color - - terser - - ts-node - - /autoprefixer/10.4.13_postcss@8.4.21: - resolution: {integrity: sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==} - engines: {node: ^10 || ^12 || >=14} - hasBin: true - peerDependencies: - postcss: ^8.1.0 - dependencies: - browserslist: 4.21.4 - caniuse-lite: 1.0.30001443 - fraction.js: 4.2.0 - normalize-range: 0.1.2 - picocolors: 1.0.0 - postcss: 8.4.21 - postcss-value-parser: 4.2.0 - dev: true - - /babel-plugin-jsx-dom-expressions/0.35.13: - resolution: {integrity: sha512-UlbzUP/2kFxwaEs1VDrPjCr84/oGDQUohf+vbyD8u8Ct3tSpfQz+OGrj+GBqf0Ib1Rxz7dSH+1mZz+kuxzeCSA==} - peerDependencies: - '@babel/core': ^7.20.12 - dependencies: - '@babel/helper-module-imports': 7.18.6 - '@babel/plugin-syntax-jsx': 7.18.6 - '@babel/types': 7.20.7 - html-entities: 2.3.3 - validate-html-nesting: 1.1.0 - dev: true - - /babel-plugin-jsx-dom-expressions/0.35.13_@babel+core@7.20.12: - resolution: {integrity: sha512-UlbzUP/2kFxwaEs1VDrPjCr84/oGDQUohf+vbyD8u8Ct3tSpfQz+OGrj+GBqf0Ib1Rxz7dSH+1mZz+kuxzeCSA==} - peerDependencies: - '@babel/core': ^7.20.12 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-module-imports': 7.18.6 - '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.20.12 - '@babel/types': 7.20.7 - html-entities: 2.3.3 - validate-html-nesting: 1.1.0 - dev: true - - /babel-plugin-polyfill-corejs2/0.3.3_@babel+core@7.20.12: - resolution: {integrity: sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.20.10 - '@babel/core': 7.20.12 - '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.20.12 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-polyfill-corejs3/0.6.0_@babel+core@7.20.12: - resolution: {integrity: sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.20.12 - core-js-compat: 3.27.1 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-polyfill-regenerator/0.4.1_@babel+core@7.20.12: - resolution: {integrity: sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.20.12 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-preset-solid/1.6.7: - resolution: {integrity: sha512-OYPYPX0d1ncf5MGJ7rdb8V1u0BQDaoUAR6LAgR7Cm2hS/BgjGkznrcmpY00Y6RxmQq7n2ozW+hPl2w2k7/v4vg==} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - babel-plugin-jsx-dom-expressions: 0.35.13 - dev: true - - /babel-preset-solid/1.6.7_@babel+core@7.20.12: - resolution: {integrity: sha512-OYPYPX0d1ncf5MGJ7rdb8V1u0BQDaoUAR6LAgR7Cm2hS/BgjGkznrcmpY00Y6RxmQq7n2ozW+hPl2w2k7/v4vg==} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.20.12 - babel-plugin-jsx-dom-expressions: 0.35.13_@babel+core@7.20.12 - dev: true - - /bail/2.0.2: - resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} - - /balanced-match/1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - /base64-js/1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - - /binary-extensions/2.2.0: - resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} - engines: {node: '>=8'} - dev: true - - /bl/4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - dependencies: - buffer: 5.7.1 - inherits: 2.0.4 - readable-stream: 3.6.0 - dev: true - - /bl/5.1.0: - resolution: {integrity: sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==} - dependencies: - buffer: 6.0.3 - inherits: 2.0.4 - readable-stream: 3.6.0 - - /boolbase/1.0.0: - resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - dev: true - - /boolean/3.2.0: - resolution: {integrity: sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==} - - /boxen/6.2.1: - resolution: {integrity: sha512-H4PEsJXfFI/Pt8sjDWbHlQPx4zL/bvSQjcilJmaulGt5mLDorHOHpmdXAJcBcmru7PhYSp/cDMWRko4ZUMFkSw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - ansi-align: 3.0.1 - camelcase: 6.3.0 - chalk: 4.1.2 - cli-boxes: 3.0.0 - string-width: 5.1.2 - type-fest: 2.19.0 - widest-line: 4.0.1 - wrap-ansi: 8.0.1 - - /brace-expansion/1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - - /braces/3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} - engines: {node: '>=8'} - dependencies: - fill-range: 7.0.1 - - /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.30001443 - electron-to-chromium: 1.4.284 - node-releases: 2.0.8 - update-browserslist-db: 1.0.10_browserslist@4.21.4 - - /buffer-from/1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - dev: true - - /buffer/5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - dev: true - - /buffer/6.0.3: - resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - - /builtin-modules/3.3.0: - resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} - engines: {node: '>=6'} - dev: true - - /cac/6.7.14: - resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} - engines: {node: '>=8'} - dev: true - - /camel-case/4.1.2: - resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} - dependencies: - pascal-case: 3.1.2 - tslib: 2.4.1 - dev: true - - /camelcase-css/2.0.1: - resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} - engines: {node: '>= 6'} - dev: true - - /camelcase/6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - - /caniuse-lite/1.0.30001443: - resolution: {integrity: sha512-jUo8svymO8+Mkj3qbUbVjR8zv8LUGpGkUM/jKvc9SO2BvjCI980dp9fQbf/dyLs6RascPzgR4nhAKFA4OHeSaA==} - - /ccount/2.0.1: - resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - - /chai/4.3.7: - resolution: {integrity: sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==} - engines: {node: '>=4'} - dependencies: - assertion-error: 1.1.0 - check-error: 1.0.2 - deep-eql: 4.1.3 - get-func-name: 2.0.0 - loupe: 2.3.6 - pathval: 1.1.1 - type-detect: 4.0.8 - dev: true - - /chalk/2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} - dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 - - /chalk/4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - /chalk/5.2.0: - resolution: {integrity: sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - - /character-entities-html4/2.1.0: - resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} - - /character-entities-legacy/3.0.0: - resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} - - /character-entities/2.0.2: - resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} - - /character-reference-invalid/2.0.1: - resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} - - /check-error/1.0.2: - resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} - dev: true - - /chokidar/3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} - engines: {node: '>= 8.10.0'} - dependencies: - anymatch: 3.1.3 - braces: 3.0.2 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.2 - dev: true - - /chownr/1.1.4: - resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} - dev: true - - /ci-info/3.7.1: - resolution: {integrity: sha512-4jYS4MOAaCIStSRwiuxc4B8MYhIe676yO1sYGzARnjXkWpmzZMMYxY6zu8WYWDhSuth5zhrQ1rhNSibyyvv4/w==} - engines: {node: '>=8'} - - /clean-css/5.2.0: - resolution: {integrity: sha512-2639sWGa43EMmG7fn8mdVuBSs6HuWaSor+ZPoFWzenBc6oN+td8YhTfghWXZ25G1NiiSvz8bOFBS7PdSbTiqEA==} - engines: {node: '>= 10.0'} - dependencies: - source-map: 0.6.1 - dev: true - - /clean-stack/2.2.0: - resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} - engines: {node: '>=6'} - - /cli-boxes/3.0.0: - resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} - engines: {node: '>=10'} - - /cli-cursor/4.0.0: - resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - restore-cursor: 4.0.0 - - /cli-spinners/2.7.0: - resolution: {integrity: sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==} - engines: {node: '>=6'} - - /client-only/0.0.1: - resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} - dev: false - - /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: false - - /clone/1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} - engines: {node: '>=0.8'} - - /clsx/1.2.1: - resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} - engines: {node: '>=6'} - dev: false - - /color-convert/1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - dependencies: - color-name: 1.1.3 - - /color-convert/2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - dependencies: - color-name: 1.1.4 - - /color-name/1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - - /color-name/1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - /color-string/1.9.1: - resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} - dependencies: - color-name: 1.1.4 - simple-swizzle: 0.2.2 - dev: true - - /color/4.2.3: - resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} - engines: {node: '>=12.5.0'} - dependencies: - color-convert: 2.0.1 - color-string: 1.9.1 - dev: true - - /colorette/2.0.19: - resolution: {integrity: sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==} - dev: true - - /comma-separated-tokens/2.0.3: - resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} - - /commander/2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - dev: true - - /commander/7.2.0: - resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} - engines: {node: '>= 10'} - dev: true - - /commander/9.5.0: - resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} - engines: {node: ^12.20.0 || >=14} - dev: true - - /common-ancestor-path/1.0.1: - resolution: {integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==} - - /commondir/1.0.1: - resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - dev: false - - /concat-map/0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - - /convert-source-map/1.9.0: - resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} - - /cookie/0.5.0: - resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} - engines: {node: '>= 0.6'} - - /core-js-compat/3.27.1: - resolution: {integrity: sha512-Dg91JFeCDA17FKnneN7oCMz4BkQ4TcffkgHP4OWwp9yx3pi7ubqMDXXSacfNak1PQqjc95skyt+YBLHQJnkJwA==} - dependencies: - browserslist: 4.21.4 - dev: true - - /core-js/3.27.2: - resolution: {integrity: sha512-9ashVQskuh5AZEZ1JdQWp1GqSoC1e1G87MzRqg2gIfVAQ7Qn9K+uFj8EcniUFA4P2NLZfV+TOlX1SzoKfo+s7w==} - requiresBuild: true - dev: false - - /cross-spawn/7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - - /css-select/4.3.0: - resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} - dependencies: - boolbase: 1.0.0 - css-what: 6.1.0 - domhandler: 4.3.1 - domutils: 2.8.0 - nth-check: 2.1.1 - dev: true - - /css-select/5.1.0: - resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} - dependencies: - boolbase: 1.0.0 - css-what: 6.1.0 - domhandler: 5.0.3 - domutils: 3.0.1 - nth-check: 2.1.1 - dev: true - - /css-tree/1.1.3: - resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} - engines: {node: '>=8.0.0'} - dependencies: - mdn-data: 2.0.14 - source-map: 0.6.1 - dev: true - - /css-tree/2.2.1: - resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} - dependencies: - mdn-data: 2.0.28 - source-map-js: 1.0.2 - dev: true - - /css-tree/2.3.1: - resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} - dependencies: - mdn-data: 2.0.30 - source-map-js: 1.0.2 - dev: true - - /css-what/6.1.0: - resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} - engines: {node: '>= 6'} - dev: true - - /cssesc/3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} - hasBin: true - dev: true - - /csso/4.2.0: - resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} - engines: {node: '>=8.0.0'} - dependencies: - css-tree: 1.1.3 - dev: true - - /csso/5.0.5: - resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} - dependencies: - css-tree: 2.2.1 - dev: true - - /csstype/3.1.1: - resolution: {integrity: sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==} - - /data-uri-to-buffer/4.0.0: - resolution: {integrity: sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==} - engines: {node: '>= 12'} - - /debug/4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.2 - - /decode-named-character-reference/1.0.2: - resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} - dependencies: - character-entities: 2.0.2 - - /decompress-response/6.0.0: - resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} - engines: {node: '>=10'} - dependencies: - mimic-response: 3.1.0 - dev: true - - /deep-eql/4.1.3: - resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} - engines: {node: '>=6'} - dependencies: - type-detect: 4.0.8 - dev: true - - /deep-extend/0.6.0: - resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} - engines: {node: '>=4.0.0'} - dev: true - - /deepmerge-ts/4.2.2: - resolution: {integrity: sha512-Ka3Kb21tiWjvQvS9U+1Dx+aqFAHsdTnMdYptLTmC2VAmDFMugWMY1e15aTODstipmCun8iNuqeSfcx6rsUUk0Q==} - engines: {node: '>=12.4.0'} - - /deepmerge/4.2.2: - resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} - engines: {node: '>=0.10.0'} - - /defaults/1.0.4: - resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} - dependencies: - clone: 1.0.4 - - /define-lazy-prop/2.0.0: - resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} - engines: {node: '>=8'} - - /define-properties/1.1.4: - resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==} - engines: {node: '>= 0.4'} - dependencies: - has-property-descriptors: 1.0.0 - object-keys: 1.1.1 - - /defined/1.0.1: - resolution: {integrity: sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==} - dev: true - - /del/5.1.0: - resolution: {integrity: sha512-wH9xOVHnczo9jN2IW68BabcecVPxacIA3g/7z6vhSU/4stOKQzeCRK0yD0A24WiAAUJmmVpWqrERcTxnLo3AnA==} - engines: {node: '>=8'} - dependencies: - globby: 10.0.2 - graceful-fs: 4.2.10 - is-glob: 4.0.3 - is-path-cwd: 2.2.0 - is-path-inside: 3.0.3 - p-map: 3.0.0 - rimraf: 3.0.2 - slash: 3.0.0 - - /dequal/2.0.3: - resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} - engines: {node: '>=6'} - - /detect-libc/2.0.1: - resolution: {integrity: sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==} - engines: {node: '>=8'} - dev: true - - /detect-node/2.1.0: - resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} - - /detective/5.2.1: - resolution: {integrity: sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==} - engines: {node: '>=0.8.0'} - hasBin: true - dependencies: - acorn-node: 1.8.2 - defined: 1.0.1 - minimist: 1.2.7 - dev: true - - /devalue/4.2.2: - resolution: {integrity: sha512-Pkwd8qrI9O20VJ14fBNHu+on99toTNZFbgWRpZbC0zbDXpnE2WHYcrC1fHhMsF/3Ee+2yaW7vEujAT7fCYgqrA==} - - /didyoumean/1.2.2: - resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} - dev: true - - /diff/5.1.0: - resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==} - engines: {node: '>=0.3.1'} - - /dir-glob/3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} - dependencies: - path-type: 4.0.0 - - /dlv/1.1.3: - resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} - - /dom-serializer/1.4.1: - resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} - dependencies: - domelementtype: 2.3.0 - domhandler: 4.3.1 - entities: 2.2.0 - dev: true - - /dom-serializer/2.0.0: - resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - entities: 4.4.0 - dev: true - - /domelementtype/2.3.0: - resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - dev: true - - /domhandler/4.3.1: - resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} - engines: {node: '>= 4'} - dependencies: - domelementtype: 2.3.0 - dev: true - - /domhandler/5.0.3: - resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} - engines: {node: '>= 4'} - dependencies: - domelementtype: 2.3.0 - dev: true - - /domutils/2.8.0: - resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} - dependencies: - dom-serializer: 1.4.1 - domelementtype: 2.3.0 - domhandler: 4.3.1 - dev: true - - /domutils/3.0.1: - resolution: {integrity: sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==} - dependencies: - dom-serializer: 2.0.0 - domelementtype: 2.3.0 - domhandler: 5.0.3 - dev: true - - /dot-case/3.0.4: - resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} - dependencies: - no-case: 3.0.4 - tslib: 2.4.1 - dev: true - - /dset/3.1.2: - resolution: {integrity: sha512-g/M9sqy3oHe477Ar4voQxWtaPIFw1jTdKZuomOjhCcBx9nHUNn0pu6NopuFFrTh/TRZIKEj+76vLWFu9BNKk+Q==} - engines: {node: '>=4'} - - /eastasianwidth/0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - - /electron-to-chromium/1.4.284: - resolution: {integrity: sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==} - - /emmet/2.3.6: - resolution: {integrity: sha512-pLS4PBPDdxuUAmw7Me7+TcHbykTsBKN/S9XJbUOMFQrNv9MoshzyMFK/R57JBm94/6HSL4vHnDeEmxlC82NQ4A==} - dependencies: - '@emmetio/abbreviation': 2.2.3 - '@emmetio/css-abbreviation': 2.1.4 - - /emoji-regex/8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - /emoji-regex/9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - - /end-of-stream/1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - dependencies: - once: 1.4.0 - dev: true - - /entities/2.2.0: - resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} - dev: true - - /entities/4.4.0: - resolution: {integrity: sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==} - engines: {node: '>=0.12'} - dev: true - - /es-module-lexer/1.1.0: - resolution: {integrity: sha512-fJg+1tiyEeS8figV+fPcPpm8WqJEflG3yPU0NOm5xMvrNkuiy7HzX/Ljng4Y0hAoiw4/3hQTCFYw+ub8+a2pRA==} - - /es6-error/4.1.1: - resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==} - - /esbuild-android-64/0.15.18: - resolution: {integrity: sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - optional: true - - /esbuild-android-arm64/0.15.18: - resolution: {integrity: sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - optional: true - - /esbuild-darwin-64/0.15.18: - resolution: {integrity: sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - optional: true - - /esbuild-darwin-arm64/0.15.18: - resolution: {integrity: sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - optional: true - - /esbuild-freebsd-64/0.15.18: - resolution: {integrity: sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - optional: true - - /esbuild-freebsd-arm64/0.15.18: - resolution: {integrity: sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - optional: true - - /esbuild-linux-32/0.15.18: - resolution: {integrity: sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true - optional: true - - /esbuild-linux-64/0.15.18: - resolution: {integrity: sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - optional: true - - /esbuild-linux-arm/0.15.18: - resolution: {integrity: sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - optional: true - - /esbuild-linux-arm64/0.15.18: - resolution: {integrity: sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - optional: true - - /esbuild-linux-mips64le/0.15.18: - resolution: {integrity: sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - optional: true - - /esbuild-linux-ppc64le/0.15.18: - resolution: {integrity: sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - optional: true - - /esbuild-linux-riscv64/0.15.18: - resolution: {integrity: sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - optional: true - - /esbuild-linux-s390x/0.15.18: - resolution: {integrity: sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true - optional: true - - /esbuild-netbsd-64/0.15.18: - resolution: {integrity: sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - optional: true - - /esbuild-openbsd-64/0.15.18: - resolution: {integrity: sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - optional: true - - /esbuild-sunos-64/0.15.18: - resolution: {integrity: sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - optional: true - - /esbuild-windows-32/0.15.18: - resolution: {integrity: sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - optional: true - - /esbuild-windows-64/0.15.18: - resolution: {integrity: sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true - optional: true - - /esbuild-windows-arm64/0.15.18: - resolution: {integrity: sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - optional: true - - /esbuild/0.15.18: - resolution: {integrity: sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/android-arm': 0.15.18 - '@esbuild/linux-loong64': 0.15.18 - esbuild-android-64: 0.15.18 - esbuild-android-arm64: 0.15.18 - esbuild-darwin-64: 0.15.18 - esbuild-darwin-arm64: 0.15.18 - esbuild-freebsd-64: 0.15.18 - esbuild-freebsd-arm64: 0.15.18 - esbuild-linux-32: 0.15.18 - esbuild-linux-64: 0.15.18 - esbuild-linux-arm: 0.15.18 - esbuild-linux-arm64: 0.15.18 - esbuild-linux-mips64le: 0.15.18 - esbuild-linux-ppc64le: 0.15.18 - esbuild-linux-riscv64: 0.15.18 - esbuild-linux-s390x: 0.15.18 - esbuild-netbsd-64: 0.15.18 - esbuild-openbsd-64: 0.15.18 - esbuild-sunos-64: 0.15.18 - esbuild-windows-32: 0.15.18 - esbuild-windows-64: 0.15.18 - esbuild-windows-arm64: 0.15.18 - - /esbuild/0.16.17: - resolution: {integrity: sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/android-arm': 0.16.17 - '@esbuild/android-arm64': 0.16.17 - '@esbuild/android-x64': 0.16.17 - '@esbuild/darwin-arm64': 0.16.17 - '@esbuild/darwin-x64': 0.16.17 - '@esbuild/freebsd-arm64': 0.16.17 - '@esbuild/freebsd-x64': 0.16.17 - '@esbuild/linux-arm': 0.16.17 - '@esbuild/linux-arm64': 0.16.17 - '@esbuild/linux-ia32': 0.16.17 - '@esbuild/linux-loong64': 0.16.17 - '@esbuild/linux-mips64el': 0.16.17 - '@esbuild/linux-ppc64': 0.16.17 - '@esbuild/linux-riscv64': 0.16.17 - '@esbuild/linux-s390x': 0.16.17 - '@esbuild/linux-x64': 0.16.17 - '@esbuild/netbsd-x64': 0.16.17 - '@esbuild/openbsd-x64': 0.16.17 - '@esbuild/sunos-x64': 0.16.17 - '@esbuild/win32-arm64': 0.16.17 - '@esbuild/win32-ia32': 0.16.17 - '@esbuild/win32-x64': 0.16.17 - dev: true - - /escalade/3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} - engines: {node: '>=6'} - - /escape-string-regexp/1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - - /escape-string-regexp/4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - - /escape-string-regexp/5.0.0: - resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} - engines: {node: '>=12'} - - /esprima/4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - - /estree-util-is-identifier-name/2.0.1: - resolution: {integrity: sha512-rxZj1GkQhY4x1j/CSnybK9cGuMFQYFPLq0iNyopqf14aOVLFtMv7Esika+ObJWPWiOHuMOAHz3YkWoLYYRnzWQ==} - - /estree-util-visit/1.2.0: - resolution: {integrity: sha512-wdsoqhWueuJKsh5hqLw3j8lwFqNStm92VcwtAOAny8g/KS/l5Y8RISjR4k5W6skCj3Nirag/WUCMS0Nfy3sgsg==} - dependencies: - '@types/estree-jsx': 1.0.0 - '@types/unist': 2.0.6 - - /estree-walker/2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - - /estree-walker/3.0.2: - resolution: {integrity: sha512-C03BvXCQIH/po+PNPONx/zSM9ziPr9weX8xNhYb/IJtdJ9z+L4z9VKPTB+UTHdmhnIopA2kc419ueyVyHVktwA==} - - /esutils/2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - dev: true - - /events/3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} - - /execa/6.1.0: - resolution: {integrity: sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 3.0.1 - is-stream: 3.0.0 - merge-stream: 2.0.0 - npm-run-path: 5.1.0 - onetime: 6.0.0 - signal-exit: 3.0.7 - strip-final-newline: 3.0.0 - - /expand-template/2.0.3: - resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} - engines: {node: '>=6'} - dev: true - - /extend-shallow/2.0.1: - resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} - engines: {node: '>=0.10.0'} - dependencies: - is-extendable: 0.1.1 - - /extend/3.0.2: - resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - - /fast-glob/3.2.12: - resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} - engines: {node: '>=8.6.0'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.5 - - /fastq/1.15.0: - resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} - dependencies: - reusify: 1.0.4 - - /fetch-blob/3.2.0: - resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} - engines: {node: ^12.20 || >= 14.13} - dependencies: - node-domexception: 1.0.0 - web-streams-polyfill: 3.2.1 - - /files-pipeline/0.0.2: - resolution: {integrity: sha512-e5BHeSXczwD+6PEy+CLhoYd9NSZkn6gK+QyGwgzdufO4qq0KWKMbVE53lwyw/gKYSbKMe2AgUvVp5N4VrA3OTw==} - dependencies: - deepmerge-ts: 4.2.2 - fast-glob: 3.2.12 - dev: true - - /fill-range/7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} - engines: {node: '>=8'} - dependencies: - to-regex-range: 5.0.1 - - /find-cache-dir/3.3.2: - resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} - engines: {node: '>=8'} - dependencies: - commondir: 1.0.1 - make-dir: 3.1.0 - pkg-dir: 4.2.0 - dev: false - - /find-up/4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} - dependencies: - locate-path: 5.0.0 - path-exists: 4.0.0 - - /find-up/5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - - /find-yarn-workspace-root2/1.2.16: - resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} - dependencies: - micromatch: 4.0.5 - pkg-dir: 4.2.0 - - /formdata-polyfill/4.0.10: - resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} - engines: {node: '>=12.20.0'} - dependencies: - fetch-blob: 3.2.0 - - /fraction.js/4.2.0: - resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} - dev: true - - /fs-constants/1.0.0: - resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} - dev: true - - /fs-extra/10.1.0: - resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} - engines: {node: '>=12'} - dependencies: - graceful-fs: 4.2.10 - jsonfile: 6.1.0 - universalify: 2.0.0 - dev: false - - /fs.realpath/1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - - /fsevents/2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - requiresBuild: true - optional: true - - /function-bind/1.1.1: - resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} - - /gensync/1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - - /get-caller-file/2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - dev: false - - /get-func-name/2.0.0: - resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==} - dev: true - - /get-intrinsic/1.1.3: - resolution: {integrity: sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==} - dependencies: - function-bind: 1.1.1 - has: 1.0.3 - has-symbols: 1.0.3 - - /get-stream/6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} - - /get-tsconfig/4.3.0: - resolution: {integrity: sha512-YCcF28IqSay3fqpIu5y3Krg/utCBHBeoflkZyHj/QcqI2nrLPC3ZegS9CmIo+hJb8K7aiGsuUl7PwWVjNG2HQQ==} - dev: false - - /github-from-package/0.0.0: - resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} - dev: true - - /github-slugger/1.5.0: - resolution: {integrity: sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==} - - /github-slugger/2.0.0: - resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} - - /glob-parent/5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - dependencies: - is-glob: 4.0.3 - - /glob-parent/6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} - dependencies: - is-glob: 4.0.3 - dev: true - - /glob/7.1.6: - resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - - /global-agent/3.0.0: - resolution: {integrity: sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==} - engines: {node: '>=10.0'} - dependencies: - boolean: 3.2.0 - es6-error: 4.1.1 - matcher: 3.0.0 - roarr: 2.15.4 - semver: 7.3.8 - serialize-error: 7.0.1 - - /globals/11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - - /globalthis/1.0.3: - resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} - engines: {node: '>= 0.4'} - dependencies: - define-properties: 1.1.4 - - /globalyzer/0.1.0: - resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} - - /globby/10.0.2: - resolution: {integrity: sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==} - engines: {node: '>=8'} - dependencies: - '@types/glob': 7.2.0 - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.2.12 - glob: 7.1.6 - ignore: 5.2.4 - merge2: 1.4.1 - slash: 3.0.0 - - /globrex/0.1.2: - resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} - - /graceful-fs/4.2.10: - resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} - - /gray-matter/4.0.3: - resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} - engines: {node: '>=6.0'} - dependencies: - js-yaml: 3.14.1 - kind-of: 6.0.3 - section-matter: 1.0.0 - strip-bom-string: 1.0.0 - - /has-flag/3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - - /has-flag/4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - /has-package-exports/1.3.0: - resolution: {integrity: sha512-e9OeXPQnmPhYoJ63lXC4wWe34TxEGZDZ3OQX9XRqp2VwsfLl3bQBy7VehLnd34g3ef8CmYlBLGqEMKXuz8YazQ==} - dependencies: - '@ljharb/has-package-exports-patterns': 0.0.2 - - /has-property-descriptors/1.0.0: - resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} - dependencies: - get-intrinsic: 1.1.3 - - /has-symbols/1.0.3: - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} - engines: {node: '>= 0.4'} - - /has/1.0.3: - resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} - engines: {node: '>= 0.4.0'} - dependencies: - function-bind: 1.1.1 - - /hast-to-hyperscript/10.0.1: - resolution: {integrity: sha512-dhIVGoKCQVewFi+vz3Vt567E4ejMppS1haBRL6TEmeLeJVB1i/FJIIg/e6s1Bwn0g5qtYojHEKvyGA+OZuyifw==} - dependencies: - '@types/unist': 2.0.6 - comma-separated-tokens: 2.0.3 - property-information: 6.2.0 - space-separated-tokens: 2.0.2 - style-to-object: 0.3.0 - unist-util-is: 5.1.1 - web-namespaces: 2.0.1 - - /hast-util-from-parse5/7.1.0: - resolution: {integrity: sha512-m8yhANIAccpU4K6+121KpPP55sSl9/samzQSQGpb0mTExcNh2WlvjtMwSWFhg6uqD4Rr6Nfa8N6TMypQM51rzQ==} - dependencies: - '@types/hast': 2.3.4 - '@types/parse5': 6.0.3 - '@types/unist': 2.0.6 - hastscript: 7.2.0 - property-information: 6.2.0 - vfile: 5.3.6 - vfile-location: 4.0.1 - web-namespaces: 2.0.1 - - /hast-util-parse-selector/3.1.1: - resolution: {integrity: sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==} - dependencies: - '@types/hast': 2.3.4 - - /hast-util-raw/7.2.3: - resolution: {integrity: sha512-RujVQfVsOrxzPOPSzZFiwofMArbQke6DJjnFfceiEbFh7S05CbPt0cYN+A5YeD3pso0JQk6O1aHBnx9+Pm2uqg==} - dependencies: - '@types/hast': 2.3.4 - '@types/parse5': 6.0.3 - hast-util-from-parse5: 7.1.0 - hast-util-to-parse5: 7.0.0 - html-void-elements: 2.0.1 - parse5: 6.0.1 - unist-util-position: 4.0.3 - unist-util-visit: 4.1.1 - vfile: 5.3.6 - web-namespaces: 2.0.1 - zwitch: 2.0.4 - - /hast-util-to-html/8.0.4: - resolution: {integrity: sha512-4tpQTUOr9BMjtYyNlt0P50mH7xj0Ks2xpo8M943Vykljf99HW6EzulIoJP1N3eKOSScEHzyzi9dm7/cn0RfGwA==} - dependencies: - '@types/hast': 2.3.4 - '@types/unist': 2.0.6 - ccount: 2.0.1 - comma-separated-tokens: 2.0.3 - hast-util-raw: 7.2.3 - hast-util-whitespace: 2.0.1 - html-void-elements: 2.0.1 - property-information: 6.2.0 - space-separated-tokens: 2.0.2 - stringify-entities: 4.0.3 - zwitch: 2.0.4 - - /hast-util-to-parse5/7.0.0: - resolution: {integrity: sha512-YHiS6aTaZ3N0Q3nxaY/Tj98D6kM8QX5Q8xqgg8G45zR7PvWnPGPP0vcKCgb/moIydEJ/QWczVrX0JODCVeoV7A==} - dependencies: - '@types/hast': 2.3.4 - '@types/parse5': 6.0.3 - hast-to-hyperscript: 10.0.1 - property-information: 6.2.0 - web-namespaces: 2.0.1 - zwitch: 2.0.4 - - /hast-util-whitespace/2.0.1: - resolution: {integrity: sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==} - - /hastscript/7.2.0: - resolution: {integrity: sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==} - dependencies: - '@types/hast': 2.3.4 - comma-separated-tokens: 2.0.3 - hast-util-parse-selector: 3.1.1 - property-information: 6.2.0 - space-separated-tokens: 2.0.2 - - /he/1.2.0: - resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} - hasBin: true - dev: true - - /html-entities/2.3.3: - resolution: {integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==} - - /html-escaper/3.0.3: - resolution: {integrity: sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==} - - /html-minifier-terser/7.1.0: - resolution: {integrity: sha512-BvPO2S7Ip0Q5qt+Y8j/27Vclj6uHC6av0TMoDn7/bJPhMWHI2UtR2e/zEgJn3/qYAmxumrGp9q4UHurL6mtW9Q==} - engines: {node: ^14.13.1 || >=16.0.0} - hasBin: true - dependencies: - camel-case: 4.1.2 - clean-css: 5.2.0 - commander: 9.5.0 - entities: 4.4.0 - param-case: 3.0.4 - relateurl: 0.2.7 - terser: 5.16.1 - dev: true - - /html-void-elements/2.0.1: - resolution: {integrity: sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==} - - /human-signals/3.0.1: - resolution: {integrity: sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==} - engines: {node: '>=12.20.0'} - - /ieee754/1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - - /ignore/5.2.4: - resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} - engines: {node: '>= 4'} - - /import-meta-resolve/2.2.1: - resolution: {integrity: sha512-C6lLL7EJPY44kBvA80gq4uMsVFw5x3oSKfuMl1cuZ2RkI5+UJqQXgn+6hlUew0y4ig7Ypt4CObAAIzU53Nfpuw==} - - /indent-string/4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} - engines: {node: '>=8'} - - /inflight/1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - - /inherits/2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - - /ini/1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - dev: true - - /inline-style-parser/0.1.1: - resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} - - /is-absolute-url/4.0.1: - resolution: {integrity: sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true - - /is-alphabetical/2.0.1: - resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} - - /is-alphanumerical/2.0.1: - resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} - dependencies: - is-alphabetical: 2.0.1 - is-decimal: 2.0.1 - - /is-arrayish/0.3.2: - resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} - dev: true - - /is-binary-path/2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - dependencies: - binary-extensions: 2.2.0 - dev: true - - /is-buffer/2.0.5: - resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} - engines: {node: '>=4'} - - /is-builtin-module/3.2.0: - resolution: {integrity: sha512-phDA4oSGt7vl1n5tJvTWooWWAsXLY+2xCnxNqvKhGEzujg+A43wPlPOyDg3C8XQHN+6k/JTQWJ/j0dQh/qr+Hw==} - engines: {node: '>=6'} - dependencies: - builtin-modules: 3.3.0 - dev: true - - /is-core-module/2.11.0: - resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} - dependencies: - has: 1.0.3 - - /is-decimal/2.0.1: - resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} - - /is-docker/2.2.1: - resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} - engines: {node: '>=8'} - hasBin: true - - /is-docker/3.0.0: - resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - hasBin: true - - /is-extendable/0.1.1: - resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} - engines: {node: '>=0.10.0'} - - /is-extglob/2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - /is-fullwidth-code-point/3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - - /is-glob/4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - dependencies: - is-extglob: 2.1.1 - - /is-hexadecimal/2.0.1: - resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} - - /is-interactive/2.0.0: - resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} - engines: {node: '>=12'} - - /is-module/1.0.0: - resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} - dev: true - - /is-number/7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - /is-path-cwd/2.2.0: - resolution: {integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==} - engines: {node: '>=6'} - - /is-path-inside/3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - - /is-plain-obj/4.1.0: - resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} - engines: {node: '>=12'} - - /is-stream/3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - /is-unicode-supported/1.3.0: - resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} - engines: {node: '>=12'} - - /is-what/4.1.8: - resolution: {integrity: sha512-yq8gMao5upkPoGEU9LsB2P+K3Kt8Q3fQFCGyNCWOAnJAMzEXVV9drYb0TXr42TTliLLhKIBvulgAXgtLLnwzGA==} - engines: {node: '>=12.13'} - dev: true - - /is-wsl/2.2.0: - resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} - engines: {node: '>=8'} - dependencies: - is-docker: 2.2.1 - - /isexe/2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - /js-tokens/4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - - /js-yaml/3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - - /jsesc/0.5.0: - resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} - hasBin: true - dev: true - - /jsesc/2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} - hasBin: true - - /json-stringify-safe/5.0.1: - resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} - - /json5/2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true - - /jsonc-parser/2.3.1: - resolution: {integrity: sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==} - - /jsonc-parser/3.2.0: - resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} - - /jsonfile/6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} - dependencies: - universalify: 2.0.0 - optionalDependencies: - graceful-fs: 4.2.10 - dev: false - - /kind-of/6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} - - /kleur/3.0.3: - resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} - engines: {node: '>=6'} - - /kleur/4.1.5: - resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} - engines: {node: '>=6'} - - /lilconfig/2.0.6: - resolution: {integrity: sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==} - engines: {node: '>=10'} - - /load-yaml-file/0.2.0: - resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} - engines: {node: '>=6'} - dependencies: - graceful-fs: 4.2.10 - js-yaml: 3.14.1 - pify: 4.0.1 - strip-bom: 3.0.0 - - /local-pkg/0.4.3: - resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} - engines: {node: '>=14'} - dev: true - - /locate-path/5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} - dependencies: - p-locate: 4.1.0 - - /locate-path/6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - dependencies: - p-locate: 5.0.0 - - /lodash.castarray/4.4.0: - resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==} - dev: true - - /lodash.debounce/4.0.8: - resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} - dev: true - - /lodash.isplainobject/4.0.6: - resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} - dev: true - - /lodash.merge/4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - dev: true - - /lodash/4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - dev: false - - /log-symbols/5.1.0: - resolution: {integrity: sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==} - engines: {node: '>=12'} - dependencies: - chalk: 5.2.0 - is-unicode-supported: 1.3.0 - - /longest-streak/3.1.0: - resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} - - /loose-envify/1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true - dependencies: - js-tokens: 4.0.0 - - /loupe/2.3.6: - resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} - dependencies: - get-func-name: 2.0.0 - dev: true - - /lower-case/2.0.2: - resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} - dependencies: - tslib: 2.4.1 - dev: true - - /lru-cache/5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - dependencies: - yallist: 3.1.1 - - /lru-cache/6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - dependencies: - yallist: 4.0.0 - - /magic-string/0.27.0: - resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} - engines: {node: '>=12'} - dependencies: - '@jridgewell/sourcemap-codec': 1.4.14 - - /make-dir/3.1.0: - resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} - engines: {node: '>=8'} - dependencies: - semver: 6.3.0 - dev: false - - /markdown-table/3.0.3: - resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} - - /matcher/3.0.0: - resolution: {integrity: sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==} - engines: {node: '>=10'} - dependencies: - escape-string-regexp: 4.0.0 - - /mdast-util-definitions/5.1.1: - resolution: {integrity: sha512-rQ+Gv7mHttxHOBx2dkF4HWTg+EE+UR78ptQWDylzPKaQuVGdG4HIoY3SrS/pCp80nZ04greFvXbVFHT+uf0JVQ==} - dependencies: - '@types/mdast': 3.0.10 - '@types/unist': 2.0.6 - unist-util-visit: 4.1.1 - - /mdast-util-find-and-replace/2.2.1: - resolution: {integrity: sha512-SobxkQXFAdd4b5WmEakmkVoh18icjQRxGy5OWTCzgsLRm1Fu/KCtwD1HIQSsmq5ZRjVH0Ehwg6/Fn3xIUk+nKw==} - dependencies: - escape-string-regexp: 5.0.0 - unist-util-is: 5.1.1 - unist-util-visit-parents: 5.1.1 - - /mdast-util-from-markdown/1.2.0: - resolution: {integrity: sha512-iZJyyvKD1+K7QX1b5jXdE7Sc5dtoTry1vzV28UZZe8Z1xVnB/czKntJ7ZAkG0tANqRnBF6p3p7GpU1y19DTf2Q==} - dependencies: - '@types/mdast': 3.0.10 - '@types/unist': 2.0.6 - decode-named-character-reference: 1.0.2 - mdast-util-to-string: 3.1.0 - micromark: 3.1.0 - micromark-util-decode-numeric-character-reference: 1.0.0 - micromark-util-decode-string: 1.0.2 - micromark-util-normalize-identifier: 1.0.0 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 - unist-util-stringify-position: 3.0.2 - uvu: 0.5.6 - transitivePeerDependencies: - - supports-color - - /mdast-util-gfm-autolink-literal/1.0.2: - resolution: {integrity: sha512-FzopkOd4xTTBeGXhXSBU0OCDDh5lUj2rd+HQqG92Ld+jL4lpUfgX2AT2OHAVP9aEeDKp7G92fuooSZcYJA3cRg==} - dependencies: - '@types/mdast': 3.0.10 - ccount: 2.0.1 - mdast-util-find-and-replace: 2.2.1 - micromark-util-character: 1.1.0 - - /mdast-util-gfm-footnote/1.0.1: - resolution: {integrity: sha512-p+PrYlkw9DeCRkTVw1duWqPRHX6Ywh2BNKJQcZbCwAuP/59B0Lk9kakuAd7KbQprVO4GzdW8eS5++A9PUSqIyw==} - dependencies: - '@types/mdast': 3.0.10 - mdast-util-to-markdown: 1.5.0 - micromark-util-normalize-identifier: 1.0.0 - - /mdast-util-gfm-strikethrough/1.0.2: - resolution: {integrity: sha512-T/4DVHXcujH6jx1yqpcAYYwd+z5lAYMw4Ls6yhTfbMMtCt0PHY4gEfhW9+lKsLBtyhUGKRIzcUA2FATVqnvPDA==} - dependencies: - '@types/mdast': 3.0.10 - mdast-util-to-markdown: 1.5.0 - - /mdast-util-gfm-table/1.0.6: - resolution: {integrity: sha512-uHR+fqFq3IvB3Rd4+kzXW8dmpxUhvgCQZep6KdjsLK4O6meK5dYZEayLtIxNus1XO3gfjfcIFe8a7L0HZRGgag==} - dependencies: - '@types/mdast': 3.0.10 - markdown-table: 3.0.3 - mdast-util-from-markdown: 1.2.0 - mdast-util-to-markdown: 1.5.0 - transitivePeerDependencies: - - supports-color - - /mdast-util-gfm-task-list-item/1.0.1: - resolution: {integrity: sha512-KZ4KLmPdABXOsfnM6JHUIjxEvcx2ulk656Z/4Balw071/5qgnhz+H1uGtf2zIGnrnvDC8xR4Fj9uKbjAFGNIeA==} - dependencies: - '@types/mdast': 3.0.10 - mdast-util-to-markdown: 1.5.0 - - /mdast-util-gfm/2.0.1: - resolution: {integrity: sha512-42yHBbfWIFisaAfV1eixlabbsa6q7vHeSPY+cg+BBjX51M8xhgMacqH9g6TftB/9+YkcI0ooV4ncfrJslzm/RQ==} - dependencies: - mdast-util-from-markdown: 1.2.0 - mdast-util-gfm-autolink-literal: 1.0.2 - mdast-util-gfm-footnote: 1.0.1 - mdast-util-gfm-strikethrough: 1.0.2 - mdast-util-gfm-table: 1.0.6 - mdast-util-gfm-task-list-item: 1.0.1 - mdast-util-to-markdown: 1.5.0 - transitivePeerDependencies: - - supports-color - - /mdast-util-mdx-expression/1.3.1: - resolution: {integrity: sha512-TTb6cKyTA1RD+1su1iStZ5PAv3rFfOUKcoU5EstUpv/IZo63uDX03R8+jXjMEhcobXnNOiG6/ccekvVl4eV1zQ==} - dependencies: - '@types/estree-jsx': 1.0.0 - '@types/hast': 2.3.4 - '@types/mdast': 3.0.10 - mdast-util-from-markdown: 1.2.0 - mdast-util-to-markdown: 1.5.0 - transitivePeerDependencies: - - supports-color - - /mdast-util-mdx-jsx/1.2.0: - resolution: {integrity: sha512-5+ot/kfxYd3ChgEMwsMUO71oAfYjyRI3pADEK4I7xTmWLGQ8Y7ghm1CG36zUoUvDPxMlIYwQV/9DYHAUWdG4dA==} - dependencies: - '@types/estree-jsx': 0.0.1 - '@types/mdast': 3.0.10 - mdast-util-to-markdown: 1.5.0 - parse-entities: 4.0.0 - stringify-entities: 4.0.3 - unist-util-remove-position: 4.0.1 - unist-util-stringify-position: 3.0.2 - vfile-message: 3.1.3 - - /mdast-util-phrasing/3.0.0: - resolution: {integrity: sha512-S+QYsDRLkGi8U7o5JF1agKa/sdP+CNGXXLqC17pdTVL8FHHgQEiwFGa9yE5aYtUxNiFGYoaDy9V1kC85Sz86Gg==} - dependencies: - '@types/mdast': 3.0.10 - unist-util-is: 5.1.1 - - /mdast-util-to-hast/12.2.5: - resolution: {integrity: sha512-EFNhT35ZR/VZ85/EedDdCNTq0oFM+NM/+qBomVGQ0+Lcg0nhI8xIwmdCzNMlVlCJNXRprpobtKP/IUh8cfz6zQ==} - dependencies: - '@types/hast': 2.3.4 - '@types/mdast': 3.0.10 - mdast-util-definitions: 5.1.1 - micromark-util-sanitize-uri: 1.1.0 - trim-lines: 3.0.1 - unist-builder: 3.0.0 - unist-util-generated: 2.0.0 - unist-util-position: 4.0.3 - unist-util-visit: 4.1.1 - - /mdast-util-to-markdown/1.5.0: - resolution: {integrity: sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==} - dependencies: - '@types/mdast': 3.0.10 - '@types/unist': 2.0.6 - longest-streak: 3.1.0 - mdast-util-phrasing: 3.0.0 - mdast-util-to-string: 3.1.0 - micromark-util-decode-string: 1.0.2 - unist-util-visit: 4.1.1 - zwitch: 2.0.4 - - /mdast-util-to-string/3.1.0: - resolution: {integrity: sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA==} - - /mdn-data/2.0.14: - resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} - dev: true - - /mdn-data/2.0.28: - resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} - dev: true - - /mdn-data/2.0.30: - resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} - dev: true - - /merge-anything/5.1.4: - resolution: {integrity: sha512-7PWKwGOs5WWcpw+/OvbiFiAvEP6bv/QHiicigpqMGKIqPPAtGhBLR8LFJW+Zu6m9TXiR/a8+AiPlGG0ko1ruoQ==} - engines: {node: '>=12.13'} - dependencies: - is-what: 4.1.8 - dev: true - - /merge-stream/2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - - /merge2/1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - - /micromark-core-commonmark/1.0.6: - resolution: {integrity: sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA==} - dependencies: - decode-named-character-reference: 1.0.2 - micromark-factory-destination: 1.0.0 - micromark-factory-label: 1.0.2 - micromark-factory-space: 1.0.0 - micromark-factory-title: 1.0.2 - micromark-factory-whitespace: 1.0.0 - micromark-util-character: 1.1.0 - micromark-util-chunked: 1.0.0 - micromark-util-classify-character: 1.0.0 - micromark-util-html-tag-name: 1.1.0 - micromark-util-normalize-identifier: 1.0.0 - micromark-util-resolve-all: 1.0.0 - micromark-util-subtokenize: 1.0.2 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 - uvu: 0.5.6 - - /micromark-extension-gfm-autolink-literal/1.0.3: - resolution: {integrity: sha512-i3dmvU0htawfWED8aHMMAzAVp/F0Z+0bPh3YrbTPPL1v4YAlCZpy5rBO5p0LPYiZo0zFVkoYh7vDU7yQSiCMjg==} - dependencies: - micromark-util-character: 1.1.0 - micromark-util-sanitize-uri: 1.1.0 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 - uvu: 0.5.6 - - /micromark-extension-gfm-footnote/1.0.4: - resolution: {integrity: sha512-E/fmPmDqLiMUP8mLJ8NbJWJ4bTw6tS+FEQS8CcuDtZpILuOb2kjLqPEeAePF1djXROHXChM/wPJw0iS4kHCcIg==} - dependencies: - micromark-core-commonmark: 1.0.6 - micromark-factory-space: 1.0.0 - micromark-util-character: 1.1.0 - micromark-util-normalize-identifier: 1.0.0 - micromark-util-sanitize-uri: 1.1.0 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 - uvu: 0.5.6 - - /micromark-extension-gfm-strikethrough/1.0.4: - resolution: {integrity: sha512-/vjHU/lalmjZCT5xt7CcHVJGq8sYRm80z24qAKXzaHzem/xsDYb2yLL+NNVbYvmpLx3O7SYPuGL5pzusL9CLIQ==} - dependencies: - micromark-util-chunked: 1.0.0 - micromark-util-classify-character: 1.0.0 - micromark-util-resolve-all: 1.0.0 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 - uvu: 0.5.6 - - /micromark-extension-gfm-table/1.0.5: - resolution: {integrity: sha512-xAZ8J1X9W9K3JTJTUL7G6wSKhp2ZYHrFk5qJgY/4B33scJzE2kpfRL6oiw/veJTbt7jiM/1rngLlOKPWr1G+vg==} - dependencies: - micromark-factory-space: 1.0.0 - micromark-util-character: 1.1.0 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 - uvu: 0.5.6 - - /micromark-extension-gfm-tagfilter/1.0.1: - resolution: {integrity: sha512-Ty6psLAcAjboRa/UKUbbUcwjVAv5plxmpUTy2XC/3nJFL37eHej8jrHrRzkqcpipJliuBH30DTs7+3wqNcQUVA==} - dependencies: - micromark-util-types: 1.0.2 - - /micromark-extension-gfm-task-list-item/1.0.3: - resolution: {integrity: sha512-PpysK2S1Q/5VXi72IIapbi/jliaiOFzv7THH4amwXeYXLq3l1uo8/2Be0Ac1rEwK20MQEsGH2ltAZLNY2KI/0Q==} - dependencies: - micromark-factory-space: 1.0.0 - micromark-util-character: 1.1.0 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 - uvu: 0.5.6 - - /micromark-extension-gfm/2.0.1: - resolution: {integrity: sha512-p2sGjajLa0iYiGQdT0oelahRYtMWvLjy8J9LOCxzIQsllMCGLbsLW+Nc+N4vi02jcRJvedVJ68cjelKIO6bpDA==} - dependencies: - micromark-extension-gfm-autolink-literal: 1.0.3 - micromark-extension-gfm-footnote: 1.0.4 - micromark-extension-gfm-strikethrough: 1.0.4 - micromark-extension-gfm-table: 1.0.5 - micromark-extension-gfm-tagfilter: 1.0.1 - micromark-extension-gfm-task-list-item: 1.0.3 - micromark-util-combine-extensions: 1.0.0 - micromark-util-types: 1.0.2 - - /micromark-extension-mdx-expression/1.0.3: - resolution: {integrity: sha512-TjYtjEMszWze51NJCZmhv7MEBcgYRgb3tJeMAJ+HQCAaZHHRBaDCccqQzGizR/H4ODefP44wRTgOn2vE5I6nZA==} - dependencies: - micromark-factory-mdx-expression: 1.0.6 - micromark-factory-space: 1.0.0 - micromark-util-character: 1.1.0 - micromark-util-events-to-acorn: 1.2.0 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 - uvu: 0.5.6 - - /micromark-extension-mdx-md/1.0.0: - resolution: {integrity: sha512-xaRAMoSkKdqZXDAoSgp20Azm0aRQKGOl0RrS81yGu8Hr/JhMsBmfs4wR7m9kgVUIO36cMUQjNyiyDKPrsv8gOw==} - dependencies: - micromark-util-types: 1.0.2 - - /micromark-factory-destination/1.0.0: - resolution: {integrity: sha512-eUBA7Rs1/xtTVun9TmV3gjfPz2wEwgK5R5xcbIM5ZYAtvGF6JkyaDsj0agx8urXnO31tEO6Ug83iVH3tdedLnw==} - dependencies: - micromark-util-character: 1.1.0 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 - - /micromark-factory-label/1.0.2: - resolution: {integrity: sha512-CTIwxlOnU7dEshXDQ+dsr2n+yxpP0+fn271pu0bwDIS8uqfFcumXpj5mLn3hSC8iw2MUr6Gx8EcKng1dD7i6hg==} - dependencies: - micromark-util-character: 1.1.0 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 - uvu: 0.5.6 - - /micromark-factory-mdx-expression/1.0.6: - resolution: {integrity: sha512-WRQIc78FV7KrCfjsEf/sETopbYjElh3xAmNpLkd1ODPqxEngP42eVRGbiPEQWpRV27LzqW+XVTvQAMIIRLPnNA==} - dependencies: - micromark-factory-space: 1.0.0 - micromark-util-character: 1.1.0 - micromark-util-events-to-acorn: 1.2.0 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 - unist-util-position-from-estree: 1.1.1 - uvu: 0.5.6 - vfile-message: 3.1.3 - - /micromark-factory-space/1.0.0: - resolution: {integrity: sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew==} - dependencies: - micromark-util-character: 1.1.0 - micromark-util-types: 1.0.2 - - /micromark-factory-title/1.0.2: - resolution: {integrity: sha512-zily+Nr4yFqgMGRKLpTVsNl5L4PMu485fGFDOQJQBl2NFpjGte1e86zC0da93wf97jrc4+2G2GQudFMHn3IX+A==} - dependencies: - micromark-factory-space: 1.0.0 - micromark-util-character: 1.1.0 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 - uvu: 0.5.6 - - /micromark-factory-whitespace/1.0.0: - resolution: {integrity: sha512-Qx7uEyahU1lt1RnsECBiuEbfr9INjQTGa6Err+gF3g0Tx4YEviPbqqGKNv/NrBaE7dVHdn1bVZKM/n5I/Bak7A==} - dependencies: - micromark-factory-space: 1.0.0 - micromark-util-character: 1.1.0 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 - - /micromark-util-character/1.1.0: - resolution: {integrity: sha512-agJ5B3unGNJ9rJvADMJ5ZiYjBRyDpzKAOk01Kpi1TKhlT1APx3XZk6eN7RtSz1erbWHC2L8T3xLZ81wdtGRZzg==} - dependencies: - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 - - /micromark-util-chunked/1.0.0: - resolution: {integrity: sha512-5e8xTis5tEZKgesfbQMKRCyzvffRRUX+lK/y+DvsMFdabAicPkkZV6gO+FEWi9RfuKKoxxPwNL+dFF0SMImc1g==} - dependencies: - micromark-util-symbol: 1.0.1 - - /micromark-util-classify-character/1.0.0: - resolution: {integrity: sha512-F8oW2KKrQRb3vS5ud5HIqBVkCqQi224Nm55o5wYLzY/9PwHGXC01tr3d7+TqHHz6zrKQ72Okwtvm/xQm6OVNZA==} - dependencies: - micromark-util-character: 1.1.0 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 - - /micromark-util-combine-extensions/1.0.0: - resolution: {integrity: sha512-J8H058vFBdo/6+AsjHp2NF7AJ02SZtWaVUjsayNFeAiydTxUwViQPxN0Hf8dp4FmCQi0UUFovFsEyRSUmFH3MA==} - dependencies: - micromark-util-chunked: 1.0.0 - micromark-util-types: 1.0.2 - - /micromark-util-decode-numeric-character-reference/1.0.0: - resolution: {integrity: sha512-OzO9AI5VUtrTD7KSdagf4MWgHMtET17Ua1fIpXTpuhclCqD8egFWo85GxSGvxgkGS74bEahvtM0WP0HjvV0e4w==} - dependencies: - micromark-util-symbol: 1.0.1 - - /micromark-util-decode-string/1.0.2: - resolution: {integrity: sha512-DLT5Ho02qr6QWVNYbRZ3RYOSSWWFuH3tJexd3dgN1odEuPNxCngTCXJum7+ViRAd9BbdxCvMToPOD/IvVhzG6Q==} - dependencies: - decode-named-character-reference: 1.0.2 - micromark-util-character: 1.1.0 - micromark-util-decode-numeric-character-reference: 1.0.0 - micromark-util-symbol: 1.0.1 - - /micromark-util-encode/1.0.1: - resolution: {integrity: sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA==} - - /micromark-util-events-to-acorn/1.2.0: - resolution: {integrity: sha512-WWp3bf7xT9MppNuw3yPjpnOxa8cj5ACivEzXJKu0WwnjBYfzaBvIAT9KfeyI0Qkll+bfQtfftSwdgTH6QhTOKw==} - dependencies: - '@types/acorn': 4.0.6 - '@types/estree': 1.0.0 - estree-util-visit: 1.2.0 - micromark-util-types: 1.0.2 - uvu: 0.5.6 - vfile-location: 4.0.1 - vfile-message: 3.1.3 - - /micromark-util-html-tag-name/1.1.0: - resolution: {integrity: sha512-BKlClMmYROy9UiV03SwNmckkjn8QHVaWkqoAqzivabvdGcwNGMMMH/5szAnywmsTBUzDsU57/mFi0sp4BQO6dA==} - - /micromark-util-normalize-identifier/1.0.0: - resolution: {integrity: sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg==} - dependencies: - micromark-util-symbol: 1.0.1 - - /micromark-util-resolve-all/1.0.0: - resolution: {integrity: sha512-CB/AGk98u50k42kvgaMM94wzBqozSzDDaonKU7P7jwQIuH2RU0TeBqGYJz2WY1UdihhjweivStrJ2JdkdEmcfw==} - dependencies: - micromark-util-types: 1.0.2 - - /micromark-util-sanitize-uri/1.1.0: - resolution: {integrity: sha512-RoxtuSCX6sUNtxhbmsEFQfWzs8VN7cTctmBPvYivo98xb/kDEoTCtJQX5wyzIYEmk/lvNFTat4hL8oW0KndFpg==} - dependencies: - micromark-util-character: 1.1.0 - micromark-util-encode: 1.0.1 - micromark-util-symbol: 1.0.1 - - /micromark-util-subtokenize/1.0.2: - resolution: {integrity: sha512-d90uqCnXp/cy4G881Ub4psE57Sf8YD0pim9QdjCRNjfas2M1u6Lbt+XZK9gnHL2XFhnozZiEdCa9CNfXSfQ6xA==} - dependencies: - micromark-util-chunked: 1.0.0 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 - uvu: 0.5.6 - - /micromark-util-symbol/1.0.1: - resolution: {integrity: sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ==} - - /micromark-util-types/1.0.2: - resolution: {integrity: sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w==} - - /micromark/3.1.0: - resolution: {integrity: sha512-6Mj0yHLdUZjHnOPgr5xfWIMqMWS12zDN6iws9SLuSz76W8jTtAv24MN4/CL7gJrl5vtxGInkkqDv/JIoRsQOvA==} - dependencies: - '@types/debug': 4.1.7 - debug: 4.3.4 - decode-named-character-reference: 1.0.2 - micromark-core-commonmark: 1.0.6 - micromark-factory-space: 1.0.0 - micromark-util-character: 1.1.0 - micromark-util-chunked: 1.0.0 - micromark-util-combine-extensions: 1.0.0 - micromark-util-decode-numeric-character-reference: 1.0.0 - micromark-util-encode: 1.0.1 - micromark-util-normalize-identifier: 1.0.0 - micromark-util-resolve-all: 1.0.0 - micromark-util-sanitize-uri: 1.1.0 - micromark-util-subtokenize: 1.0.2 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 - uvu: 0.5.6 - transitivePeerDependencies: - - supports-color - - /micromatch/4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} - engines: {node: '>=8.6'} - dependencies: - braces: 3.0.2 - picomatch: 2.3.1 - - /mime/3.0.0: - resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} - engines: {node: '>=10.0.0'} - hasBin: true - - /mimic-fn/2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - - /mimic-fn/4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} - - /mimic-response/3.1.0: - resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} - engines: {node: '>=10'} - dev: true - - /minimatch/3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - dependencies: - brace-expansion: 1.1.11 - - /minimist/1.2.7: - resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} - dev: true - - /mkdirp-classic/0.5.3: - resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} - dev: true - - /mlly/1.1.0: - resolution: {integrity: sha512-cwzBrBfwGC1gYJyfcy8TcZU1f+dbH/T+TuOhtYP2wLv/Fb51/uV7HJQfBPtEupZ2ORLRU1EKFS/QfS3eo9+kBQ==} - dependencies: - acorn: 8.8.1 - pathe: 1.0.0 - pkg-types: 1.0.1 - ufo: 1.0.1 - dev: true - - /morphdom/2.6.1: - resolution: {integrity: sha512-Y8YRbAEP3eKykroIBWrjcfMw7mmwJfjhqdpSvoqinu8Y702nAwikpXcNFDiIkyvfCLxLM9Wu95RZqo4a9jFBaA==} - dev: false - - /mri/1.2.0: - resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} - engines: {node: '>=4'} - - /mrmime/1.0.1: - resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} - engines: {node: '>=10'} - - /ms/2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - - /nanoid/3.3.4: - resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - - /napi-build-utils/1.0.2: - resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} - dev: true - - /next/13.1.1_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-R5eBAaIa3X7LJeYvv1bMdGnAVF4fVToEjim7MkflceFPuANY3YyvFxXee/A+acrSYwYPvOvf7f6v/BM/48ea5w==} - engines: {node: '>=14.6.0'} - hasBin: true - peerDependencies: - fibers: '>= 3.1.0' - node-sass: ^6.0.0 || ^7.0.0 - react: ^18.2.0 - react-dom: ^18.2.0 - sass: ^1.3.0 - peerDependenciesMeta: - fibers: - optional: true - node-sass: - optional: true - sass: - optional: true - dependencies: - '@next/env': 13.1.1 - '@swc/helpers': 0.4.14 - caniuse-lite: 1.0.30001443 - postcss: 8.4.14 - react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 - styled-jsx: 5.1.1_react@18.2.0 - optionalDependencies: - '@next/swc-android-arm-eabi': 13.1.1 - '@next/swc-android-arm64': 13.1.1 - '@next/swc-darwin-arm64': 13.1.1 - '@next/swc-darwin-x64': 13.1.1 - '@next/swc-freebsd-x64': 13.1.1 - '@next/swc-linux-arm-gnueabihf': 13.1.1 - '@next/swc-linux-arm64-gnu': 13.1.1 - '@next/swc-linux-arm64-musl': 13.1.1 - '@next/swc-linux-x64-gnu': 13.1.1 - '@next/swc-linux-x64-musl': 13.1.1 - '@next/swc-win32-arm64-msvc': 13.1.1 - '@next/swc-win32-ia32-msvc': 13.1.1 - '@next/swc-win32-x64-msvc': 13.1.1 - transitivePeerDependencies: - - '@babel/core' - - babel-plugin-macros - dev: false - - /nlcst-to-string/3.1.0: - resolution: {integrity: sha512-Y8HQWKw/zrHTCnu2zcFBN1dV6vN0NUG7s5fkEj380G8tF3R+vA2KG+tDl2QoHVQCTHGHVXwoni2RQkDSFQb1PA==} - dependencies: - '@types/nlcst': 1.0.0 - - /no-case/3.0.4: - resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} - dependencies: - lower-case: 2.0.2 - tslib: 2.4.1 - dev: true - - /node-abi/3.31.0: - resolution: {integrity: sha512-eSKV6s+APenqVh8ubJyiu/YhZgxQpGP66ntzUb3lY1xB9ukSRaGnx0AIxI+IM+1+IVYC1oWobgG5L3Lt9ARykQ==} - engines: {node: '>=10'} - dependencies: - semver: 7.3.8 - dev: true - - /node-addon-api/5.0.0: - resolution: {integrity: sha512-CvkDw2OEnme7ybCykJpVcKH+uAOLV2qLqiyla128dN9TkEWfrYmxG6C2boDe5KcNQqZF3orkqzGgOMvZ/JNekA==} - dev: true - - /node-domexception/1.0.0: - resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} - engines: {node: '>=10.5.0'} - - /node-fetch/3.3.0: - resolution: {integrity: sha512-BKwRP/O0UvoMKp7GNdwPlObhYGB5DQqwhEDQlNKuoqwVYSxkSZCSbHjnFFmUEtwSKRPU4kNK8PbDYYitwaE3QA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - data-uri-to-buffer: 4.0.0 - fetch-blob: 3.2.0 - formdata-polyfill: 4.0.10 - - /node-html-parser/6.1.4: - resolution: {integrity: sha512-3muP9Uy/Pz7bQa9TNYVQzWJhNZMqyCx7xJle8kz2/y1UgzAUyXXShc1IcPaJy6u07CE3K5rQcRwlvHzmlySRjg==} - dependencies: - css-select: 5.1.0 - he: 1.2.0 - dev: true - - /node-releases/2.0.8: - resolution: {integrity: sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==} - - /normalize-path/3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - dev: true - - /normalize-range/0.1.2: - resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} - engines: {node: '>=0.10.0'} - dev: true - - /npm-run-path/5.1.0: - resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - path-key: 4.0.0 - - /nth-check/2.1.1: - resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - dependencies: - boolbase: 1.0.0 - dev: true - - /object-hash/3.0.0: - resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} - engines: {node: '>= 6'} - dev: true - - /object-keys/1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} - - /once/1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - dependencies: - wrappy: 1.0.2 - - /onetime/5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} - dependencies: - mimic-fn: 2.1.0 - - /onetime/6.0.0: - resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} - engines: {node: '>=12'} - dependencies: - mimic-fn: 4.0.0 - - /open/8.4.0: - resolution: {integrity: sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==} - engines: {node: '>=12'} - dependencies: - define-lazy-prop: 2.0.0 - is-docker: 2.2.1 - is-wsl: 2.2.0 - - /ora/6.1.2: - resolution: {integrity: sha512-EJQ3NiP5Xo94wJXIzAyOtSb0QEIAUu7m8t6UZ9krbz0vAJqr92JpcK/lEXg91q6B9pEGqrykkd2EQplnifDSBw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - bl: 5.1.0 - chalk: 5.2.0 - cli-cursor: 4.0.0 - cli-spinners: 2.7.0 - is-interactive: 2.0.0 - is-unicode-supported: 1.3.0 - log-symbols: 5.1.0 - strip-ansi: 7.0.1 - wcwidth: 1.0.1 - - /p-limit/2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} - dependencies: - p-try: 2.2.0 - - /p-limit/3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - dependencies: - yocto-queue: 0.1.0 - - /p-locate/4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} - dependencies: - p-limit: 2.3.0 - - /p-locate/5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - dependencies: - p-limit: 3.1.0 - - /p-map/3.0.0: - resolution: {integrity: sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==} - engines: {node: '>=8'} - dependencies: - aggregate-error: 3.1.0 - - /p-try/2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} - - /param-case/3.0.4: - resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} - dependencies: - dot-case: 3.0.4 - tslib: 2.4.1 - dev: true - - /parse-entities/4.0.0: - resolution: {integrity: sha512-5nk9Fn03x3rEhGaX1FU6IDwG/k+GxLXlFAkgrbM1asuAFl3BhdQWvASaIsmwWypRNcZKHPYnIuOSfIWEyEQnPQ==} - dependencies: - '@types/unist': 2.0.6 - character-entities: 2.0.2 - character-entities-legacy: 3.0.0 - character-reference-invalid: 2.0.1 - decode-named-character-reference: 1.0.2 - is-alphanumerical: 2.0.1 - is-decimal: 2.0.1 - is-hexadecimal: 2.0.1 - - /parse-latin/5.0.1: - resolution: {integrity: sha512-b/K8ExXaWC9t34kKeDV8kGXBkXZ1HCSAZRYE7HR14eA1GlXX5L8iWhs8USJNhQU9q5ci413jCKF0gOyovvyRBg==} - dependencies: - nlcst-to-string: 3.1.0 - unist-util-modify-children: 3.1.0 - unist-util-visit-children: 2.0.1 - - /parse5/6.0.1: - resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} - - /pascal-case/3.1.2: - resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} - dependencies: - no-case: 3.0.4 - tslib: 2.4.1 - dev: true - - /path-browserify/1.0.1: - resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} - - /path-exists/4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - - /path-is-absolute/1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - - /path-key/3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - - /path-key/4.0.0: - resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} - engines: {node: '>=12'} - - /path-parse/1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - - /path-to-regexp/6.2.1: - resolution: {integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==} - - /path-type/4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - - /pathe/0.2.0: - resolution: {integrity: sha512-sTitTPYnn23esFR3RlqYBWn4c45WGeLcsKzQiUpXJAyfcWkolvlYpV8FLo7JishK946oQwMFUCHXQ9AjGPKExw==} - dev: true - - /pathe/1.0.0: - resolution: {integrity: sha512-nPdMG0Pd09HuSsr7QOKUXO2Jr9eqaDiZvDwdyIhNG5SHYujkQHYKDfGQkulBxvbDHz8oHLsTgKN86LSwYzSHAg==} - dev: true - - /pathval/1.1.1: - resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} - dev: true - - /picocolors/1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - - /picomatch/2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - - /pify/2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} - engines: {node: '>=0.10.0'} - dev: true - - /pify/4.0.1: - resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} - engines: {node: '>=6'} - - /pkg-dir/4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} - dependencies: - find-up: 4.1.0 - - /pkg-types/1.0.1: - resolution: {integrity: sha512-jHv9HB+Ho7dj6ItwppRDDl0iZRYBD0jsakHXtFgoLr+cHSF6xC+QL54sJmWxyGxOLYSHm0afhXhXcQDQqH9z8g==} - dependencies: - jsonc-parser: 3.2.0 - mlly: 1.1.0 - pathe: 1.0.0 - dev: true - - /postcss-import/14.1.0_postcss@8.4.21: - resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==} - engines: {node: '>=10.0.0'} - peerDependencies: - postcss: ^8.0.0 - dependencies: - postcss: 8.4.21 - postcss-value-parser: 4.2.0 - read-cache: 1.0.0 - resolve: 1.22.1 - dev: true - - /postcss-js/4.0.0_postcss@8.4.21: - 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.21 - dev: true - - /postcss-load-config/3.1.4_postcss@8.4.21: - resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} - engines: {node: '>= 10'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - dependencies: - lilconfig: 2.0.6 - postcss: 8.4.21 - yaml: 1.10.2 - - /postcss-nested/6.0.0_postcss@8.4.21: - resolution: {integrity: sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.2.14 - dependencies: - postcss: 8.4.21 - postcss-selector-parser: 6.0.11 - dev: true - - /postcss-selector-parser/6.0.10: - resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} - engines: {node: '>=4'} - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - dev: true - - /postcss-selector-parser/6.0.11: - resolution: {integrity: sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==} - engines: {node: '>=4'} - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - dev: true - - /postcss-value-parser/4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - dev: true - - /postcss/8.4.14: - resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==} - engines: {node: ^10 || ^12 || >=14} - dependencies: - nanoid: 3.3.4 - picocolors: 1.0.0 - source-map-js: 1.0.2 - dev: false - - /postcss/8.4.21: - resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==} - engines: {node: ^10 || ^12 || >=14} - dependencies: - nanoid: 3.3.4 - picocolors: 1.0.0 - source-map-js: 1.0.2 - - /prebuild-install/7.1.1: - resolution: {integrity: sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==} - engines: {node: '>=10'} - hasBin: true - dependencies: - detect-libc: 2.0.1 - expand-template: 2.0.3 - github-from-package: 0.0.0 - minimist: 1.2.7 - mkdirp-classic: 0.5.3 - napi-build-utils: 1.0.2 - node-abi: 3.31.0 - pump: 3.0.0 - rc: 1.2.8 - simple-get: 4.0.1 - tar-fs: 2.1.1 - tunnel-agent: 0.6.0 - dev: true - - /preferred-pm/3.0.3: - resolution: {integrity: sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==} - engines: {node: '>=10'} - dependencies: - find-up: 5.0.0 - find-yarn-workspace-root2: 1.2.16 - path-exists: 4.0.0 - which-pm: 2.0.0 - - /prettier-plugin-astro/0.7.2: - resolution: {integrity: sha512-mmifnkG160BtC727gqoimoxnZT/dwr8ASxpoGGl6EHevhfblSOeu+pwH1LAm5Qu1MynizktztFujHHaijLCkww==} - engines: {node: ^14.15.0 || >=16.0.0, pnpm: '>=7.14.0'} - dependencies: - '@astrojs/compiler': 0.31.4 - prettier: 2.8.2 - sass-formatter: 0.7.5 - synckit: 0.8.4 - - /prettier/2.8.2: - resolution: {integrity: sha512-BtRV9BcncDyI2tsuS19zzhzoxD8Dh8LiCx7j7tHzrkz8GFXAexeWFdi22mjE1d16dftH2qNaytVxqiRTGlMfpw==} - engines: {node: '>=10.13.0'} - hasBin: true - - /prismjs/1.29.0: - resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} - engines: {node: '>=6'} - - /prompts/2.4.2: - resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} - engines: {node: '>= 6'} - dependencies: - kleur: 3.0.3 - sisteransi: 1.0.5 - - /property-information/6.2.0: - resolution: {integrity: sha512-kma4U7AFCTwpqq5twzC1YVIDXSqg6qQK6JN0smOw8fgRy1OkMi0CYSzFmsy6dnqSenamAtj0CyXMUJ1Mf6oROg==} - - /pump/3.0.0: - resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} - dependencies: - end-of-stream: 1.4.4 - once: 1.4.0 - dev: true - - /queue-microtask/1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - - /quick-lru/5.1.1: - resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} - engines: {node: '>=10'} - dev: true - - /rc/1.2.8: - resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} - hasBin: true - dependencies: - deep-extend: 0.6.0 - ini: 1.3.8 - minimist: 1.2.7 - strip-json-comments: 2.0.1 - dev: true - - /react-dom/18.2.0_react@18.2.0: - resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} - peerDependencies: - react: ^18.2.0 - dependencies: - loose-envify: 1.4.0 - react: 18.2.0 - scheduler: 0.23.0 - - /react/18.2.0: - resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} - engines: {node: '>=0.10.0'} - dependencies: - loose-envify: 1.4.0 - - /read-cache/1.0.0: - resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} - dependencies: - pify: 2.3.0 - dev: true - - /readable-stream/3.6.0: - resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} - engines: {node: '>= 6'} - dependencies: - inherits: 2.0.4 - string_decoder: 1.3.0 - util-deprecate: 1.0.2 - - /readdirp/3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - dependencies: - picomatch: 2.3.1 - dev: true - - /recast/0.20.5: - resolution: {integrity: sha512-E5qICoPoNL4yU0H0NoBDntNB0Q5oMSNh9usFctYniLBluTthi3RsQVBXIJNbApOlvSwW/RGxIuokPcAc59J5fQ==} - engines: {node: '>= 4'} - dependencies: - ast-types: 0.14.2 - esprima: 4.0.1 - source-map: 0.6.1 - tslib: 2.4.1 - - /regenerate-unicode-properties/10.1.0: - resolution: {integrity: sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==} - engines: {node: '>=4'} - dependencies: - regenerate: 1.4.2 - dev: true - - /regenerate/1.4.2: - resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} - dev: true - - /regenerator-runtime/0.13.11: - resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} - dev: true - - /regenerator-transform/0.15.1: - resolution: {integrity: sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==} - dependencies: - '@babel/runtime': 7.20.7 - dev: true - - /regexpu-core/5.2.2: - resolution: {integrity: sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==} - engines: {node: '>=4'} - dependencies: - regenerate: 1.4.2 - 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.1.0 - dev: true - - /regjsgen/0.7.1: - resolution: {integrity: sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==} - dev: true - - /regjsparser/0.9.1: - resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} - hasBin: true - dependencies: - jsesc: 0.5.0 - dev: true - - /rehype-external-links/2.0.1: - resolution: {integrity: sha512-u2dNypma+ps12SJWlS23zvbqwNx0Hl24t0YHXSM/6FCZj/pqWETCO3WyyrvALv4JYvRtuPjhiv2Lpen15ESqbA==} - dependencies: - '@types/hast': 2.3.4 - extend: 3.0.2 - is-absolute-url: 4.0.1 - space-separated-tokens: 2.0.2 - unified: 10.1.2 - unist-util-visit: 4.1.1 - dev: true - - /rehype-parse/8.0.4: - resolution: {integrity: sha512-MJJKONunHjoTh4kc3dsM1v3C9kGrrxvA3U8PxZlP2SjH8RNUSrb+lF7Y0KVaUDnGH2QZ5vAn7ulkiajM9ifuqg==} - dependencies: - '@types/hast': 2.3.4 - hast-util-from-parse5: 7.1.0 - parse5: 6.0.1 - unified: 10.1.2 - - /rehype-raw/6.1.1: - resolution: {integrity: sha512-d6AKtisSRtDRX4aSPsJGTfnzrX2ZkHQLE5kiUuGOeEoLpbEulFF4hj0mLPbsa+7vmguDKOVVEQdHKDSwoaIDsQ==} - dependencies: - '@types/hast': 2.3.4 - hast-util-raw: 7.2.3 - unified: 10.1.2 - - /rehype-stringify/9.0.3: - resolution: {integrity: sha512-kWiZ1bgyWlgOxpqD5HnxShKAdXtb2IUljn3hQAhySeak6IOQPPt6DeGnsIh4ixm7yKJWzm8TXFuC/lPfcWHJqw==} - dependencies: - '@types/hast': 2.3.4 - hast-util-to-html: 8.0.4 - unified: 10.1.2 - - /rehype/12.0.1: - resolution: {integrity: sha512-ey6kAqwLM3X6QnMDILJthGvG1m1ULROS9NT4uG9IDCuv08SFyLlreSuvOa//DgEvbXx62DS6elGVqusWhRUbgw==} - dependencies: - '@types/hast': 2.3.4 - rehype-parse: 8.0.4 - rehype-stringify: 9.0.3 - unified: 10.1.2 - - /relateurl/0.2.7: - resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} - engines: {node: '>= 0.10'} - dev: true - - /remark-gfm/3.0.1: - resolution: {integrity: sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==} - dependencies: - '@types/mdast': 3.0.10 - mdast-util-gfm: 2.0.1 - micromark-extension-gfm: 2.0.1 - unified: 10.1.2 - transitivePeerDependencies: - - supports-color - - /remark-parse/10.0.1: - resolution: {integrity: sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw==} - dependencies: - '@types/mdast': 3.0.10 - mdast-util-from-markdown: 1.2.0 - unified: 10.1.2 - transitivePeerDependencies: - - supports-color - - /remark-rehype/10.1.0: - resolution: {integrity: sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==} - dependencies: - '@types/hast': 2.3.4 - '@types/mdast': 3.0.10 - mdast-util-to-hast: 12.2.5 - unified: 10.1.2 - - /remark-smartypants/2.0.0: - resolution: {integrity: sha512-Rc0VDmr/yhnMQIz8n2ACYXlfw/P/XZev884QU1I5u+5DgJls32o97Vc1RbK3pfumLsJomS2yy8eT4Fxj/2MDVA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - retext: 8.1.0 - retext-smartypants: 5.2.0 - unist-util-visit: 4.1.1 - - /require-directory/2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - dev: false - - /resolve-from/5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - dev: true - - /resolve-pkg/2.0.0: - resolution: {integrity: sha512-+1lzwXehGCXSeryaISr6WujZzowloigEofRB+dj75y9RRa/obVcYgbHJd53tdYw8pvZj8GojXaaENws8Ktw/hQ==} - engines: {node: '>=8'} - dependencies: - resolve-from: 5.0.0 - dev: true - - /resolve/1.22.1: - resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} - hasBin: true - dependencies: - is-core-module: 2.11.0 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - - /restore-cursor/4.0.0: - resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - onetime: 5.1.2 - signal-exit: 3.0.7 - - /retext-latin/3.1.0: - resolution: {integrity: sha512-5MrD1tuebzO8ppsja5eEu+ZbBeUNCjoEarn70tkXOS7Bdsdf6tNahsv2bY0Z8VooFF6cw7/6S+d3yI/TMlMVVQ==} - dependencies: - '@types/nlcst': 1.0.0 - parse-latin: 5.0.1 - unherit: 3.0.1 - unified: 10.1.2 - - /retext-smartypants/5.2.0: - resolution: {integrity: sha512-Do8oM+SsjrbzT2UNIKgheP0hgUQTDDQYyZaIY3kfq0pdFzoPk+ZClYJ+OERNXveog4xf1pZL4PfRxNoVL7a/jw==} - dependencies: - '@types/nlcst': 1.0.0 - nlcst-to-string: 3.1.0 - unified: 10.1.2 - unist-util-visit: 4.1.1 - - /retext-stringify/3.1.0: - resolution: {integrity: sha512-767TLOaoXFXyOnjx/EggXlb37ZD2u4P1n0GJqVdpipqACsQP+20W+BNpMYrlJkq7hxffnFk+jc6mAK9qrbuB8w==} - dependencies: - '@types/nlcst': 1.0.0 - nlcst-to-string: 3.1.0 - unified: 10.1.2 - - /retext/8.1.0: - resolution: {integrity: sha512-N9/Kq7YTn6ZpzfiGW45WfEGJqFf1IM1q8OsRa1CGzIebCJBNCANDRmOrholiDRGKo/We7ofKR4SEvcGAWEMD3Q==} - dependencies: - '@types/nlcst': 1.0.0 - retext-latin: 3.1.0 - retext-stringify: 3.1.0 - unified: 10.1.2 - - /reusify/1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - - /rimraf/3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - hasBin: true - dependencies: - glob: 7.1.6 - - /roarr/2.15.4: - resolution: {integrity: sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==} - engines: {node: '>=8.0'} - dependencies: - boolean: 3.2.0 - detect-node: 2.1.0 - globalthis: 1.0.3 - json-stringify-safe: 5.0.1 - semver-compare: 1.0.0 - sprintf-js: 1.1.2 - - /rollup-plugin-analyzer/4.0.0: - resolution: {integrity: sha512-LL9GEt3bkXp6Wa19SNR5MWcvHNMvuTFYg+eYBZN2OIFhSWN+pEJUQXEKu5BsOeABob3x9PDaLKW7w5iOJnsESQ==} - engines: {node: '>=8.0.0'} - dev: false - - /rollup-plugin-delete/2.0.0: - resolution: {integrity: sha512-/VpLMtDy+8wwRlDANuYmDa9ss/knGsAgrDhM+tEwB1npHwNu4DYNmDfUL55csse/GHs9Q+SMT/rw9uiaZ3pnzA==} - engines: {node: '>=10'} - dependencies: - del: 5.1.0 - - /rollup-plugin-dts/5.1.1_eymahajmafh3u7vrzmo7ylp2pa: - resolution: {integrity: sha512-zpgo52XmnLg8w4k3MScinFHZK1+ro6r7uVe34fJ0Ee8AM45FvgvTuvfWWaRgIpA4pQ1BHJuu2ospncZhkcJVeA==} - engines: {node: '>=v14'} - peerDependencies: - rollup: ^3.0.0 - typescript: ^4.1 - dependencies: - magic-string: 0.27.0 - rollup: 3.10.0 - typescript: 4.9.4 - optionalDependencies: - '@babel/code-frame': 7.18.6 - dev: false - - /rollup-plugin-multi-input/1.3.3: - resolution: {integrity: sha512-4I9gz68SNkJgxvgNnjOrb2lH3yYSXlb8AscwpqF3nxRjbxipmZal8of4FIoqK0fVS+PazmrDrDPuhfb7epkpkg==} - dependencies: - core-js: 3.27.2 - fast-glob: 3.2.12 - lodash: 4.17.21 - dev: false - - /rollup-plugin-node-externals/5.1.0_rollup@3.10.0: - resolution: {integrity: sha512-3kBlflgq7X7xZJCskDz3PRmnuVptEal/VHOmYCozqncVRHXp9986fwyQdsFpzaQljjF2WOdlLMZLyNBxbA5hww==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^2.60.0 || ^3.0.0 - dependencies: - rollup: 3.10.0 - dev: false - - /rollup-plugin-swc3/0.8.0_zlsyfn7h5mqntbbpmgh5b3ythu: - resolution: {integrity: sha512-IJapqORpU4NgSJHaFvbTcUe4WQPzgE6v8Suu95ZO4Qw1VwGRcuurvSCuYX1fIzR+DLVlZH4zq/T6uqbmw3Bzxw==} - engines: {node: '>=12'} - peerDependencies: - '@swc/core': '>=1.2.165' - rollup: ^2.0.0 || ^3.0.0 - dependencies: - '@fastify/deepmerge': 1.3.0 - '@rollup/pluginutils': 4.2.1 - '@swc/core': 1.3.27 - get-tsconfig: 4.3.0 - rollup: 3.10.0 - dev: false - - /rollup-plugin-typescript2/0.34.1_eymahajmafh3u7vrzmo7ylp2pa: - resolution: {integrity: sha512-P4cHLtGikESmqi1CA+tdMDUv8WbQV48mzPYt77TSTOPJpERyZ9TXdDgjSDix8Fkqce6soYz3+fa4lrC93IEkcw==} - peerDependencies: - rollup: '>=1.26.3' - typescript: '>=2.4.0' - dependencies: - '@rollup/pluginutils': 4.2.1 - find-cache-dir: 3.3.2 - fs-extra: 10.1.0 - rollup: 3.10.0 - semver: 7.3.8 - tslib: 2.4.1 - typescript: 4.9.4 - dev: false - - /rollup-plugin-visualizer/5.9.0_rollup@3.10.0: - resolution: {integrity: sha512-bbDOv47+Bw4C/cgs0czZqfm8L82xOZssk4ayZjG40y9zbXclNk7YikrZTDao6p7+HDiGxrN0b65SgZiVm9k1Cg==} - engines: {node: '>=14'} - hasBin: true - peerDependencies: - rollup: 2.x || 3.x - peerDependenciesMeta: - rollup: - optional: true - dependencies: - open: 8.4.0 - picomatch: 2.3.1 - rollup: 3.10.0 - source-map: 0.7.4 - yargs: 17.6.2 - dev: false - - /rollup-preset-solid/2.0.1: - resolution: {integrity: sha512-CPJn3SqADlIxhAW3jwZuAFRyZcz7HPeUAz4f+6BzulxHnK4v6tgoTbMvk8vEsfsvHwiTmX93KHIKdf79aTdVSA==} - dependencies: - '@babel/core': 7.20.12 - '@babel/preset-env': 7.20.2_@babel+core@7.20.12 - '@babel/preset-typescript': 7.18.6_@babel+core@7.20.12 - '@rollup/plugin-babel': 6.0.3_rwtmcocladng44j6a3ylx32v3q - '@rollup/plugin-node-resolve': 15.0.1_rollup@3.10.0 - '@rollup/plugin-terser': 0.1.0_rollup@3.10.0 - babel-preset-solid: 1.6.7_@babel+core@7.20.12 - colorette: 2.0.19 - esbuild: 0.15.18 - merge-anything: 5.1.4 - rollup: 3.10.0 - typescript: 4.9.4 - transitivePeerDependencies: - - '@types/babel__core' - - supports-color - dev: true - - /rollup/2.79.1: - resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} - engines: {node: '>=10.0.0'} - hasBin: true - optionalDependencies: - fsevents: 2.3.2 - - /rollup/3.10.0: - resolution: {integrity: sha512-JmRYz44NjC1MjVF2VKxc0M1a97vn+cDxeqWmnwyAF4FvpjK8YFdHpaqvQB+3IxCvX05vJxKZkoMDU8TShhmJVA==} - engines: {node: '>=14.18.0', npm: '>=8.0.0'} - hasBin: true - optionalDependencies: - fsevents: 2.3.2 - - /run-parallel/1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - dependencies: - queue-microtask: 1.2.3 - - /s.color/0.0.15: - resolution: {integrity: sha512-AUNrbEUHeKY8XsYr/DYpl+qk5+aM+DChopnWOPEzn8YKzOhv4l2zH6LzZms3tOZP3wwdOyc0RmTciyi46HLIuA==} - - /sade/1.8.1: - resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} - engines: {node: '>=6'} - dependencies: - mri: 1.2.0 - - /safe-buffer/5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - - /sass-formatter/0.7.5: - resolution: {integrity: sha512-NKFP8ddjhUYi6A/iD1cEtzkEs91U61kzqe3lY9SVNuvX7LGc88xnEN0mmsWL7Ol//YTi2GL/ol7b9XZ2+hgXuA==} - dependencies: - suf-log: 2.5.3 - - /sax/1.2.4: - resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} - dev: true - - /scheduler/0.23.0: - resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} - dependencies: - loose-envify: 1.4.0 - - /section-matter/1.0.0: - resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} - engines: {node: '>=4'} - dependencies: - extend-shallow: 2.0.1 - kind-of: 6.0.3 - - /semver-compare/1.0.0: - resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==} - - /semver/6.3.0: - resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} - hasBin: true - - /semver/7.3.8: - resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} - engines: {node: '>=10'} - hasBin: true - dependencies: - lru-cache: 6.0.0 - - /serialize-error/7.0.1: - resolution: {integrity: sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==} - engines: {node: '>=10'} - dependencies: - type-fest: 0.13.1 - - /sharp/0.31.3: - resolution: {integrity: sha512-XcR4+FCLBFKw1bdB+GEhnUNXNXvnt0tDo4WsBsraKymuo/IAuPuCBVAL2wIkUw2r/dwFW5Q5+g66Kwl2dgDFVg==} - engines: {node: '>=14.15.0'} - requiresBuild: true - dependencies: - color: 4.2.3 - detect-libc: 2.0.1 - node-addon-api: 5.0.0 - prebuild-install: 7.1.1 - semver: 7.3.8 - simple-get: 4.0.1 - tar-fs: 2.1.1 - tunnel-agent: 0.6.0 - dev: true - - /shebang-command/2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - dependencies: - shebang-regex: 3.0.0 - - /shebang-regex/3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - - /shiki/0.11.1: - resolution: {integrity: sha512-EugY9VASFuDqOexOgXR18ZV+TbFrQHeCpEYaXamO+SZlsnT/2LxuLBX25GGtIrwaEVFXUAbUQ601SWE2rMwWHA==} - dependencies: - jsonc-parser: 3.2.0 - vscode-oniguruma: 1.7.0 - vscode-textmate: 6.0.0 - - /siginfo/2.0.0: - resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} - dev: true - - /signal-exit/3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - - /simple-concat/1.0.1: - resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} - dev: true - - /simple-get/4.0.1: - resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} - dependencies: - decompress-response: 6.0.0 - once: 1.4.0 - simple-concat: 1.0.1 - dev: true - - /simple-swizzle/0.2.2: - resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} - dependencies: - is-arrayish: 0.3.2 - dev: true - - /sirv/2.0.2: - resolution: {integrity: sha512-4Qog6aE29nIjAOKe/wowFTxOdmbEZKb+3tsLljaBRzJwtqto0BChD2zzH0LhgCSXiI+V7X+Y45v14wBZQ1TK3w==} - engines: {node: '>= 10'} - dependencies: - '@polka/url': 1.0.0-next.21 - mrmime: 1.0.1 - totalist: 3.0.0 - - /sisteransi/1.0.5: - resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - - /sitemap/7.1.1: - resolution: {integrity: sha512-mK3aFtjz4VdJN0igpIJrinf3EO8U8mxOPsTBzSsy06UtjZQJ3YY3o3Xa7zSc5nMqcMrRwlChHZ18Kxg0caiPBg==} - engines: {node: '>=12.0.0', npm: '>=5.6.0'} - hasBin: true - dependencies: - '@types/node': 17.0.45 - '@types/sax': 1.2.4 - arg: 5.0.2 - sax: 1.2.4 - dev: true - - /slash/3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - - /slash/4.0.0: - resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} - engines: {node: '>=12'} - - /solid-js/1.6.8: - resolution: {integrity: sha512-+X5rf4bL3Il/LI2pn6O2d63D/KyG8Shxj3DM6violSPOhRgm5ln37Pq6uVDAvJcmsObOBeGOjXAwZvqwyZjisg==} - dependencies: - csstype: 3.1.1 - - /source-map-js/1.0.2: - resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} - engines: {node: '>=0.10.0'} - - /source-map-support/0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - dev: true - - /source-map/0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - - /source-map/0.7.4: - resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} - engines: {node: '>= 8'} - - /space-separated-tokens/2.0.2: - resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} - - /sprintf-js/1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - - /sprintf-js/1.1.2: - resolution: {integrity: sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==} - - /stable/0.1.8: - resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} - deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' - dev: true - - /stackback/0.0.2: - resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - dev: true - - /string-width/4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - - /string-width/5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 - strip-ansi: 7.0.1 - - /string_decoder/1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - dependencies: - safe-buffer: 5.2.1 - - /stringify-entities/4.0.3: - resolution: {integrity: sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==} - dependencies: - character-entities-html4: 2.1.0 - character-entities-legacy: 3.0.0 - - /strip-ansi/6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - dependencies: - ansi-regex: 5.0.1 - - /strip-ansi/7.0.1: - resolution: {integrity: sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==} - engines: {node: '>=12'} - dependencies: - ansi-regex: 6.0.1 - - /strip-bom-string/1.0.0: - resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} - engines: {node: '>=0.10.0'} - - /strip-bom/3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - - /strip-bom/4.0.0: - resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} - engines: {node: '>=8'} - - /strip-final-newline/3.0.0: - resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} - engines: {node: '>=12'} - - /strip-json-comments/2.0.1: - resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} - engines: {node: '>=0.10.0'} - dev: true - - /strip-literal/1.0.0: - resolution: {integrity: sha512-5o4LsH1lzBzO9UFH63AJ2ad2/S2AVx6NtjOcaz+VTT2h1RiRvbipW72z8M/lxEhcPHDBQwpDrnTF7sXy/7OwCQ==} - dependencies: - acorn: 8.8.1 - dev: true - - /style-to-object/0.3.0: - resolution: {integrity: sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==} - dependencies: - inline-style-parser: 0.1.1 - - /styled-jsx/5.1.1_react@18.2.0: - resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} - engines: {node: '>= 12.0.0'} - peerDependencies: - '@babel/core': '*' - babel-plugin-macros: '*' - react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' - peerDependenciesMeta: - '@babel/core': - optional: true - babel-plugin-macros: - optional: true - dependencies: - client-only: 0.0.1 - react: 18.2.0 - dev: false - - /suf-log/2.5.3: - resolution: {integrity: sha512-KvC8OPjzdNOe+xQ4XWJV2whQA0aM1kGVczMQ8+dStAO6KfEB140JEVQ9dE76ONZ0/Ylf67ni4tILPJB41U0eow==} - dependencies: - s.color: 0.0.15 - - /supports-color/5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} - dependencies: - has-flag: 3.0.0 - - /supports-color/7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - dependencies: - has-flag: 4.0.0 - - /supports-esm/1.0.0: - resolution: {integrity: sha512-96Am8CDqUaC0I2+C/swJ0yEvM8ZnGn4unoers/LSdE4umhX7mELzqyLzx3HnZAluq5PXIsGMKqa7NkqaeHMPcg==} - dependencies: - has-package-exports: 1.3.0 - - /supports-preserve-symlinks-flag/1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - - /svgo/2.8.0: - resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==} - engines: {node: '>=10.13.0'} - hasBin: true - dependencies: - '@trysound/sax': 0.2.0 - commander: 7.2.0 - css-select: 4.3.0 - css-tree: 1.1.3 - csso: 4.2.0 - picocolors: 1.0.0 - stable: 0.1.8 - dev: true - - /svgo/3.0.2: - resolution: {integrity: sha512-Z706C1U2pb1+JGP48fbazf3KxHrWOsLme6Rv7imFBn5EnuanDW1GPaA/P1/dvObE670JDePC3mnj0k0B7P0jjQ==} - engines: {node: '>=14.0.0'} - hasBin: true - dependencies: - '@trysound/sax': 0.2.0 - commander: 7.2.0 - css-select: 5.1.0 - css-tree: 2.3.1 - csso: 5.0.5 - picocolors: 1.0.0 - dev: true - - /synckit/0.8.4: - resolution: {integrity: sha512-Dn2ZkzMdSX827QbowGbU/4yjWuvNaCoScLLoMo/yKbu+P4GBR6cRGKZH27k6a9bRzdqcyd1DE96pQtQ6uNkmyw==} - engines: {node: ^14.18.0 || >=16.0.0} - dependencies: - '@pkgr/utils': 2.3.1 - tslib: 2.4.1 - - /tailwind-scrollbar/2.1.0_tailwindcss@3.2.4: - resolution: {integrity: sha512-zpvY5mDs0130YzYjZKBiDaw32rygxk5RyJ4KmeHjGnwkvbjm/PszON1m4Bbt2DkMRIXlXsfNevykAESgURN4KA==} - engines: {node: '>=12.13.0'} - peerDependencies: - tailwindcss: 3.x - dependencies: - tailwindcss: 3.2.4 - dev: true - - /tailwindcss/3.2.4: - resolution: {integrity: sha512-AhwtHCKMtR71JgeYDaswmZXhPcW9iuI9Sp2LvZPo9upDZ7231ZJ7eA9RaURbhpXGVlrjX4cFNlB4ieTetEb7hQ==} - engines: {node: '>=12.13.0'} - hasBin: true - 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 - micromatch: 4.0.5 - normalize-path: 3.0.0 - object-hash: 3.0.0 - picocolors: 1.0.0 - postcss: 8.4.21 - postcss-import: 14.1.0_postcss@8.4.21 - postcss-js: 4.0.0_postcss@8.4.21 - postcss-load-config: 3.1.4_postcss@8.4.21 - postcss-nested: 6.0.0_postcss@8.4.21 - postcss-selector-parser: 6.0.11 - postcss-value-parser: 4.2.0 - quick-lru: 5.1.1 - resolve: 1.22.1 - transitivePeerDependencies: - - ts-node - dev: true - - /tar-fs/2.1.1: - resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} - dependencies: - chownr: 1.1.4 - mkdirp-classic: 0.5.3 - pump: 3.0.0 - tar-stream: 2.2.0 - dev: true - - /tar-stream/2.2.0: - resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} - engines: {node: '>=6'} - dependencies: - bl: 4.1.0 - end-of-stream: 1.4.4 - fs-constants: 1.0.0 - inherits: 2.0.4 - readable-stream: 3.6.0 - dev: true - - /terser/5.16.1: - resolution: {integrity: sha512-xvQfyfA1ayT0qdK47zskQgRZeWLoOQ8JQ6mIgRGVNwZKdQMU+5FkCBjmv4QjcrTzyZquRw2FVtlJSRUmMKQslw==} - engines: {node: '>=10'} - hasBin: true - dependencies: - '@jridgewell/source-map': 0.3.2 - acorn: 8.8.1 - commander: 2.20.3 - source-map-support: 0.5.21 - dev: true - - /tiny-glob/0.2.9: - resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} - dependencies: - globalyzer: 0.1.0 - globrex: 0.1.2 - - /tinybench/2.3.1: - resolution: {integrity: sha512-hGYWYBMPr7p4g5IarQE7XhlyWveh1EKhy4wUBS1LrHXCKYgvz+4/jCqgmJqZxxldesn05vccrtME2RLLZNW7iA==} - dev: true - - /tinypool/0.3.0: - resolution: {integrity: sha512-NX5KeqHOBZU6Bc0xj9Vr5Szbb1j8tUHIeD18s41aDJaPeC5QTdEhK0SpdpUrZlj2nv5cctNcSjaKNanXlfcVEQ==} - engines: {node: '>=14.0.0'} - dev: true - - /tinyspy/1.0.2: - resolution: {integrity: sha512-bSGlgwLBYf7PnUsQ6WOc6SJ3pGOcd+d8AA6EUnLDDM0kWEstC1JIlSZA3UNliDXhd9ABoS7hiRBDCu+XP/sf1Q==} - engines: {node: '>=14.0.0'} - dev: true - - /to-fast-properties/2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} - - /to-regex-range/5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - dependencies: - is-number: 7.0.0 - - /totalist/3.0.0: - resolution: {integrity: sha512-eM+pCBxXO/njtF7vdFsHuqb+ElbxqtI4r5EAvk6grfAFyJ6IvWlSkfZ5T9ozC6xWw3Fj1fGoSmrl0gUs46JVIw==} - engines: {node: '>=6'} - - /trim-lines/3.0.1: - resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} - - /trough/2.1.0: - resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} - - /tsconfig-resolver/3.0.1: - resolution: {integrity: sha512-ZHqlstlQF449v8glscGRXzL6l2dZvASPCdXJRWG4gHEZlUVx2Jtmr+a2zeVG4LCsKhDXKRj5R3h0C/98UcVAQg==} - dependencies: - '@types/json5': 0.0.30 - '@types/resolve': 1.20.2 - json5: 2.2.3 - resolve: 1.22.1 - strip-bom: 4.0.0 - type-fest: 0.13.1 - - /tslib/2.4.1: - resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==} - - /tsm/2.3.0: - resolution: {integrity: sha512-++0HFnmmR+gMpDtKTnW3XJ4yv9kVGi20n+NfyQWB9qwJvTaIWY9kBmzek2YUQK5APTQ/1DTrXmm4QtFPmW9Rzw==} - engines: {node: '>=12'} - hasBin: true - dependencies: - esbuild: 0.15.18 - - /tunnel-agent/0.6.0: - resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} - dependencies: - safe-buffer: 5.2.1 - dev: true - - /type-detect/4.0.8: - resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} - engines: {node: '>=4'} - dev: true - - /type-fest/0.13.1: - resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} - engines: {node: '>=10'} - - /type-fest/2.19.0: - resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} - engines: {node: '>=12.20'} - - /typescript/4.9.4: - resolution: {integrity: sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==} - engines: {node: '>=4.2.0'} - hasBin: true - - /ufo/1.0.1: - resolution: {integrity: sha512-boAm74ubXHY7KJQZLlXrtMz52qFvpsbOxDcZOnw/Wf+LS4Mmyu7JxmzD4tDLtUQtmZECypJ0FrCz4QIe6dvKRA==} - dev: true - - /unherit/3.0.1: - resolution: {integrity: sha512-akOOQ/Yln8a2sgcLj4U0Jmx0R5jpIg2IUyRrWOzmEbjBtGzBdHtSeFKgoEcoH4KYIG/Pb8GQ/BwtYm0GCq1Sqg==} - - /unicode-canonical-property-names-ecmascript/2.0.0: - resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} - engines: {node: '>=4'} - dev: true - - /unicode-match-property-ecmascript/2.0.0: - resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} - engines: {node: '>=4'} - dependencies: - unicode-canonical-property-names-ecmascript: 2.0.0 - unicode-property-aliases-ecmascript: 2.1.0 - dev: true - - /unicode-match-property-value-ecmascript/2.1.0: - resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} - engines: {node: '>=4'} - dev: true - - /unicode-property-aliases-ecmascript/2.1.0: - resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} - engines: {node: '>=4'} - dev: true - - /unified/10.1.2: - resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} - dependencies: - '@types/unist': 2.0.6 - bail: 2.0.2 - extend: 3.0.2 - is-buffer: 2.0.5 - is-plain-obj: 4.1.0 - trough: 2.1.0 - vfile: 5.3.6 - - /unist-builder/3.0.0: - resolution: {integrity: sha512-GFxmfEAa0vi9i5sd0R2kcrI9ks0r82NasRq5QHh2ysGngrc6GiqD5CDf1FjPenY4vApmFASBIIlk/jj5J5YbmQ==} - dependencies: - '@types/unist': 2.0.6 - - /unist-util-generated/2.0.0: - resolution: {integrity: sha512-TiWE6DVtVe7Ye2QxOVW9kqybs6cZexNwTwSMVgkfjEReqy/xwGpAXb99OxktoWwmL+Z+Epb0Dn8/GNDYP1wnUw==} - - /unist-util-is/5.1.1: - resolution: {integrity: sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==} - - /unist-util-map/3.1.2: - resolution: {integrity: sha512-WLA2R6x/UaopedG2poaWLShf5LCi+BNa6mMkACdjft23PHou4v85PvZItjbO2XgXvukMP365PlL/DrbuMgr3eg==} - dependencies: - '@types/unist': 2.0.6 - - /unist-util-modify-children/3.1.0: - resolution: {integrity: sha512-L0UizdncPZ1NIwpmkwFdLo2NaK2Eb5LU/vaQ7lZGkAaOBZfsHp+8T/gVWPVmmMO1hj6gc+XeMoytut8jr7fdyA==} - dependencies: - '@types/unist': 2.0.6 - array-iterate: 2.0.1 - - /unist-util-position-from-estree/1.1.1: - resolution: {integrity: sha512-xtoY50b5+7IH8tFbkw64gisG9tMSpxDjhX9TmaJJae/XuxQ9R/Kc8Nv1eOsf43Gt4KV/LkriMy9mptDr7XLcaw==} - dependencies: - '@types/unist': 2.0.6 - - /unist-util-position/4.0.3: - resolution: {integrity: sha512-p/5EMGIa1qwbXjA+QgcBXaPWjSnZfQ2Sc3yBEEfgPwsEmJd8Qh+DSk3LGnmOM4S1bY2C0AjmMnB8RuEYxpPwXQ==} - dependencies: - '@types/unist': 2.0.6 - - /unist-util-remove-position/4.0.1: - resolution: {integrity: sha512-0yDkppiIhDlPrfHELgB+NLQD5mfjup3a8UYclHruTJWmY74je8g+CIFr79x5f6AkmzSwlvKLbs63hC0meOMowQ==} - dependencies: - '@types/unist': 2.0.6 - unist-util-visit: 4.1.1 - - /unist-util-stringify-position/3.0.2: - resolution: {integrity: sha512-7A6eiDCs9UtjcwZOcCpM4aPII3bAAGv13E96IkawkOAW0OhH+yRxtY0lzo8KiHpzEMfH7Q+FizUmwp8Iqy5EWg==} - dependencies: - '@types/unist': 2.0.6 - - /unist-util-visit-children/2.0.1: - resolution: {integrity: sha512-2cEU3dhV1hMfO9ajwb8rJsDedMfsahsm6fCfR8LxDR/w7KcB5lzHQ9dBTQIXsWGNWBFH5MPmaFP3Xh0dWLqClQ==} - dependencies: - '@types/unist': 2.0.6 - - /unist-util-visit-parents/5.1.1: - resolution: {integrity: sha512-gks4baapT/kNRaWxuGkl5BIhoanZo7sC/cUT/JToSRNL1dYoXRFl75d++NkjYk4TAu2uv2Px+l8guMajogeuiw==} - dependencies: - '@types/unist': 2.0.6 - unist-util-is: 5.1.1 - - /unist-util-visit/4.1.1: - resolution: {integrity: sha512-n9KN3WV9k4h1DxYR1LoajgN93wpEi/7ZplVe02IoB4gH5ctI1AaF2670BLHQYbwj+pY83gFtyeySFiyMHJklrg==} - dependencies: - '@types/unist': 2.0.6 - unist-util-is: 5.1.1 - unist-util-visit-parents: 5.1.1 - - /universalify/2.0.0: - resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} - engines: {node: '>= 10.0.0'} - dev: false - - /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.4 - escalade: 3.1.1 - picocolors: 1.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.2.0 - - /util-deprecate/1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - - /uvu/0.5.6: - resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==} - engines: {node: '>=8'} - hasBin: true - dependencies: - dequal: 2.0.3 - diff: 5.1.0 - kleur: 4.1.5 - sade: 1.8.1 - - /validate-html-nesting/1.1.0: - resolution: {integrity: sha512-m+tQ7mVs2AMXRP0hFFQzmdG2BRMyLJtH39AtCpJDhiHM4oL6eccFnNhnNnwrBRNlPr78Opgh3CC9am2bnaJ2Tg==} - dev: true - - /vfile-location/4.0.1: - resolution: {integrity: sha512-JDxPlTbZrZCQXogGheBHjbRWjESSPEak770XwWPfw5mTc1v1nWGLB/apzZxsx8a0SJVfF8HK8ql8RD308vXRUw==} - dependencies: - '@types/unist': 2.0.6 - vfile: 5.3.6 - - /vfile-message/3.1.3: - resolution: {integrity: sha512-0yaU+rj2gKAyEk12ffdSbBfjnnj+b1zqTBv3OQCTn8yEB02bsPizwdBPrLJjHnK+cU9EMMcUnNv938XcZIkmdA==} - dependencies: - '@types/unist': 2.0.6 - unist-util-stringify-position: 3.0.2 - - /vfile/5.3.6: - resolution: {integrity: sha512-ADBsmerdGBs2WYckrLBEmuETSPyTD4TuLxTrw0DvjirxW1ra4ZwkbzG8ndsv3Q57smvHxo677MHaQrY9yxH8cA==} - dependencies: - '@types/unist': 2.0.6 - is-buffer: 2.0.5 - unist-util-stringify-position: 3.0.2 - vfile-message: 3.1.3 - - /vite-node/0.27.2_@types+node@18.11.18: - resolution: {integrity: sha512-IDwuVhslF10qCnWOGJui7/2KksAOBHi+UbVo6Pqt4f5lgn+kS2sVvYDsETRG5PSuslisGB5CFGvb9I6FQgymBQ==} - engines: {node: '>=v14.16.0'} - hasBin: true - dependencies: - cac: 6.7.14 - debug: 4.3.4 - mlly: 1.1.0 - pathe: 0.2.0 - picocolors: 1.0.0 - source-map: 0.6.1 - source-map-support: 0.5.21 - vite: 4.0.4_@types+node@18.11.18 - transitivePeerDependencies: - - '@types/node' - - less - - sass - - stylus - - sugarss - - supports-color - - terser - dev: true - - /vite/3.2.5: - resolution: {integrity: sha512-4mVEpXpSOgrssFZAOmGIr85wPHKvaDAcXqxVxVRZhljkJOMZi1ibLibzjLHzJvcok8BMguLc7g1W6W/GqZbLdQ==} - engines: {node: ^14.18.0 || >=16.0.0} - hasBin: true - peerDependencies: - '@types/node': '>= 14' - less: '*' - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - dependencies: - esbuild: 0.15.18 - postcss: 8.4.21 - resolve: 1.22.1 - rollup: 2.79.1 - optionalDependencies: - fsevents: 2.3.2 - - /vite/4.0.4_@types+node@18.11.18: - resolution: {integrity: sha512-xevPU7M8FU0i/80DMR+YhgrzR5KS2ORy1B4xcX/cXLsvnUWvfHuqMmVU6N0YiJ4JWGRJJsLCgjEzKjG9/GKoSw==} - engines: {node: ^14.18.0 || >=16.0.0} - hasBin: true - peerDependencies: - '@types/node': '>= 14' - less: '*' - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - dependencies: - '@types/node': 18.11.18 - esbuild: 0.16.17 - postcss: 8.4.21 - resolve: 1.22.1 - rollup: 3.10.0 - optionalDependencies: - fsevents: 2.3.2 - dev: true - - /vitefu/0.2.4: - resolution: {integrity: sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==} - peerDependencies: - vite: ^3.0.0 || ^4.0.0 - peerDependenciesMeta: - vite: - optional: true - dev: true - - /vitefu/0.2.4_vite@3.2.5: - resolution: {integrity: sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==} - peerDependencies: - vite: ^3.0.0 || ^4.0.0 - peerDependenciesMeta: - vite: - optional: true - dependencies: - vite: 3.2.5 - - /vitest/0.27.2: - resolution: {integrity: sha512-y7tdsL2uaQy+KF18AlmNHZe29ukyFytlxrpSTwwmgLE2XHR/aPucJP9FLjWoqjgqFlXzRAjHlFJLU+HDyI/OsA==} - engines: {node: '>=v14.16.0'} - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@vitest/browser': '*' - '@vitest/ui': '*' - happy-dom: '*' - jsdom: '*' - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@vitest/browser': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true - dependencies: - '@types/chai': 4.3.4 - '@types/chai-subset': 1.3.3 - '@types/node': 18.11.18 - acorn: 8.8.1 - acorn-walk: 8.2.0 - cac: 6.7.14 - chai: 4.3.7 - debug: 4.3.4 - local-pkg: 0.4.3 - picocolors: 1.0.0 - source-map: 0.6.1 - strip-literal: 1.0.0 - tinybench: 2.3.1 - tinypool: 0.3.0 - tinyspy: 1.0.2 - vite: 4.0.4_@types+node@18.11.18 - vite-node: 0.27.2_@types+node@18.11.18 - why-is-node-running: 2.2.2 - transitivePeerDependencies: - - less - - sass - - stylus - - sugarss - - supports-color - - terser - dev: true - - /vscode-css-languageservice/6.2.1: - resolution: {integrity: sha512-FMaMjB2LQdkHjTCP2CWh2S94xuGsxSc8xr0H9nAACVd/iUDyZLoKFjwoB+mA3v0rpCH2U5vVCVwxyULy61CgqA==} - dependencies: - '@vscode/l10n': 0.0.10 - vscode-languageserver-textdocument: 1.0.8 - vscode-languageserver-types: 3.17.2 - vscode-uri: 3.0.7 - - /vscode-html-languageservice/5.0.3: - resolution: {integrity: sha512-6rfrtcHhXDMXmC5pR2WXrx02HiNCzQDynOBMn+53zLxr2hvZrDzoc0QgC0FaFGfcglf7GeOsfhkWvJBFC/a70g==} - dependencies: - '@vscode/l10n': 0.0.10 - vscode-languageserver-textdocument: 1.0.8 - vscode-languageserver-types: 3.17.2 - vscode-uri: 3.0.7 - - /vscode-jsonrpc/8.0.2: - resolution: {integrity: sha512-RY7HwI/ydoC1Wwg4gJ3y6LpU9FJRZAUnTYMXthqhFXXu77ErDd/xkREpGuk4MyYkk4a+XDWAMqe0S3KkelYQEQ==} - engines: {node: '>=14.0.0'} - - /vscode-languageserver-protocol/3.17.2: - resolution: {integrity: sha512-8kYisQ3z/SQ2kyjlNeQxbkkTNmVFoQCqkmGrzLH6A9ecPlgTbp3wDTnUNqaUxYr4vlAcloxx8zwy7G5WdguYNg==} - dependencies: - vscode-jsonrpc: 8.0.2 - vscode-languageserver-types: 3.17.2 - - /vscode-languageserver-textdocument/1.0.8: - resolution: {integrity: sha512-1bonkGqQs5/fxGT5UchTgjGVnfysL0O8v1AYMBjqTbWQTFn721zaPGDYFkOKtfDgFiSgXM3KwaG3FMGfW4Ed9Q==} - - /vscode-languageserver-types/3.17.2: - resolution: {integrity: sha512-zHhCWatviizPIq9B7Vh9uvrH6x3sK8itC84HkamnBWoDFJtzBf7SWlpLCZUit72b3os45h6RWQNC9xHRDF8dRA==} - - /vscode-languageserver/8.0.2: - resolution: {integrity: sha512-bpEt2ggPxKzsAOZlXmCJ50bV7VrxwCS5BI4+egUmure/oI/t4OlFzi/YNtVvY24A2UDOZAgwFGgnZPwqSJubkA==} - hasBin: true - dependencies: - vscode-languageserver-protocol: 3.17.2 - - /vscode-oniguruma/1.7.0: - resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==} - - /vscode-textmate/6.0.0: - resolution: {integrity: sha512-gu73tuZfJgu+mvCSy4UZwd2JXykjK9zAZsfmDeut5dx/1a7FeTk0XwJsSuqQn+cuMCGVbIBfl+s53X4T19DnzQ==} - - /vscode-uri/2.1.2: - resolution: {integrity: sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==} - - /vscode-uri/3.0.7: - resolution: {integrity: sha512-eOpPHogvorZRobNqJGhapa0JdwaxpjVvyBp0QIUMRMSf8ZAlqOdEquKuRmw9Qwu0qXtJIWqFtMkmvJjUZmMjVA==} - - /wcwidth/1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} - dependencies: - defaults: 1.0.4 - - /web-namespaces/2.0.1: - resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} - - /web-streams-polyfill/3.2.1: - resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} - engines: {node: '>= 8'} - - /which-pm-runs/1.1.0: - resolution: {integrity: sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==} - engines: {node: '>=4'} - - /which-pm/2.0.0: - resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} - engines: {node: '>=8.15'} - dependencies: - load-yaml-file: 0.2.0 - path-exists: 4.0.0 - - /which/2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - dependencies: - isexe: 2.0.0 - - /why-is-node-running/2.2.2: - resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} - engines: {node: '>=8'} - hasBin: true - dependencies: - siginfo: 2.0.0 - stackback: 0.0.2 - dev: true - - /widest-line/4.0.1: - resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==} - engines: {node: '>=12'} - dependencies: - string-width: 5.1.2 - - /wrap-ansi/7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - dev: false - - /wrap-ansi/8.0.1: - resolution: {integrity: sha512-QFF+ufAqhoYHvoHdajT/Po7KoXVBPXS2bgjIam5isfWJPfIOnQZ50JtUiVvCv/sjgacf3yRrt2ZKUZ/V4itN4g==} - engines: {node: '>=12'} - dependencies: - ansi-styles: 6.2.1 - string-width: 5.1.2 - strip-ansi: 7.0.1 - - /wrappy/1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - - /xtend/4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} - dev: true - - /y18n/5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - dev: false - - /yallist/3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - - /yallist/4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - - /yaml/1.10.2: - resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} - engines: {node: '>= 6'} - - /yargs-parser/21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} - - /yargs/17.6.2: - resolution: {integrity: sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==} - engines: {node: '>=12'} - dependencies: - cliui: 8.0.1 - escalade: 3.1.1 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 21.1.1 - dev: false - - /yocto-queue/0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - - /zod/3.20.2: - resolution: {integrity: sha512-1MzNQdAvO+54H+EaK5YpyEy0T+Ejo/7YLHS93G3RnYWh5gaotGHwGeN/ZO687qEDU2y4CdStQYXVHIgrUl5UVQ==} - - /zwitch/2.0.4: - resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} diff --git a/external/rspc/pnpm-workspace.yaml b/external/rspc/pnpm-workspace.yaml deleted file mode 100644 index daacc2a..0000000 --- a/external/rspc/pnpm-workspace.yaml +++ /dev/null @@ -1,5 +0,0 @@ -packages: - - docs/ - - packages/* - - examples/astro - - examples/nextjs diff --git a/external/rspc/src/config.rs b/external/rspc/src/config.rs deleted file mode 100644 index 67d34e7..0000000 --- a/external/rspc/src/config.rs +++ /dev/null @@ -1,31 +0,0 @@ -use std::path::PathBuf; - -/// TODO -#[derive(Default)] -pub struct Config { - pub(crate) export_bindings_on_build: Option, - pub(crate) bindings_header: Option<&'static str>, -} - -impl Config { - pub fn new() -> Self { - Default::default() - } - - /// will export the bindings of the generated router to a folder every time the router is built. - /// Note: The bindings are only exported when `debug_assertions` are enabled (Rust is in debug mode). - pub fn export_ts_bindings(mut self, export_path: TPath) -> Self - where - PathBuf: From, - { - self.export_bindings_on_build = Some(PathBuf::from(export_path)); - self - } - - /// allows you to add a custom string to the top of the exported Typescript bindings file. - /// This is useful if you want to disable ESLint or Prettier. - pub fn set_ts_bindings_header(mut self, custom: &'static str) -> Self { - self.bindings_header = Some(custom); - self - } -} diff --git a/external/rspc/src/error.rs b/external/rspc/src/error.rs deleted file mode 100644 index e460677..0000000 --- a/external/rspc/src/error.rs +++ /dev/null @@ -1,211 +0,0 @@ -use std::{error, fmt, sync::Arc}; - -use serde::Serialize; -use specta::{ts::TsExportError, Type}; - -use crate::internal::jsonrpc::JsonRPCError; - -#[derive(thiserror::Error, Debug)] -pub enum ExecError { - #[error("the requested operation '{0}' is not supported by this server")] - OperationNotFound(String), - #[error("error deserializing procedure arguments: {0}")] - DeserializingArgErr(serde_json::Error), - #[error("error serializing procedure result: {0}")] - SerializingResultErr(serde_json::Error), - #[error("error in axum extractor")] - AxumExtractorError, - #[error("invalid JSON-RPC version")] - InvalidJsonRpcVersion, - #[error("method '{0}' is not supported by this endpoint.")] // TODO: Better error message - UnsupportedMethod(String), - #[error("resolver threw error")] - ErrResolverError(#[from] Error), - #[error("error creating subscription with null id")] - ErrSubscriptionWithNullId, - #[error("error creating subscription with duplicate id")] - ErrSubscriptionDuplicateId, -} - -impl From for Error { - fn from(v: ExecError) -> Error { - match v { - ExecError::OperationNotFound(_) => Error { - code: ErrorCode::NotFound, - message: "the requested operation is not supported by this server".to_string(), - cause: None, - }, - ExecError::DeserializingArgErr(err) => Error { - code: ErrorCode::BadRequest, - message: "error deserializing procedure arguments".to_string(), - cause: Some(Arc::new(err)), - }, - ExecError::SerializingResultErr(err) => Error { - code: ErrorCode::InternalServerError, - message: "error serializing procedure result".to_string(), - cause: Some(Arc::new(err)), - }, - ExecError::AxumExtractorError => Error { - code: ErrorCode::BadRequest, - message: "Error running Axum extractors on the HTTP request".into(), - cause: None, - }, - ExecError::InvalidJsonRpcVersion => Error { - code: ErrorCode::BadRequest, - message: "invalid JSON-RPC version".into(), - cause: None, - }, - ExecError::ErrResolverError(err) => err, - ExecError::UnsupportedMethod(_) => Error { - code: ErrorCode::BadRequest, - message: "unsupported metho".into(), - cause: None, - }, - ExecError::ErrSubscriptionWithNullId => Error { - code: ErrorCode::BadRequest, - message: "error creating subscription with null request id".into(), - cause: None, - }, - ExecError::ErrSubscriptionDuplicateId => Error { - code: ErrorCode::BadRequest, - message: "error creating subscription with duplicate id".into(), - cause: None, - }, - } - } -} - -impl From for JsonRPCError { - fn from(err: ExecError) -> Self { - let x: Error = err.into(); - x.into() - } -} - -#[derive(thiserror::Error, Debug)] -pub enum ExportError { - #[error("IO error exporting bindings: {0}")] - IOErr(#[from] std::io::Error), - #[error("error exporting ts bindings: {0}")] - Error(#[from] TsExportError), -} - -#[derive(Debug, Clone, Serialize)] -#[cfg_attr(test, derive(specta::Type))] -#[allow(dead_code)] -pub struct Error { - pub(crate) code: ErrorCode, - pub(crate) message: String, - #[serde(skip)] - #[cfg_attr(test, specta(type = Option))] - pub(crate) cause: Option>, // We are using `Arc` instead of `Box` so we can clone the error cause `Clone` isn't dyn safe. -} - -#[cfg(feature = "workers")] -impl From for Error { - fn from(err: worker::Error) -> Self { - Error { - code: ErrorCode::InternalServerError, - message: err.to_string(), - cause: None, // We can't store the original error because it's not `Send + Sync` as it holds raw pointers. We could probs just lie to the compiler about `Send + Sync` but I can't ensure that's safe so it shouldn't be implicit. - } - } -} - -impl From for JsonRPCError { - fn from(err: Error) -> Self { - JsonRPCError { - code: err.code.to_status_code() as i32, - message: err.message, - data: None, - } - } -} - -impl fmt::Display for Error { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - write!( - f, - "rspc::Error {{ code: {:?}, message: {} }}", - self.code, self.message - ) - } -} - -impl error::Error for Error { - fn source(&self) -> Option<&(dyn error::Error + 'static)> { - None - } -} - -impl Error { - pub const fn new(code: ErrorCode, message: String) -> Self { - Error { - code, - message, - cause: None, - } - } - - pub fn with_cause(code: ErrorCode, message: String, cause: TErr) -> Self - where - TErr: std::error::Error + Send + Sync + 'static, - { - Self { - code, - message, - cause: Some(Arc::new(cause)), - } - } -} - -/// TODO -#[derive(Debug, Clone, Serialize, Type, PartialEq, Eq)] -pub enum ErrorCode { - BadRequest, - Unauthorized, - Forbidden, - NotFound, - Timeout, - Conflict, - PreconditionFailed, - PayloadTooLarge, - MethodNotSupported, - ClientClosedRequest, - InternalServerError, -} - -impl ErrorCode { - pub fn to_status_code(&self) -> u16 { - match self { - ErrorCode::BadRequest => 400, - ErrorCode::Unauthorized => 401, - ErrorCode::Forbidden => 403, - ErrorCode::NotFound => 404, - ErrorCode::Timeout => 408, - ErrorCode::Conflict => 409, - ErrorCode::PreconditionFailed => 412, - ErrorCode::PayloadTooLarge => 413, - ErrorCode::MethodNotSupported => 405, - ErrorCode::ClientClosedRequest => 499, - ErrorCode::InternalServerError => 500, - } - } - - pub const fn from_status_code(status_code: u16) -> Option { - match status_code { - 400 => Some(ErrorCode::BadRequest), - 401 => Some(ErrorCode::Unauthorized), - 403 => Some(ErrorCode::Forbidden), - 404 => Some(ErrorCode::NotFound), - 408 => Some(ErrorCode::Timeout), - 409 => Some(ErrorCode::Conflict), - 412 => Some(ErrorCode::PreconditionFailed), - 413 => Some(ErrorCode::PayloadTooLarge), - 405 => Some(ErrorCode::MethodNotSupported), - 499 => Some(ErrorCode::ClientClosedRequest), - 500 => Some(ErrorCode::InternalServerError), - _ => None, - } - } -} diff --git a/external/rspc/src/integrations/httpz.rs b/external/rspc/src/integrations/httpz.rs deleted file mode 100644 index 1a2a3e3..0000000 --- a/external/rspc/src/integrations/httpz.rs +++ /dev/null @@ -1,500 +0,0 @@ -use futures::{SinkExt, StreamExt}; -use httpz::{ - http::{Method, Response, StatusCode}, - ws::{Message, WebsocketUpgrade}, - Endpoint, GenericEndpoint, HttpEndpoint, HttpResponse, -}; -use serde_json::Value; -use std::{ - collections::HashMap, - mem, - sync::{Arc, Mutex}, -}; -use tokio::sync::mpsc; - -use crate::{ - internal::{ - jsonrpc::{self, handle_json_rpc, RequestId, Sender, SubscriptionMap}, - ProcedureKind, - }, - Router, -}; - -pub use super::httpz_extractors::*; -pub use httpz::cookie::Cookie; - -/// TODO -/// -// TODO: Can `Rc>` be used so I don't need to await a borrow and use Tokio specific API's??? -// TODO: The `Mutex` will block. This isn't great, work to remove it. The Tokio `Mutex` makes everything annoyingly async so I don't use it. -#[derive(Debug)] -pub struct CookieJar(Arc>); - -impl CookieJar { - pub(super) fn new(cookies: Arc>) -> Self { - Self(cookies) - } - - /// Returns a reference to the `Cookie` inside this jar with the name - /// `name`. If no such cookie exists, returns `None`. - pub fn get(&self, name: &str) -> Option> { - self.0.lock().unwrap().get(name).cloned() // TODO: `cloned` is cringe avoid it by removing `Mutex`? - } - - /// Adds an "original" `cookie` to this jar. If an original cookie with the - /// same name already exists, it is replaced with `cookie`. Cookies added - /// with `add` take precedence and are not replaced by this method. - /// - /// Adding an original cookie does not affect the [delta](#method.delta) - /// computation. This method is intended to be used to seed the cookie jar - /// with cookies received from a client's HTTP message. - /// - /// For accurate `delta` computations, this method should not be called - /// after calling `remove`. - pub fn add_original(&self, cookie: Cookie<'static>) { - self.0.lock().unwrap().add_original(cookie) - } - - /// Adds `cookie` to this jar. If a cookie with the same name already - /// exists, it is replaced with `cookie`. - pub fn add(&self, cookie: Cookie<'static>) { - self.0.lock().unwrap().add(cookie); - } - - /// Removes `cookie` from this jar. If an _original_ cookie with the same - /// name as `cookie` is present in the jar, a _removal_ cookie will be - /// present in the `delta` computation. To properly generate the removal - /// cookie, `cookie` must contain the same `path` and `domain` as the cookie - /// that was initially set. - /// - /// A "removal" cookie is a cookie that has the same name as the original - /// cookie but has an empty value, a max-age of 0, and an expiration date - /// far in the past. See also [`Cookie::make_removal()`]. - /// - /// Removing a new cookie does not result in a _removal_ cookie unless - /// there's an original cookie with the same name: - pub fn remove(&self, cookie: Cookie<'static>) { - self.0.lock().unwrap().remove(cookie) - } - - /// Removes `cookie` from this jar completely. This method differs from - /// `remove` in that no delta cookie is created under any condition. Neither - /// the `delta` nor `iter` methods will return a cookie that is removed - /// using this method. - pub fn force_remove<'a>(&self, cookie: &Cookie<'a>) { - self.0.lock().unwrap().force_remove(cookie) - } - - /// Removes all delta cookies, i.e. all cookies not added via - /// [`CookieJar::add_original()`], from this `CookieJar`. This undoes any - /// changes from [`CookieJar::add()`] and [`CookieJar::remove()`] - /// operations. - pub fn reset_delta(&self) { - self.0.lock().unwrap().reset_delta() - } - - // /// Returns an iterator over cookies that represent the changes to this jar - // /// over time. These cookies can be rendered directly as `Set-Cookie` header - // /// values to affect the changes made to this jar on the client. - // pub fn delta(&self) -> Delta { - // self.0.lock().unwrap().delta() - // } - - // /// Returns an iterator over all of the cookies present in this jar. - // pub fn iter(&self) -> Iter { - // self.0.lock().unwrap().iter() - // } - - // /// Returns a read-only `PrivateJar` with `self` as its parent jar using the - // /// key `key` to verify/decrypt cookies retrieved from the child jar. Any - // /// retrievals from the child jar will be made from the parent jar. - // #[cfg(feature = "private")] - // #[cfg_attr(all(nightly, doc), doc(cfg(feature = "private")))] - // pub fn private<'a>(&'a self, key: &Key) -> PrivateJar<&'a Self> { - // PrivateJar::new(self, key) - // } - - // /// Returns a read/write `PrivateJar` with `self` as its parent jar using - // /// the key `key` to sign/encrypt and verify/decrypt cookies added/retrieved - // /// from the child jar. - // /// - // /// Any modifications to the child jar will be reflected on the parent jar, - // /// and any retrievals from the child jar will be made from the parent jar. - // #[cfg(feature = "private")] - // #[cfg_attr(all(nightly, doc), doc(cfg(feature = "private")))] - // pub fn private_mut<'a>(&'a mut self, key: &Key) -> PrivateJar<&'a mut Self> { - // PrivateJar::new(self, key) - // } - - // /// Returns a read-only `SignedJar` with `self` as its parent jar using the - // /// key `key` to verify cookies retrieved from the child jar. Any retrievals - // /// from the child jar will be made from the parent jar. - // #[cfg(feature = "signed")] - // #[cfg_attr(all(nightly, doc), doc(cfg(feature = "signed")))] - // pub fn signed<'a>(&'a self, key: &Key) -> SignedJar<&'a Self> { - // SignedJar::new(self, key) - // } - - // /// Returns a read/write `SignedJar` with `self` as its parent jar using the - // /// key `key` to sign/verify cookies added/retrieved from the child jar. - // /// - // /// Any modifications to the child jar will be reflected on the parent jar, - // /// and any retrievals from the child jar will be made from the parent jar. - // #[cfg(feature = "signed")] - // #[cfg_attr(all(nightly, doc), doc(cfg(feature = "signed")))] - // pub fn signed_mut<'a>(&'a mut self, key: &Key) -> SignedJar<&'a mut Self> { - // SignedJar::new(self, key) - // } -} - -/// TODO -/// -/// This wraps [httpz::Request] removing any methods that are not safe with rspc such as `body`, `into_parts` and replacing the cookie handling API. -/// -#[derive(Debug)] -pub struct Request(httpz::Request, Option); - -impl Request { - pub(crate) fn new(req: httpz::Request, cookies: Option) -> Self { - Self(req, cookies) - } - - /// Get the uri of the request. - pub fn uri(&self) -> &httpz::http::Uri { - self.0.uri() - } - - /// Get the version of the request. - pub fn version(&self) -> httpz::http::Version { - self.0.version() - } - - /// Get the method of the request. - pub fn method(&self) -> &httpz::http::Method { - self.0.method() - } - - /// Get the headers of the request. - pub fn headers(&self) -> &httpz::http::HeaderMap { - self.0.headers() - } - - /// TODO - pub fn cookies(&mut self) -> Option { - // TODO: This take means a `None` response could be because it was already used or because it's a websocket. This is a confusing DX and needs fixing. - - mem::replace(&mut self.1, None) - } - - /// query_pairs returns an iterator of the query parameters. - pub fn query_pairs(&self) -> Option> { - self.0.query_pairs() - } - - /// TODO - pub fn server(&self) -> httpz::Server { - self.0.server() - } - - // TODO: Downcasting extensions both `mut` and `ref` - // TODO: Inserting extensions -} - -impl Router -where - TCtx: Send + Sync + 'static, -{ - pub fn endpoint>( - self: Arc, - ctx_fn: TCtxFn, - ) -> Endpoint { - GenericEndpoint::new( - "/:id", // TODO: I think this is Axum specific. Fix in `httpz`! - [Method::GET, Method::POST], - move |req: httpz::Request| { - // TODO: It would be nice if these clones weren't per request. - // TODO: Maybe httpz can `Box::leak` a ref to a context type and allow it to be shared. - let router = self.clone(); - let ctx_fn = ctx_fn.clone(); - - async move { - match (req.method(), &req.uri().path()[1..]) { - (&Method::GET, "ws") => { - handle_websocket(ctx_fn, req, router).into_response() - } - (&Method::GET, _) => { - handle_http(ctx_fn, ProcedureKind::Query, req, &router) - .await - .into_response() - } - (&Method::POST, _) => { - handle_http(ctx_fn, ProcedureKind::Mutation, req, &router) - .await - .into_response() - } - _ => unreachable!(), - } - } - }, - ) - } -} - -pub async fn handle_http( - ctx_fn: TCtxFn, - kind: ProcedureKind, - mut req: httpz::Request, - router: &Arc>, -) -> impl HttpResponse -where - TCtx: Send + Sync + 'static, - TCtxFn: TCtxFunc, -{ - let procedure_name = req.uri().path()[1..].to_string(); // Has to be allocated because `TCtxFn` takes ownership of `req` - let input = match *req.method() { - Method::GET => req - .query_pairs() - .and_then(|mut params| params.find(|e| e.0 == "input").map(|e| e.1)) - .map(|v| serde_json::from_str(&v)) - .unwrap_or(Ok(None as Option)), - Method::POST => (!req.body().is_empty()) - .then(|| serde_json::from_slice(req.body())) - .unwrap_or(Ok(None)), - _ => unreachable!(), - }; - let cookies = req.cookies(); - - let input = match input { - Ok(input) => input, - Err(_err) => { - #[cfg(feature = "tracing")] - tracing::error!( - "Error passing parameters to operation '{}' with key '{:?}': {}", - kind.to_str(), - procedure_name, - _err - ); - - return Ok(( - Response::builder() - .status(StatusCode::NOT_FOUND) - .header("Content-Type", "application/json") - .body(b"[]".to_vec())?, - cookies, - )); - } - }; - - #[cfg(feature = "tracing")] - tracing::debug!( - "Executing operation '{}' with key '{}' with params {:?}", - kind.to_str(), - procedure_name, - input - ); - - let mut resp = Sender::Response(None); - - let cookie_jar = Arc::new(Mutex::new(cookies)); - let ctx = ctx_fn.exec(&mut req, Some(CookieJar::new(cookie_jar.clone()))); - - let ctx = match ctx { - Ok(v) => v, - Err(_err) => { - #[cfg(feature = "tracing")] - tracing::error!("Error executing context function: {}", _err); - - return Ok(( - Response::builder() - .status(StatusCode::INTERNAL_SERVER_ERROR) - .header("Content-Type", "application/json") - .body(b"[]".to_vec())?, - req.cookies(), // If cookies were set in the context function they will be lost but it errored so thats probs fine. - )); - } - }; - - handle_json_rpc( - ctx, - jsonrpc::Request { - jsonrpc: None, - id: RequestId::Null, - inner: match kind { - ProcedureKind::Query => jsonrpc::RequestInner::Query { - path: procedure_name.to_string(), // TODO: Lifetime instead of allocate? - input, - }, - ProcedureKind::Mutation => jsonrpc::RequestInner::Mutation { - path: procedure_name.to_string(), // TODO: Lifetime instead of allocate? - input, - }, - ProcedureKind::Subscription => { - #[cfg(feature = "tracing")] - tracing::error!("Attempted to execute a subscription operation with HTTP"); - - return Ok(( - Response::builder() - .status(StatusCode::INTERNAL_SERVER_ERROR) - .header("Content-Type", "application/json") - .body(b"[]".to_vec())?, - req.cookies(), // If cookies were set in the context function they will be lost but it errored so thats probs fine. - )); - } - }, - }, - router, - &mut resp, - &mut SubscriptionMap::None, - ) - .await; - - let cookies = { - match Arc::try_unwrap(cookie_jar) { - Ok(cookies) => cookies.into_inner().unwrap(), - Err(cookie_jar) => { - #[cfg(all(feature = "tracing", feature = "warning", debug_assertions))] - tracing::warn!("Your application continued to hold a reference to the `CookieJar` after returning from your resolver. This forced rspc to clone it, but this most likely indicates a potential bug in your system."); - #[cfg(all(not(feature = "tracing"), feature = "warning", debug_assertions))] - println("Your application continued to hold a reference to the `CookieJar` after returning from your resolver. This forced rspc to clone it, but this most likely indicates a potential bug in your system."); - - cookie_jar.lock().unwrap().clone() - } - } - }; - - match resp { - Sender::Response(Some(resp)) => Ok(( - match serde_json::to_vec(&resp) { - Ok(v) => Response::builder() - .status(StatusCode::OK) - .header("Content-Type", "application/json") - .body(v)?, - Err(_err) => { - #[cfg(feature = "tracing")] - tracing::error!("Error serializing response: {}", _err); - - Response::builder() - .status(StatusCode::INTERNAL_SERVER_ERROR) - .header("Content-Type", "application/json") - .body(b"[]".to_vec())? - } - }, - cookies, - )), - _ => unreachable!(), - } -} - -pub fn handle_websocket( - ctx_fn: TCtxFn, - req: httpz::Request, - router: Arc>, -) -> impl HttpResponse -where - TCtx: Send + Sync + 'static, - TCtxFn: TCtxFunc, -{ - #[cfg(feature = "tracing")] - tracing::debug!("Accepting websocket connection"); - - if !req.server().supports_websockets() { - #[cfg(feature = "tracing")] - tracing::debug!("Websocket are not supported on your webserver!"); - - // TODO: Make this error be picked up on the frontend and expose it with a logical name - return Ok(Response::builder() - .status(StatusCode::INTERNAL_SERVER_ERROR) - .body(vec![])?); - } - - let cookies = req.cookies(); - WebsocketUpgrade::from_req_with_cookies(req, cookies, move |mut req, mut socket| async move { - let mut subscriptions = HashMap::new(); - let (mut tx, mut rx) = mpsc::channel::(100); - - loop { - tokio::select! { - biased; // Note: Order is important here - msg = rx.recv() => { - match socket.send(Message::Text(match serde_json::to_string(&msg) { - Ok(v) => v, - Err(_err) => { - #[cfg(feature = "tracing")] - tracing::error!("Error serializing websocket message: {}", _err); - - continue; - } - })).await { - Ok(_) => {} - Err(_err) => { - #[cfg(feature = "tracing")] - tracing::error!("Error sending websocket message: {}", _err); - - continue; - } - } - } - msg = socket.next() => { - match msg { - Some(Ok(msg) )=> { - let res = match msg { - Message::Text(text) => serde_json::from_str::(&text), - Message::Binary(binary) => serde_json::from_slice(&binary), - Message::Ping(_) | Message::Pong(_) | Message::Close(_) => { - continue; - } - Message::Frame(_) => unreachable!(), - }; - - match res.and_then(|v| match v.is_array() { - true => serde_json::from_value::>(v), - false => serde_json::from_value::(v).map(|v| vec![v]), - }) { - Ok(reqs) => { - for request in reqs { - let ctx = ctx_fn.exec(&mut req, None); - - handle_json_rpc(match ctx { - Ok(v) => v, - Err(_err) => { - #[cfg(feature = "tracing")] - tracing::error!("Error executing context function: {}", _err); - - continue; - } - }, request, &router, &mut Sender::Channel(&mut tx), - &mut SubscriptionMap::Ref(&mut subscriptions)).await; - } - }, - Err(_err) => { - #[cfg(feature = "tracing")] - tracing::error!("Error parsing websocket message: {}", _err); - - // TODO: Send report of error to frontend - - continue; - } - }; - } - Some(Err(_err)) => { - #[cfg(feature = "tracing")] - tracing::error!("Error in websocket: {}", _err); - - // TODO: Send report of error to frontend - - continue; - }, - None => { - #[cfg(feature = "tracing")] - tracing::debug!("Shutting down websocket connection"); - - // TODO: Send report of error to frontend - - return; - }, - } - } - } - } - }).into_response() -} diff --git a/external/rspc/src/integrations/httpz_extractors.rs b/external/rspc/src/integrations/httpz_extractors.rs deleted file mode 100644 index 9cdc0ac..0000000 --- a/external/rspc/src/integrations/httpz_extractors.rs +++ /dev/null @@ -1,57 +0,0 @@ -//! The future of this code in unsure. It will probs be removed or refactored once we support more than just Axum because all of the feature gating is bad. - -use super::httpz::{CookieJar, Request}; -use crate::ExecError; - -use std::marker::PhantomData; - -// TODO: Add an example to the repo of using the new cringe Axum extractors but put lots of warnings about how it's highly discouraged - -pub trait TCtxFunc: Clone + Send + Sync + 'static { - fn exec<'req>( - &self, - req: &'req mut httpz::Request, - cookies: Option, - ) -> Result - where - TCtx: Send + 'req; -} - -pub struct NoArgMarker(PhantomData<()>); - -impl TCtxFunc for TFunc -where - TFunc: FnOnce() -> TCtx + Clone + Send + Sync + 'static, -{ - fn exec<'req>( - &self, - _req: &'req mut httpz::Request, - _cookies: Option, - ) -> Result - where - TCtx: Send + 'req, - { - Ok(self.clone()()) // TODO: Avoiding clone here would be nice -> Why not use `Fn` instead of `FnOnce + Clone`? - } -} - -pub struct SingleArgMarker(PhantomData<()>); - -impl TCtxFunc for TFunc -where - TFunc: FnOnce(Request) -> TCtx + Clone + Send + Sync + 'static, -{ - fn exec<'req>( - &self, - req: &'req mut httpz::Request, - cookies: Option, - ) -> Result - where - TCtx: Send + 'req, - { - // TODO: Create `Option` here and optionally return it so we only need to heap allocate it it's got a chance of being used - // TODO: Avoiding clone here would be nice -> Why not use `Fn` instead of `FnOnce + Clone`? - - Ok(self.clone()(Request::new(req.clone(), cookies))) - } -} diff --git a/external/rspc/src/integrations/mod.rs b/external/rspc/src/integrations/mod.rs deleted file mode 100644 index 82b0ee1..0000000 --- a/external/rspc/src/integrations/mod.rs +++ /dev/null @@ -1,8 +0,0 @@ -#[cfg(feature = "httpz")] -pub mod httpz; - -#[cfg(feature = "httpz")] -pub(crate) mod httpz_extractors; - -#[cfg(feature = "tauri")] -pub mod tauri; diff --git a/external/rspc/src/integrations/tauri.rs b/external/rspc/src/integrations/tauri.rs deleted file mode 100644 index 33686d4..0000000 --- a/external/rspc/src/integrations/tauri.rs +++ /dev/null @@ -1,97 +0,0 @@ -use std::{collections::HashMap, sync::Arc}; - -use serde::de::Error; -use serde_json::Value; -use tauri::{ - async_runtime::Mutex, - plugin::{Builder, TauriPlugin}, - Manager, Runtime, -}; -use tokio::sync::mpsc; - -use crate::{ - internal::jsonrpc::{self, handle_json_rpc, Sender, SubscriptionMap}, - Router, -}; - -pub fn plugin( - router: Arc>, - ctx_fn: impl Fn() -> TCtx + Send + Sync + 'static, -) -> TauriPlugin -where - TCtx: Send + 'static, -{ - Builder::new("rspc") - .setup(|app_handle| { - let (resp_tx, mut resp_rx) = mpsc::unbounded_channel::(); - let subscriptions = Arc::new(Mutex::new(HashMap::new())); - - { - let app_handle = app_handle.clone(); - tokio::spawn(async move { - while let Some(event) = resp_rx.recv().await { - let _ = app_handle - .emit_all("plugin:rspc:transport:resp", event) - .map_err(|_err| { - #[cfg(feature = "tracing")] - tracing::error!("failed to emit JSON-RPC response: {}", _err); - }); - } - }); - } - - app_handle.listen_global("plugin:rspc:transport", move |event| { - let req = match serde_json::from_str::(match event.payload() { - Some(v) => v, - None => { - #[cfg(feature = "tracing")] - tracing::error!("Tauri event payload is empty"); - - return; - } - }) - .and_then(|v| match v { - // TODO: This is a temporary hack for: https://github.com/oscartbeaumont/rspc/issues/77 - Value::String(v) => serde_json::from_str::(&v), - _ => Ok(v), - }) - .and_then(|v| match v { - Value::Object(v) => { - serde_json::from_value::(Value::Object(v)) - .map(|v| vec![v]) - } - Value::Array(v) => { - serde_json::from_value::>(Value::Array(v)) - } - _ => Err(serde_json::Error::custom("invalid JSON-RPC request")), - }) { - Ok(v) => v, - Err(_err) => { - #[cfg(feature = "tracing")] - tracing::error!("failed to decode JSON-RPC request: {}", _err); - return; - } - }; - - for req in req { - let ctx = ctx_fn(); - let router = router.clone(); - let mut resp_tx = resp_tx.clone(); - let subscriptions = subscriptions.clone(); - tokio::spawn(async move { - handle_json_rpc( - ctx, - req, - &router, - &mut Sender::ResponseChannel(&mut resp_tx), - &mut SubscriptionMap::Mutex(&subscriptions), - ) - .await; - }); - } - }); - - Ok(()) - }) - .build() -} diff --git a/external/rspc/src/internal/jsonrpc.rs b/external/rspc/src/internal/jsonrpc.rs deleted file mode 100644 index 4568782..0000000 --- a/external/rspc/src/internal/jsonrpc.rs +++ /dev/null @@ -1,137 +0,0 @@ -use serde::{Deserialize, Serialize}; -use serde_json::Value; - -pub use super::jsonrpc_exec::*; - -/// TODO -/// -/// @internal -#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, Eq, Hash)] -#[cfg_attr(test, derive(specta::Type))] -#[serde(untagged)] -pub enum RequestId { - Null, - Number(u32), - String(String), -} - -impl RequestId { - fn null() -> Self { - Self::Null - } -} - -/// TODO -/// -/// @internal -#[derive(Debug, Clone, Deserialize, Serialize)] -#[cfg_attr(test, derive(specta::Type))] -pub struct Request { - pub jsonrpc: Option, // This is required in the JsonRPC spec but I make it optional. - #[serde(default = "RequestId::null")] // TODO: Optional also not part of spec but copying tRPC - pub id: RequestId, - #[serde(flatten)] - pub inner: RequestInner, -} - -/// TODO -/// -/// @internal -#[derive(Debug, Clone, Deserialize, Serialize)] -#[cfg_attr(test, derive(specta::Type))] -#[serde(tag = "method", content = "params", rename_all = "camelCase")] -pub enum RequestInner { - Query { path: String, input: Option }, - Mutation { path: String, input: Option }, - Subscription { path: String, input: Option }, - SubscriptionStop, -} - -/// TODO -/// -/// @internal -#[derive(Debug, Clone, Serialize)] -#[cfg_attr(test, derive(specta::Type))] -pub struct Response { - pub jsonrpc: &'static str, - pub id: RequestId, - pub result: ResponseInner, -} - -/// TODO -/// -/// @internal -#[derive(Debug, Clone, Serialize)] -#[cfg_attr(test, derive(specta::Type))] -#[serde(tag = "type", content = "data", rename_all = "camelCase")] -pub enum ResponseInner { - Event(Value), - Response(Value), - Error(JsonRPCError), -} - -/// TODO -/// -/// @internal -#[derive(Debug, Clone, Serialize)] -#[cfg_attr(test, derive(specta::Type))] -pub struct JsonRPCError { - pub code: i32, - pub message: String, - pub data: Option, -} - -// #[cfg(test)] -// mod tests { -// use std::{fs::File, io::Write, path::PathBuf}; - -// use super::*; - -// #[test] -// fn export_internal_bindings() { -// // let mut file = File::create( -// // PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("./packages/client/src/types.ts"), -// // ) -// // .unwrap(); -// // file.write_all( -// // b"// Do not modify this file. It was generated from the Rust types by running ``.\n\n", -// // ) -// // .unwrap(); -// // // TODO: Add an API into Specta which allows exporting a type and all types it depends on. -// // file.write_all(format!("{}\n\n", specta::ts_export::().unwrap()).as_bytes()) -// // .unwrap(); -// // file.write_all(format!("{}\n\n", specta::ts_export::().unwrap()).as_bytes()) -// // .unwrap(); -// } - -// #[test] -// fn test_request_id() { -// // println!( -// // "{}", -// // serde_json::to_string(&Request { -// // jsonrpc: None, -// // id: RequestId::Null, -// // inner: RequestInner::Query { -// // path: "test".into(), -// // input: None, -// // }, -// // }) -// // .unwrap() -// // ); -// todo!(); - -// // TODO: Test serde - -// // TODO: Test specta -// } - -// #[test] -// fn test_jsonrpc_request() { -// todo!(); -// } - -// #[test] -// fn test_jsonrpc_response() { -// todo!(); -// } -// } diff --git a/external/rspc/src/internal/jsonrpc_exec.rs b/external/rspc/src/internal/jsonrpc_exec.rs deleted file mode 100644 index 9465778..0000000 --- a/external/rspc/src/internal/jsonrpc_exec.rs +++ /dev/null @@ -1,301 +0,0 @@ -use std::{collections::HashMap, sync::Arc}; - -use futures::StreamExt; -use serde_json::Value; -use tokio::sync::{broadcast, mpsc, oneshot, Mutex}; - -use crate::{internal::jsonrpc, ExecError, Router}; - -use super::{ - jsonrpc::{RequestId, RequestInner, ResponseInner}, - LayerReturn, ProcedureKind, RequestContext, -}; - -// TODO: Deduplicate this function with the httpz integration - -pub enum SubscriptionMap<'a> { - Ref(&'a mut HashMap>), - Mutex(&'a Mutex>>), - None, -} - -impl<'a> SubscriptionMap<'a> { - pub async fn has_subscription(&self, id: &RequestId) -> bool { - match self { - SubscriptionMap::Ref(map) => map.contains_key(id), - SubscriptionMap::Mutex(map) => { - let map = map.lock().await; - map.contains_key(id) - } - SubscriptionMap::None => unreachable!(), - } - } - - pub async fn insert(&mut self, id: RequestId, tx: oneshot::Sender<()>) { - match self { - SubscriptionMap::Ref(map) => { - map.insert(id, tx); - } - SubscriptionMap::Mutex(map) => { - let mut map = map.lock().await; - map.insert(id, tx); - } - SubscriptionMap::None => unreachable!(), - } - } - - pub async fn remove(&mut self, id: &RequestId) { - match self { - SubscriptionMap::Ref(map) => { - map.remove(id); - } - SubscriptionMap::Mutex(map) => { - let mut map = map.lock().await; - map.remove(id); - } - SubscriptionMap::None => unreachable!(), - } - } -} -pub enum Sender<'a> { - Channel(&'a mut mpsc::Sender), - ResponseChannel(&'a mut mpsc::UnboundedSender), - Broadcast(&'a broadcast::Sender), - Response(Option), - // We don't use this internally but Spacedrive uses it for the React Native bridge. - ResponseAndChannel( - Option, - &'a mut mpsc::UnboundedSender, - ), -} - -pub enum Sender2 { - Channel(mpsc::Sender), - ResponseChannel(mpsc::UnboundedSender), - Broadcast(broadcast::Sender), -} - -impl Sender2 { - pub async fn send( - &mut self, - resp: jsonrpc::Response, - ) -> Result<(), mpsc::error::SendError> { - match self { - Self::Channel(tx) => tx.send(resp).await?, - Self::ResponseChannel(tx) => tx.send(resp)?, - Self::Broadcast(tx) => { - let _ = tx.send(resp).map_err(|_err| { - #[cfg(feature = "tracing")] - tracing::error!("Failed to send response: {}", _err); - }); - } - } - - Ok(()) - } -} - -impl<'a> Sender<'a> { - pub async fn send( - &mut self, - resp: jsonrpc::Response, - ) -> Result<(), mpsc::error::SendError> { - match self { - Self::Channel(tx) => tx.send(resp).await?, - Self::ResponseChannel(tx) => tx.send(resp)?, - Self::Broadcast(tx) => { - let _ = tx.send(resp).map_err(|_err| { - #[cfg(feature = "tracing")] - tracing::error!("Failed to send response: {}", _err); - }); - } - Self::Response(r) => { - *r = Some(resp); - } - Self::ResponseAndChannel(r, _) => { - *r = Some(resp); - } - } - - Ok(()) - } - - pub fn sender2(&mut self) -> Sender2 { - match self { - Self::Channel(tx) => Sender2::Channel(tx.clone()), - Self::ResponseChannel(tx) => Sender2::ResponseChannel(tx.clone()), - Self::Broadcast(tx) => Sender2::Broadcast(tx.clone()), - Self::Response(_) => unreachable!(), - Self::ResponseAndChannel(_, tx) => Sender2::ResponseChannel(tx.clone()), - } - } -} - -pub async fn handle_json_rpc( - ctx: TCtx, - req: jsonrpc::Request, - router: &Arc>, - sender: &mut Sender<'_>, - subscriptions: &mut SubscriptionMap<'_>, -) where - TCtx: 'static, -{ - if req.jsonrpc.is_some() && req.jsonrpc.as_deref() != Some("2.0") { - let _ = sender - .send(jsonrpc::Response { - jsonrpc: "2.0", - id: req.id.clone(), - result: ResponseInner::Error(ExecError::InvalidJsonRpcVersion.into()), - }) - .await - .map_err(|_err| { - #[cfg(feature = "tracing")] - tracing::error!("Failed to send response: {}", _err); - }); - } - - let (path, input, procedures, sub_id) = match req.inner { - RequestInner::Query { path, input } => (path, input, router.queries(), None), - RequestInner::Mutation { path, input } => (path, input, router.mutations(), None), - RequestInner::Subscription { path, input } => { - (path, input, router.subscriptions(), Some(req.id.clone())) - } - RequestInner::SubscriptionStop => { - subscriptions.remove(&req.id).await; - return; - } - }; - - let result = match procedures - .get(&path) - .ok_or_else(|| ExecError::OperationNotFound(path.clone())) - .and_then(|v| { - v.exec.call( - ctx, - input.unwrap_or(Value::Null), - RequestContext { - kind: ProcedureKind::Query, - path, - }, - ) - }) { - Ok(op) => match op.into_layer_return().await { - Ok(LayerReturn::Request(v)) => ResponseInner::Response(v), - Ok(LayerReturn::Stream(mut stream)) => { - if matches!(sender, Sender::Response(_)) - || matches!(subscriptions, SubscriptionMap::None) - { - let _ = sender - .send(jsonrpc::Response { - jsonrpc: "2.0", - id: req.id.clone(), - result: ResponseInner::Error( - ExecError::UnsupportedMethod("Subscription".to_string()).into(), - ), - }) - .await - .map_err(|_err| { - #[cfg(feature = "tracing")] - tracing::error!("Failed to send response: {}", _err); - }); - } - - if let Some(id) = sub_id { - if matches!(id, RequestId::Null) { - let _ = sender - .send(jsonrpc::Response { - jsonrpc: "2.0", - id: req.id.clone(), - result: ResponseInner::Error( - ExecError::ErrSubscriptionWithNullId.into(), - ), - }) - .await - .map_err(|_err| { - #[cfg(feature = "tracing")] - tracing::error!("Failed to send response: {}", _err); - }); - } else if subscriptions.has_subscription(&id).await { - let _ = sender - .send(jsonrpc::Response { - jsonrpc: "2.0", - id: req.id.clone(), - result: ResponseInner::Error( - ExecError::ErrSubscriptionDuplicateId.into(), - ), - }) - .await - .map_err(|_err| { - #[cfg(feature = "tracing")] - tracing::error!("Failed to send response: {}", _err); - }); - } - - let (shutdown_tx, mut shutdown_rx) = oneshot::channel(); - subscriptions.insert(id.clone(), shutdown_tx).await; - let mut sender2 = sender.sender2(); - tokio::spawn(async move { - loop { - tokio::select! { - biased; // Note: Order matters - _ = &mut shutdown_rx => { - #[cfg(feature = "tracing")] - tracing::debug!("Removing subscription with id '{:?}'", id); - break; - } - v = stream.next() => { - match v { - Some(Ok(v)) => { - let _ = sender2.send(jsonrpc::Response { - jsonrpc: "2.0", - id: id.clone(), - result: ResponseInner::Event(v), - }) - .await - .map_err(|_err| { - #[cfg(feature = "tracing")] - tracing::error!("Failed to send response: {:?}", _err); - }); - } - Some(Err(_err)) => { - #[cfg(feature = "tracing")] - tracing::error!("Subscription error: {:?}", _err); - } - None => { - break; - } - } - } - } - } - }); - } - - return; - } - Err(err) => { - #[cfg(feature = "tracing")] - tracing::error!("Error executing operation: {:?}", err); - - ResponseInner::Error(err.into()) - } - }, - Err(err) => { - #[cfg(feature = "tracing")] - tracing::error!("Error executing operation: {:?}", err); - ResponseInner::Error(err.into()) - } - }; - - let _ = sender - .send(jsonrpc::Response { - jsonrpc: "2.0", - id: req.id, - result, - }) - .await - .map_err(|_err| { - #[cfg(feature = "tracing")] - tracing::error!("Failed to send response: {:?}", _err); - }); -} diff --git a/external/rspc/src/internal/middleware.rs b/external/rspc/src/internal/middleware.rs deleted file mode 100644 index 44881c5..0000000 --- a/external/rspc/src/internal/middleware.rs +++ /dev/null @@ -1,286 +0,0 @@ -use std::{marker::PhantomData, sync::Arc}; - -use futures::{future::BoxFuture, stream::BoxStream}; -use serde::Serialize; -use serde_json::Value; -use specta::Type; - -use crate::{internal::MiddlewareLike, ExecError}; - -pub trait MiddlewareBuilderLike { - type LayerContext: Send + Sync + 'static; - - fn build(&self, next: T) -> Box> - where - T: Layer; -} - -pub struct MiddlewareMerger -where - TMiddleware: MiddlewareBuilderLike, - TIncomingMiddleware: MiddlewareBuilderLike, -{ - pub middleware: TMiddleware, - pub middleware2: TIncomingMiddleware, - pub phantom: PhantomData<(TCtx, TLayerCtx)>, -} - -impl MiddlewareBuilderLike - for MiddlewareMerger -where - TCtx: 'static, - TLayerCtx: 'static, - TNewLayerCtx: Send + Sync + 'static, - TMiddleware: MiddlewareBuilderLike, - TIncomingMiddleware: MiddlewareBuilderLike, -{ - type LayerContext = TNewLayerCtx; - - fn build(&self, next: T) -> Box> - where - T: Layer, - { - self.middleware.build(self.middleware2.build(next)) - } -} - -pub struct MiddlewareLayerBuilder -where - TCtx: Send + Sync + 'static, - TLayerCtx: Send + Sync + 'static, - TNewLayerCtx: Send + Sync + 'static, - TMiddleware: MiddlewareBuilderLike + Send + 'static, - TNewMiddleware: MiddlewareLike, -{ - pub middleware: TMiddleware, - pub mw: TNewMiddleware, - pub phantom: PhantomData<(TCtx, TLayerCtx, TNewLayerCtx)>, -} - -impl MiddlewareBuilderLike - for MiddlewareLayerBuilder -where - TCtx: Send + Sync + 'static, - TLayerCtx: Send + Sync + 'static, - TNewLayerCtx: Send + Sync + 'static, - TMiddleware: MiddlewareBuilderLike + Send + 'static, - TNewMiddleware: MiddlewareLike + Send + Sync + 'static, -{ - type LayerContext = TNewLayerCtx; - - fn build(&self, next: T) -> Box> - where - T: Layer + Sync, - { - self.middleware.build(MiddlewareLayer { - next: Arc::new(next), - mw: self.mw.clone(), - phantom: PhantomData, - }) - } -} - -pub struct MiddlewareLayer -where - TLayerCtx: Send + 'static, - TNewLayerCtx: Send + 'static, - TMiddleware: Layer + 'static, - TNewMiddleware: MiddlewareLike + Send + Sync + 'static, -{ - next: Arc, // TODO: Avoid arcing this if possible - mw: TNewMiddleware, - phantom: PhantomData<(TLayerCtx, TNewLayerCtx)>, -} - -impl Layer - for MiddlewareLayer -where - TLayerCtx: Send + Sync + 'static, - TNewLayerCtx: Send + Sync + 'static, - TMiddleware: Layer + Sync + 'static, - TNewMiddleware: MiddlewareLike + Send + Sync + 'static, -{ - fn call(&self, ctx: TLayerCtx, input: Value, req: RequestContext) -> ExecResult { - Ok(self.mw.handle(ctx, input, req, self.next.clone())) - } -} - -pub struct BaseMiddleware(PhantomData) -where - TCtx: 'static; - -impl Default for BaseMiddleware -where - TCtx: 'static, -{ - fn default() -> Self { - Self(PhantomData) - } -} - -impl MiddlewareBuilderLike for BaseMiddleware -where - TCtx: Send + Sync + 'static, -{ - type LayerContext = TCtx; - - fn build(&self, next: T) -> Box> - where - T: Layer, - { - Box::new(next) - } -} - -// TODO: Rename this so it doesn't conflict with the middleware builder struct -pub trait Layer: Send + Sync + 'static { - fn call(&self, a: TLayerCtx, b: Value, c: RequestContext) -> Result; -} - -pub struct ResolverLayer -where - TLayerCtx: Send + Sync + 'static, - T: Fn(TLayerCtx, Value, RequestContext) -> Result - + Send - + Sync - + 'static, -{ - pub func: T, - pub phantom: PhantomData, -} - -impl Layer for ResolverLayer -where - TLayerCtx: Send + Sync + 'static, - T: Fn(TLayerCtx, Value, RequestContext) -> Result - + Send - + Sync - + 'static, -{ - fn call(&self, a: TLayerCtx, b: Value, c: RequestContext) -> Result { - (self.func)(a, b, c) - } -} - -impl Layer for Box + 'static> -where - TLayerCtx: 'static, -{ - fn call(&self, a: TLayerCtx, b: Value, c: RequestContext) -> Result { - (**self).call(a, b, c) - } -} - -// TODO: Is this a duplicate of any type? -// TODO: Move into public API cause it might be used in middleware -#[derive(Debug, Clone)] -pub enum ProcedureKind { - Query, - Mutation, - Subscription, -} - -impl ProcedureKind { - pub fn to_str(&self) -> &'static str { - match self { - ProcedureKind::Query => "query", - ProcedureKind::Mutation => "mutation", - ProcedureKind::Subscription => "subscription", - } - } -} - -// TODO: Maybe rename to `Request` or something else. Also move into Public API cause it might be used in middleware -#[derive(Debug, Clone)] -pub struct RequestContext { - pub kind: ProcedureKind, - pub path: String, // TODO: String slice?? -} - -pub type ExecResult = Result; - -pub enum RequestFuture { - Ready(ExecResult), - Future(BoxFuture<'static, ExecResult>), -} - -impl RequestFuture { - pub async fn exec(self) -> ExecResult { - match self { - Self::Ready(res) => res, - Self::Future(fut) => fut.await, - } - } -} - -pub trait RequestResultData: Serialize + Type + Send + 'static {} -impl RequestResultData for T {} - -pub enum TypedRequestFuture { - Ready(ExecResult), - Future(BoxFuture<'static, ExecResult>), -} - -impl TypedRequestFuture -where - T: RequestResultData, -{ - pub fn to_request_future(self) -> RequestFuture { - match self { - Self::Ready(val) => RequestFuture::Ready({ - val.map(|v| serde_json::to_value(v).map_err(ExecError::DeserializingArgErr)) - .and_then(|v| v) - }), - Self::Future(fut) => RequestFuture::Future(Box::pin(async move { - fut.await - .map(serde_json::to_value)? - .map_err(ExecError::DeserializingArgErr) - })), - } - } - - pub async fn exec(self) -> ExecResult { - match self { - Self::Ready(res) => res, - Self::Future(fut) => fut.await, - } - } -} - -pub type StreamItem = ExecResult; -pub type StreamFuture = BoxStream<'static, StreamItem>; - -pub enum LayerFuture { - Request(RequestFuture), - Stream(StreamFuture), - Wrapped(BoxFuture<'static, ExecResult>), -} - -pub enum LayerReturn { - Request(Value), - Stream(BoxStream<'static, StreamItem>), -} - -impl LayerFuture { - pub fn into_layer_return(self) -> BoxFuture<'static, ExecResult> { - Box::pin(async { - match self { - Self::Request(req) => req.exec().await.map(LayerReturn::Request), - Self::Stream(stream) => Ok(LayerReturn::Stream(stream)), - Self::Wrapped(fut) => fut.await?.into_layer_return().await, - } - }) - } -} - -impl From for LayerFuture { - fn from(v: RequestFuture) -> Self { - Self::Request(v) - } -} - -impl From for LayerFuture { - fn from(v: StreamFuture) -> Self { - Self::Stream(v) - } -} diff --git a/external/rspc/src/internal/middleware_builder.rs b/external/rspc/src/internal/middleware_builder.rs deleted file mode 100644 index 4196c71..0000000 --- a/external/rspc/src/internal/middleware_builder.rs +++ /dev/null @@ -1,333 +0,0 @@ -use futures::StreamExt; -use serde_json::Value; -use std::{future::Future, marker::PhantomData, sync::Arc}; - -use crate::{ - internal::{Layer, LayerFuture, LayerReturn, RequestContext, RequestFuture, StreamFuture}, - ExecError, -}; - -pub trait MiddlewareLike: Clone { - type State: Clone + Send + Sync + 'static; - type NewCtx: Send + 'static; - - fn handle + 'static>( - &self, - ctx: TLayerCtx, - input: Value, - req: RequestContext, - next: Arc, - ) -> LayerFuture; -} -pub struct MiddlewareState -where - TState: Send, -{ - pub state: TState, - pub input: Value, - pub ctx: TNewCtx, - pub req: RequestContext, - pub phantom: PhantomData, -} - -// This will match were TState is the default (`()`) so it shouldn't let you call it if you've already swapped the generic -impl MiddlewareState -where - TLayerCtx: Send, -{ - pub fn with_state(self, state: TState) -> MiddlewareState - where - TState: Send, - { - MiddlewareState { - state, - input: self.input, - ctx: self.ctx, - req: self.req, - phantom: PhantomData, - } - } -} - -// This will match were TNewCtx is the default (`TCtx`) so it shouldn't let you call it if you've already swapped the generic -impl MiddlewareState -where - TLayerCtx: Send, - TState: Send, -{ - pub fn with_ctx( - self, - new_ctx: TNewCtx, - ) -> MiddlewareState { - MiddlewareState { - state: self.state, - input: self.input, - ctx: new_ctx, - req: self.req, - phantom: PhantomData, - } - } -} - -pub struct Middleware -where - TState: Send, - TLayerCtx: Send, - THandlerFunc: Fn(MiddlewareState) -> THandlerFut + Clone, - THandlerFut: Future, crate::Error>> - + Send - + 'static, -{ - handler: THandlerFunc, - phantom: PhantomData<(TState, TLayerCtx)>, -} - -impl Clone - for Middleware -where - TState: Send, - TLayerCtx: Send, - THandlerFunc: Fn(MiddlewareState) -> THandlerFut + Clone, - THandlerFut: Future, crate::Error>> - + Send - + 'static, -{ - fn clone(&self) -> Self { - Self { - handler: self.handler.clone(), - phantom: PhantomData, - } - } -} - -pub struct MiddlewareBuilder(pub PhantomData) -where - TLayerCtx: Send; - -impl MiddlewareBuilder -where - TLayerCtx: Send, -{ - pub fn middleware( - &self, - handler: THandlerFunc, - ) -> Middleware - where - TState: Send, - THandlerFunc: Fn(MiddlewareState) -> THandlerFut + Clone, - THandlerFut: Future, crate::Error>> - + Send - + 'static, - { - Middleware { - handler, - phantom: PhantomData, - } - } -} - -impl - Middleware -where - TState: Send, - TLayerCtx: Send, - THandlerFunc: Fn(MiddlewareState) -> THandlerFut + Clone, - THandlerFut: Future, crate::Error>> - + Send - + 'static, -{ - pub fn resp( - self, - handler: TRespHandlerFunc, - ) -> MiddlewareWithResponseHandler< - TState, - TLayerCtx, - TNewCtx, - THandlerFunc, - THandlerFut, - TRespHandlerFunc, - TRespHandlerFut, - > - where - TRespHandlerFunc: Fn(TState, Value) -> TRespHandlerFut + Clone + Sync + Send + 'static, - TRespHandlerFut: Future> + Send + 'static, - { - MiddlewareWithResponseHandler { - inner: Middleware { - handler: self.handler, - phantom: PhantomData, - }, - resp_handler: handler, - } - } -} - -pub struct MiddlewareWithResponseHandler< - TState, - TLayerCtx, - TNewCtx, - THandlerFunc, - THandlerFut, - TRespHandlerFunc, - TRespHandlerFut, -> where - TState: Send, - TLayerCtx: Send, - THandlerFunc: Fn(MiddlewareState) -> THandlerFut + Clone, - THandlerFut: Future, crate::Error>> - + Send - + 'static, - TRespHandlerFunc: Fn(TState, Value) -> TRespHandlerFut + Clone + Sync + Send + 'static, - TRespHandlerFut: Future> + Send + 'static, -{ - inner: Middleware, - resp_handler: TRespHandlerFunc, -} - -impl Clone - for MiddlewareWithResponseHandler< - TState, - TLayerCtx, - TNewCtx, - THandlerFunc, - THandlerFut, - TRespHandlerFunc, - TRespHandlerFut, - > -where - TState: Send, - TLayerCtx: Send, - THandlerFunc: Fn(MiddlewareState) -> THandlerFut + Clone, - THandlerFut: Future, crate::Error>> - + Send - + 'static, - TRespHandlerFunc: Fn(TState, Value) -> TRespHandlerFut + Clone + Sync + Send + 'static, - TRespHandlerFut: Future> + Send + 'static, -{ - fn clone(&self) -> Self { - Self { - inner: self.inner.clone(), - resp_handler: self.resp_handler.clone(), - } - } -} - -impl MiddlewareLike - for Middleware -where - TState: Clone + Send + Sync + 'static, - TLayerCtx: Send, - TNewCtx: Send + 'static, - THandlerFunc: Fn(MiddlewareState) -> THandlerFut + Clone, - THandlerFut: Future, crate::Error>> - + Send - + 'static, -{ - type State = TState; - type NewCtx = TNewCtx; - - fn handle + 'static>( - &self, - ctx: TLayerCtx, - input: Value, - req: RequestContext, - next: Arc, - ) -> LayerFuture { - let handler = (self.handler)(MiddlewareState { - state: (), - ctx, - input, - req, - phantom: PhantomData, - }); - - LayerFuture::Wrapped(Box::pin(async move { - let handler = handler.await?; - next.call(handler.ctx, handler.input, handler.req) - })) - } -} - -enum FutOrValue>> { - Fut(T), - Value(Result), -} - -impl - MiddlewareLike - for MiddlewareWithResponseHandler< - TState, - TLayerCtx, - TNewCtx, - THandlerFunc, - THandlerFut, - TRespHandlerFunc, - TRespHandlerFut, - > -where - TState: Clone + Send + Sync + 'static, - TLayerCtx: Send + 'static, - TNewCtx: Send + 'static, - THandlerFunc: Fn(MiddlewareState) -> THandlerFut + Clone, - THandlerFut: Future, crate::Error>> - + Send - + 'static, - TRespHandlerFunc: Fn(TState, Value) -> TRespHandlerFut + Clone + Sync + Send + 'static, - TRespHandlerFut: Future> + Send + 'static, -{ - type State = TState; - type NewCtx = TNewCtx; - - fn handle + 'static>( - &self, - ctx: TLayerCtx, - input: Value, - req: RequestContext, - next: Arc, - ) -> LayerFuture { - let handler = (self.inner.handler)(MiddlewareState { - state: (), - ctx, - input, - req, - // new_ctx: None, - phantom: PhantomData, - }); - - let f = self.resp_handler.clone(); // TODO: Runtime clone is bad. Avoid this! - - LayerFuture::Wrapped(Box::pin(async move { - let handler = handler.await?; - let handler_state = handler.state; - - Ok( - match next - .call(handler.ctx, handler.input, handler.req)? - .into_layer_return() - .await? - { - LayerReturn::Request(v) => { - RequestFuture::Ready(f(handler_state, v).await.map_err(Into::into)).into() - } - LayerReturn::Stream(s) => StreamFuture::into(Box::pin(s.then(move |v| { - let v = match v { - Ok(v) => FutOrValue::Fut(f(handler_state.clone(), v)), - e => FutOrValue::Value(e), - }; - - async move { - match v { - FutOrValue::Fut(fut) => { - fut.await.map_err(ExecError::ErrResolverError) - } - FutOrValue::Value(v) => v, - } - } - }))), - }, - ) - })) - } -} - -// TODO: Middleware functions should be able to be async or sync & return a value or result diff --git a/external/rspc/src/internal/mod.rs b/external/rspc/src/internal/mod.rs deleted file mode 100644 index f478d1b..0000000 --- a/external/rspc/src/internal/mod.rs +++ /dev/null @@ -1,80 +0,0 @@ -//! Internal types which power rspc. The module provides no guarantee of compatibility between updates, so you should be careful rely on types from it. - -pub mod jsonrpc; -mod jsonrpc_exec; -mod middleware; -mod middleware_builder; -mod procedure_builder; -mod procedure_store; -mod resolver; -mod resolver_result; - -pub use middleware::*; -pub use middleware_builder::*; -pub use procedure_builder::*; -pub use procedure_store::*; -pub use resolver::*; -pub use resolver_result::*; - -pub use specta; - -#[cfg(test)] -mod tests { - use std::{fs::File, io::Write, path::PathBuf}; - - use specta::{ts::export_datatype, DefOpts, Type, TypeDefs}; - - macro_rules! collect_datatypes { - ($( $i:path ),* $(,)? ) => {{ - use specta::DataType; - - let mut tys = TypeDefs::default(); - - $({ - let def = <$i>::definition(DefOpts { - parent_inline: true, - type_map: &mut tys, - }); - - if let Ok(def) = def { - if let DataType::Named(n) = def { - if let Some(sid) = n.sid { - tys.insert(sid, Some(n)); - } - } - } - })* - tys - }}; - } - - // rspc has internal types that are shared between the frontend and backend. We use Specta directly to share these to avoid a whole class of bugs within the library itself. - #[test] - fn export_internal_types() { - let mut file = File::create( - PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("./packages/client/src/bindings.ts"), - ) - .unwrap(); - - file.write_all( - b"// DO NOT MODIFY. This file was generated by Specta and is used to keep rspc internally type safe.\n// Checkout the unit test 'export_internal_types' to see where this files comes from!", - ) - .unwrap(); - - let tys = collect_datatypes! { - super::ProcedureDataType, - crate::Procedures, - super::jsonrpc::Request, - }; - - for (_, ty) in tys.into_iter().filter_map(|(sid, v)| v.map(|v| (sid, v))) { - file.write_all(b"\n\n").unwrap(); - file.write_all( - export_datatype(&Default::default(), &ty) - .unwrap() - .as_bytes(), - ) - .unwrap(); - } - } -} diff --git a/external/rspc/src/internal/procedure_builder.rs b/external/rspc/src/internal/procedure_builder.rs deleted file mode 100644 index 104d503..0000000 --- a/external/rspc/src/internal/procedure_builder.rs +++ /dev/null @@ -1,111 +0,0 @@ -use std::{ - any::{Any, TypeId}, - collections::HashMap, - marker::PhantomData, - ops::Deref, - sync::{Arc, RwLock}, -}; - -use super::{ProcedureDataType, ProcedureKind}; - -pub type GlobalData = Arc>>>; - -// TODO: Remove `TResolver` and put it into bounds on this type -pub struct UnbuiltProcedureBuilder { - pub name: &'static str, - pub kind: ProcedureKind, - pub typedef: ProcedureDataType, - pub data: GlobalData, - // This can't be generic or a function pointer so boxing is a requirement in stable Rust. It's done at schema-build time so it should be ok. - // For this to be done without boxing we would need `fn_traits` - https://doc.rust-lang.org/beta/unstable-book/library-features/fn-traits.html - deref_handler: Box BuiltProcedureBuilder>, - phantom: PhantomData, -} - -impl UnbuiltProcedureBuilder { - pub fn new( - name: &'static str, - kind: ProcedureKind, - typedef: ProcedureDataType, - data: GlobalData, - ) -> Self { - Self { - name, - kind: kind.clone(), - typedef: typedef.clone(), - data: data.clone(), - // TODO: Make it so this is only boxed in the `Deref` impl so it's a zero cost abstraction! - deref_handler: Box::new(move |resolver| BuiltProcedureBuilder { - name, - kind: kind.clone(), - typedef: typedef.clone(), - data: data.clone(), - resolver, - }), - phantom: PhantomData, - } - } - - pub fn from_builder(builder: &UnbuiltProcedureBuilder) -> Self { - let (name, kind, typedef, data) = ( - builder.name, - builder.kind.clone(), - builder.typedef.clone(), - builder.data.clone(), - ); - - Self { - name, - kind: kind.clone(), - typedef: typedef.clone(), - data: data.clone(), - deref_handler: Box::new(move |resolver| BuiltProcedureBuilder { - name, - kind: kind.clone(), - typedef: typedef.clone(), - data: data.clone(), - resolver, - }), - phantom: PhantomData, - } - } - - pub fn resolver(self, resolver: TResolver) -> BuiltProcedureBuilder { - BuiltProcedureBuilder { - name: self.name, - kind: self.kind, - typedef: self.typedef, - data: self.data, - resolver, - } - } - - pub fn data(&self) -> GlobalData { - self.data.clone() - } -} - -impl Deref for UnbuiltProcedureBuilder { - type Target = Box BuiltProcedureBuilder>; - - fn deref(&self) -> &Self::Target { - &self.deref_handler - } -} - -pub struct BuiltProcedureBuilder { - pub name: &'static str, - pub kind: ProcedureKind, - pub typedef: ProcedureDataType, - pub data: GlobalData, - pub resolver: TResolver, -} - -impl BuiltProcedureBuilder { - pub fn map( - self, - func: impl Fn(Self) -> BuiltProcedureBuilder, - ) -> BuiltProcedureBuilder { - func(self) - } -} diff --git a/external/rspc/src/internal/procedure_store.rs b/external/rspc/src/internal/procedure_store.rs deleted file mode 100644 index 9c47140..0000000 --- a/external/rspc/src/internal/procedure_store.rs +++ /dev/null @@ -1,63 +0,0 @@ -use std::collections::BTreeMap; - -use specta::{datatype::DataType, DataTypeFrom}; - -use crate::is_valid_procedure_name; - -use super::Layer; - -/// Represents a Typescript procedure file which is generated by the Rust code. -/// This is codegenerated Typescript file is how we can validate the types on the frontend match Rust. -/// -/// @internal -#[derive(Debug, Clone, DataTypeFrom)] -#[cfg_attr(test, derive(specta::Type))] -#[cfg_attr(test, specta(rename = "ProcedureDef"))] -pub struct ProcedureDataType { - pub key: String, - #[specta(type = serde_json::Value)] - pub input: DataType, - #[specta(type = serde_json::Value)] - pub result: DataType, -} - -// TODO: Make private -pub struct Procedure { - pub exec: Box>, - pub ty: ProcedureDataType, -} - -pub struct ProcedureStore { - name: &'static str, - pub store: BTreeMap>, -} - -impl ProcedureStore { - pub fn new(name: &'static str) -> Self { - Self { - name, - store: Default::default(), - } - } - - pub fn append(&mut self, key: String, exec: Box>, ty: ProcedureDataType) { - #[allow(clippy::panic)] - if is_valid_procedure_name(&key) { - panic!( - "rspc error: attempted to create {} operation named '{}', however this name is not allowed.", - self.name, - key - ); - } - - #[allow(clippy::panic)] - if self.store.contains_key(&key) { - panic!( - "rspc error: {} operation already has resolver with name '{}'", - self.name, key - ); - } - - self.store.insert(key, Procedure { exec, ty }); - } -} diff --git a/external/rspc/src/internal/resolver.rs b/external/rspc/src/internal/resolver.rs deleted file mode 100644 index b46ea79..0000000 --- a/external/rspc/src/internal/resolver.rs +++ /dev/null @@ -1,114 +0,0 @@ -use std::marker::PhantomData; - -use futures::{Stream, StreamExt}; -use serde::{de::DeserializeOwned, Serialize}; -use serde_json::Value; -use specta::{ts::TsExportError, DefOpts, Type, TypeDefs}; - -use crate::{ - internal::{ProcedureDataType, RequestResult, StreamFuture, TypedRequestFuture}, - ExecError, -}; - -pub trait RequestResolver: Send + Sync + 'static { - type Arg: DeserializeOwned + Type; - type Result: RequestResult; - type Data; - - fn exec( - &self, - ctx: TCtx, - input: Self::Arg, - ) -> Result>::Data>, ExecError>; - - fn typedef(defs: &mut TypeDefs, key: &str) -> Result; -} - -pub struct DoubleArgMarker( - /* private */ PhantomData<(TArg, TResultMarker)>, -); -impl - RequestResolver, TResultMarker> for TFunc -where - TArg: DeserializeOwned + Type, - TFunc: Fn(TCtx, TArg) -> TResult + Send + Sync + 'static, - TResult: RequestResult, -{ - type Result = TResult; - type Arg = TArg; - type Data = TResult::Data; - - fn exec( - &self, - ctx: TCtx, - input: Self::Arg, - ) -> Result, ExecError> { - self(ctx, input).into_request_future() - } - - fn typedef(defs: &mut TypeDefs, key: &str) -> Result { - Ok(ProcedureDataType { - key: key.to_string(), - input: ::reference( - DefOpts { - parent_inline: true, - type_map: defs, - }, - &[], - )?, - result: ::reference( - DefOpts { - parent_inline: true, - type_map: defs, - }, - &[], - )?, - }) - } -} - -pub trait StreamResolver { - fn exec(&self, ctx: TCtx, input: Value) -> Result; - - fn typedef(defs: &mut TypeDefs, key: &str) -> Result; -} - -pub struct DoubleArgStreamMarker( - /* private */ PhantomData<(TArg, TResult, TStream)>, -); -impl - StreamResolver> for TFunc -where - TArg: DeserializeOwned + Type, - TFunc: Fn(TCtx, TArg) -> TStream, - TStream: Stream + Send + Sync + 'static, - TResult: Serialize + Type, -{ - fn exec(&self, ctx: TCtx, input: Value) -> Result { - let input = serde_json::from_value(input).map_err(ExecError::DeserializingArgErr)?; - - Ok(Box::pin(self(ctx, input).map(|v| { - serde_json::to_value(&v).map_err(ExecError::SerializingResultErr) - }))) - } - - fn typedef(defs: &mut TypeDefs, key: &str) -> Result { - Ok(ProcedureDataType { - key: key.to_string(), - input: ::reference( - DefOpts { - parent_inline: true, - type_map: defs, - }, - &[], - )?, - result: ::reference( - DefOpts { - parent_inline: true, - type_map: defs, - }, - &[], - )?, - }) - } -} diff --git a/external/rspc/src/internal/resolver_result.rs b/external/rspc/src/internal/resolver_result.rs deleted file mode 100644 index 831a5f4..0000000 --- a/external/rspc/src/internal/resolver_result.rs +++ /dev/null @@ -1,53 +0,0 @@ -use std::{future::Future, marker::PhantomData}; - -use crate::{ - internal::{RequestResultData, TypedRequestFuture}, - Error, ExecError, -}; - -pub trait RequestResult { - type Data: RequestResultData; - - fn into_request_future(self) -> Result, ExecError>; -} - -pub struct SerializeMarker(PhantomData<()>); -impl RequestResult for T -where - T: RequestResultData, -{ - type Data = T; - - fn into_request_future(self) -> Result, ExecError> { - Ok(TypedRequestFuture::Ready(Ok(self))) - } -} - -pub struct ResultMarker(PhantomData<()>); -impl RequestResult for Result -where - T: RequestResultData, -{ - type Data = T; - - fn into_request_future(self) -> Result, ExecError> { - Ok(TypedRequestFuture::Ready(Ok( - self.map_err(ExecError::ErrResolverError)? - ))) - } -} - -pub struct FutureMarker(PhantomData); -impl RequestResult> for TFut -where - TFut: Future + Send + 'static, - T: RequestResult + Send, -{ - type Data = T::Data; - - fn into_request_future(self) -> Result, ExecError> { - Ok(TypedRequestFuture::Future(Box::pin(async move { - self.await.into_request_future()?.exec().await - }))) - } -} diff --git a/external/rspc/src/lib.rs b/external/rspc/src/lib.rs deleted file mode 100644 index c227546..0000000 --- a/external/rspc/src/lib.rs +++ /dev/null @@ -1,47 +0,0 @@ -//! A blazingly fast and easy to use TRPC-like server for Rust. -//! -//! [Official docs](https://rspc.dev) -//! -#![forbid(unsafe_code)] -#![warn( - clippy::all, - clippy::cargo, - clippy::unwrap_used, - clippy::panic, - clippy::todo, - clippy::panic_in_result_fn, - // rustdoc::all, - // missing_docs - // missing_panics_doc - // missing_debug_implementations -)] -#![allow(clippy::cargo_common_metadata)] // TODO: I enable this because it's doing a false positive on the `normi-macros` crate. - -mod config; -mod error; -mod router; -mod router_builder; -pub mod selection; - -pub use config::*; -pub use error::*; -pub use router::*; -pub use router_builder::*; - -pub mod integrations; -pub mod internal; -pub mod plugins; - -pub use specta::RSPCType as Type; - -#[cfg(debug_assertions)] -#[allow(clippy::panic)] -pub fn test_result_type() { - panic!("You should not call `test_type` at runtime. This is just a debugging tool."); -} - -#[cfg(debug_assertions)] -#[allow(clippy::panic)] -pub fn test_result_value(_: T) { - panic!("You should not call `test_type` at runtime. This is just a debugging tool."); -} diff --git a/external/rspc/src/plugins/mod.rs b/external/rspc/src/plugins/mod.rs deleted file mode 100644 index af0e688..0000000 --- a/external/rspc/src/plugins/mod.rs +++ /dev/null @@ -1,2 +0,0 @@ -// #[cfg(feature = "openapi")] -// pub mod openapi; diff --git a/external/rspc/src/plugins/openapi/mod.rs b/external/rspc/src/plugins/openapi/mod.rs deleted file mode 100644 index b1eb355..0000000 --- a/external/rspc/src/plugins/openapi/mod.rs +++ /dev/null @@ -1,440 +0,0 @@ -use std::{ - any::TypeId, - borrow::Cow, - collections::{BTreeMap, HashMap}, - sync::Arc, -}; - -pub use httpz::http::Method; -use httpz::{http::Response, Endpoint, GenericEndpoint, HttpEndpoint, Request}; -use include_dir::{include_dir, Dir}; -use mime_guess::mime; -use openapiv3::{ - Info, MediaType, Operation, Parameter, ParameterData, ParameterSchemaOrContent, PathItem, - Paths, QueryStyle, ReferenceOr, Responses, Schema, Server, StatusCode, -}; -use specta::openapi::to_openapi; - -use crate::{ - integrations::httpz_extractors::{TCtxFunc, TCtxFuncResult}, - internal::{BuiltProcedureBuilder, ProcedureKind}, - ExecKind, Router, -}; - -static SWAGGER_UI: Dir<'_> = include_dir!("$CARGO_MANIFEST_DIR/src/plugins/openapi/swagger-ui"); - -#[derive(Debug, Clone)] -pub struct OpenAPIEndpoint { - pub procedure_name: &'static str, - pub procedure_type: ExecKind, - pub arg_schema: ReferenceOr, - pub result_schema: ReferenceOr, -} - -#[derive(Default)] -pub struct OpenAPIContext { - endpoints: HashMap<(Method, &'static str /* OpenAPI URL */), OpenAPIEndpoint>, -} - -#[derive(Default)] -pub struct OpenAPIConfig { - pub title: Cow<'static, str>, - // pub description: &'static str, - pub version: Cow<'static, str>, - pub base_url: Cow<'static, str>, -} - -pub trait OpenAPI { - fn openapi(self, method: Method, url: &'static str) -> BuiltProcedureBuilder; -} - -impl OpenAPI for BuiltProcedureBuilder { - #[allow(clippy::unwrap_used, clippy::panic)] // TODO: Remove once this feature is stable - fn openapi(self, method: Method, url: &'static str) -> Self { - { - let mut data = self.data.write().unwrap(); - - let ctx = data - .entry(TypeId::of::()) - .or_insert_with(|| { - Box::::default() - as Box - }) - .downcast_mut::() - .unwrap(); - - if ctx.endpoints.contains_key(&(method.clone(), url)) { - panic!( - "OpenAPI endpoint already with method '{}' and url '{}'", - method, url, - ); - } - - println!( - "A {:?} {:?}", - self.typedef.inline_input, self.typedef.inline_result - ); - - ctx.endpoints.insert( - (method, url), - OpenAPIEndpoint { - procedure_name: self.name, - procedure_type: match self.kind { - ProcedureKind::Query => ExecKind::Query, - ProcedureKind::Mutation => ExecKind::Mutation, - ProcedureKind::Subscription => panic!("TODO"), - }, - arg_schema: to_openapi(&self.typedef.inline_input), - result_schema: to_openapi(&self.typedef.inline_result), - }, - ); - } - - self - } -} - -impl Router -where - TCtx: Send + Sync + 'static, -{ - #[allow(clippy::unwrap_used, clippy::panic)] // TODO: Remove lint override once this feature is stable - pub fn openapi_doc(&self, config: OpenAPIConfig) -> openapiv3::OpenAPI { - let mut data = self.data.write().unwrap(); - - let ctx = data - .entry(TypeId::of::()) - .or_insert_with(|| { - Box::::default() as Box - }) - .downcast_mut::() - .unwrap(); - - openapiv3::OpenAPI { - openapi: "3.0.3".into(), - info: Info { - title: config.title.into(), - // description: Some(config.description), // TODO - version: config.version.into(), - ..Default::default() - }, - servers: vec![Server { - url: config.base_url.into(), - ..Default::default() - }], - paths: Paths { - paths: ctx - .endpoints - .iter() - .map( - |( - (method, url), - OpenAPIEndpoint { - procedure_name, - procedure_type, - arg_schema, - result_schema, - .. - }, - )| { - ( - url.to_string(), - ReferenceOr::Item({ - let operation = Operation { - operation_id: Some(format!( - "{}-{}", - match procedure_type { - ExecKind::Query => "query", - ExecKind::Mutation => "mutation", - }, - procedure_name - )), - parameters: match procedure_type { - ExecKind::Query => { - vec![ReferenceOr::Item(Parameter::Query { - parameter_data: ParameterData { - name: "todo".to_string(), // TODO - description: None, // TODO - required: true, // TODO: If null or not - deprecated: None, // TODO - format: ParameterSchemaOrContent::Schema( - arg_schema.clone(), - ), - example: None, // TODO - examples: Default::default(), // TODO - explode: None, - extensions: Default::default(), - }, - allow_reserved: false, // TODO: What should this be? - style: QueryStyle::Form, // TODO: What should this be? - allow_empty_value: Some(false), - })] - } - ExecKind::Mutation => vec![], - }, - request_body: match procedure_type { - ExecKind::Query => None, - ExecKind::Mutation => None, // TODO - }, - responses: Responses { - // default: todo!(), - responses: [( - StatusCode::Code(200), - ReferenceOr::Item(openapiv3::Response { - content: [( - "application/json".to_string(), - MediaType { - schema: Some(result_schema.clone()), - // Some(ReferenceOr::Item(Schema { - // schema_data: SchemaData { - // // nullable: todo!(), - // // read_only: todo!(), - // // write_only: todo!(), - // // deprecated: todo!(), - // // external_docs: todo!(), - // example: Some(json!({ - // "todo": "demo", - // })), - // // title: todo!(), - // // description: todo!(), - // // discriminator: todo!(), - // // default: todo!(), - // // extensions: todo!(), - // ..Default::default() - // }, - // schema_kind: SchemaKind::Type( - // Type::Object(ObjectType { - // properties: [( - // "todo".to_string(), - // ReferenceOr::Item( - // Box::new(Schema { - // schema_data: Default::default(), - // schema_kind: SchemaKind::Type(Type::String(StringType { - // // format: todo!(), - // // pattern: todo!(), - // // enumeration: todo!(), - // // min_length: todo!(), - // // max_length: todo!(), - // ..Default::default() - // })), - // }), - // ), - // )] - // .into_iter() - // .collect(), - // // required: todo!(), - // // additional_properties: todo!(), - // // min_properties: todo!(), - // // max_properties: todo!(), - // ..Default::default() - // }), - // ), - // })), - // example: todo!(), - // examples: todo!(), - // encoding: todo!(), - // extensions: todo!(), - ..Default::default() - }, - )] - .into_iter() - .collect(), - ..Default::default() - }), - )] - .into_iter() - .collect(), - ..Default::default() - }, - ..Default::default() - }; - - match *method { - Method::GET => PathItem { - get: Some(operation), - ..Default::default() - }, - Method::POST => PathItem { - post: Some(operation), - ..Default::default() - }, - Method::PUT => PathItem { - put: Some(operation), - ..Default::default() - }, - Method::DELETE => PathItem { - delete: Some(operation), - ..Default::default() - }, - Method::HEAD => PathItem { - head: Some(operation), - ..Default::default() - }, - Method::OPTIONS => PathItem { - options: Some(operation), - ..Default::default() - }, - Method::PATCH => PathItem { - patch: Some(operation), - ..Default::default() - }, - Method::TRACE => PathItem { - trace: Some(operation), - ..Default::default() - }, - _ => panic!("TODO"), - } - }), - ) - }, - ) - .collect(), - ..Default::default() - }, - // TODO: Because of OpenAPI's lack of generics this isn't possible. - // components: Some(Components { - // schemas: self - // .typ_store() - // .iter() - // .map(|(k, v)| { - // println!("{:?}", v); - // (k.to_string(), to_openapi(v)) - // }) - // .collect(), - // ..Default::default() - // }), - ..Default::default() - } - } - - #[allow(clippy::unwrap_used)] // TODO: Remove lint override once this feature is stable - pub fn openapi_endpoint< - TCtxFnMarker: Send + Sync + 'static, - TCtxFn: TCtxFunc, - >( - self: Arc, - config: OpenAPIConfig, - ctx_fn: TCtxFn, - ) -> Endpoint { - let doc = self.openapi_doc(config); - let openapi = - Arc::new(serde_json::to_string(&doc).expect("Could not serialize OpenAPI config!")); - let endpoints = Arc::new({ - let mut data = self.data.write().unwrap(); - - let ctx = data - .entry(TypeId::of::()) - .or_insert_with(|| { - Box::::default() - as Box - }) - .downcast_mut::() - .unwrap(); - - ctx.endpoints - .iter() - .map(|((_method, url), v)| (format!("/api{}", url), v.clone())) - .collect::>() - }); - - GenericEndpoint::new( - [Method::GET, Method::POST], // TODO: All methods - move |req: Request| { - // TODO: Don't clone per request, do per thread or keep reference? - let router = self.clone(); - let openapi = openapi.clone(); - let endpoints = endpoints.clone(); - let ctx_fn = ctx_fn.clone(); - - async move { - let path = &*req.uri().path().to_string(); - let endpoint = endpoints.get(&path.to_string()); - // TODO: Path related to prefix defined on the router or allow user providing a base path - match (path, endpoint) { - // TODO: Use a full blown router to allow pattern matching into variables. - (_, Some(endpoint)) => { - let OpenAPIEndpoint { - procedure_name, - procedure_type, - .. - } = endpoint; - #[cfg(not(feature = "workers"))] - let ctx = match ctx_fn.exec( - &mut httpz::axum::axum::extract::RequestParts::new(req.into()), - ) { - TCtxFuncResult::Value(v) => v, - TCtxFuncResult::Future(v) => v.await, - }; - #[cfg(feature = "workers")] - let ctx = match ctx_fn.exec() { - TCtxFuncResult::Value(v) => v, - TCtxFuncResult::Future(v) => v.await, - }; - - // TODO: Support query or mutation and error out if OpenAPI is put on a subscription - // TODO: Input value from request body - let result = router - .exec( - ctx.unwrap(), - *procedure_type, - procedure_name.to_string(), - None, - ) - .await - .unwrap(); - - Response::builder() - .status(200) - .header("Content-Type", "application/json") - .body(serde_json::to_vec(&result).unwrap()) - .unwrap() - } - ("/api/openapi.json", _) => Response::builder() - .status(200) - .header("Content-Type", "application/json") - .body((*openapi).clone().into_bytes()) - .unwrap(), - // TODO: Allow disabling swagger UI - ("/api/ui", _) => Response::builder() - .status(200) - .header("Content-Type", "text/html") - .body( - SWAGGER_UI - .get_file("index.html") - .unwrap() - .contents() - .to_vec(), - ) - .unwrap(), - _ if req.uri().path().starts_with("/api/_swaggerui/") => { - let path = req.uri().path().strip_prefix("/api/_swaggerui/").unwrap(); - match SWAGGER_UI.get_file(path) { - Some(file) => Response::builder() - .status(200) - .header( - "Content-Type", - mime_guess::from_path(path) - .first() - .unwrap_or(mime::TEXT_PLAIN) - .to_string(), - ) - .body(file.contents().to_vec()) - .unwrap(), - None => Response::builder() - .status(404) - .header("Content-Type", "text/html") - .body("404: Not found".into()) - .unwrap(), - } - } - _ => Response::builder() - .status(404) - .header("Content-Type", "text/html") - .body(b"404: Not found".to_vec()) - .unwrap(), - } - } - }, - ) - } -} diff --git a/external/rspc/src/plugins/openapi/swagger-ui/favicon-16x16.png b/external/rspc/src/plugins/openapi/swagger-ui/favicon-16x16.png deleted file mode 100644 index 8b194e6..0000000 Binary files a/external/rspc/src/plugins/openapi/swagger-ui/favicon-16x16.png and /dev/null differ diff --git a/external/rspc/src/plugins/openapi/swagger-ui/favicon-32x32.png b/external/rspc/src/plugins/openapi/swagger-ui/favicon-32x32.png deleted file mode 100644 index 249737f..0000000 Binary files a/external/rspc/src/plugins/openapi/swagger-ui/favicon-32x32.png and /dev/null differ diff --git a/external/rspc/src/plugins/openapi/swagger-ui/index.css b/external/rspc/src/plugins/openapi/swagger-ui/index.css deleted file mode 100644 index f2376fd..0000000 --- a/external/rspc/src/plugins/openapi/swagger-ui/index.css +++ /dev/null @@ -1,16 +0,0 @@ -html { - box-sizing: border-box; - overflow: -moz-scrollbars-vertical; - overflow-y: scroll; -} - -*, -*:before, -*:after { - box-sizing: inherit; -} - -body { - margin: 0; - background: #fafafa; -} diff --git a/external/rspc/src/plugins/openapi/swagger-ui/index.html b/external/rspc/src/plugins/openapi/swagger-ui/index.html deleted file mode 100644 index 2f05395..0000000 --- a/external/rspc/src/plugins/openapi/swagger-ui/index.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Swagger UI - - - - - - - -
- - - - - - diff --git a/external/rspc/src/plugins/openapi/swagger-ui/swagger-ui-bundle.js b/external/rspc/src/plugins/openapi/swagger-ui/swagger-ui-bundle.js deleted file mode 100644 index b42af40..0000000 --- a/external/rspc/src/plugins/openapi/swagger-ui/swagger-ui-bundle.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! For license information please see swagger-ui-bundle.js.LICENSE.txt */ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.SwaggerUIBundle=t():e.SwaggerUIBundle=t()}(this,(function(){return(()=>{var e={17967:(e,t)=>{"use strict";t.N=void 0;var r=/^([^\w]*)(javascript|data|vbscript)/im,n=/&#(\w+)(^\w|;)?/g,o=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim,a=/^([^:]+):/gm,i=[".","/"];t.N=function(e){var t,s=(t=e||"",t.replace(n,(function(e,t){return String.fromCharCode(t)}))).replace(o,"").trim();if(!s)return"about:blank";if(function(e){return i.indexOf(e[0])>-1}(s))return s;var l=s.match(a);if(!l)return s;var u=l[0];return r.test(u)?"about:blank":s}},53795:(e,t,r)=>{"use strict";r.d(t,{Z:()=>P});var n=r(23101),o=r.n(n),a=r(61125),i=r.n(a),s=r(11882),l=r.n(s),u=r(97606),c=r.n(u),p=r(67294),f=r(43393);function h(e){return h="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},h(e)}function d(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function m(e,t){for(var r=0;r1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=k(t,r),o=e||Object.keys(y({},r,{},t));return o.every(n)}function k(e,t){return function(r){if("string"==typeof r)return(0,f.is)(t[r],e[r]);if(Array.isArray(r))return(0,f.is)(S(t,r),S(e,r));throw new TypeError("Invalid key: expected Array or string: "+r)}}var C=function(e){function t(){return d(this,t),E(this,b(t).apply(this,arguments))}var r,n,o;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&w(e,t)}(t,e),r=t,n=[{key:"shouldComponentUpdate",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return!A(this.updateOnProps,this.props,e,"updateOnProps")||!A(this.updateOnStates,this.state,t,"updateOnStates")}}],n&&m(r.prototype,n),o&&m(r,o),t}(p.Component);const O=C;var j=r(23930),I=r.n(j),N=r(45697),T=r.n(N);class P extends O{constructor(){super(...arguments),i()(this,"getModelName",(e=>-1!==l()(e).call(e,"#/definitions/")?e.replace(/^.*#\/definitions\//,""):-1!==l()(e).call(e,"#/components/schemas/")?e.replace(/^.*#\/components\/schemas\//,""):void 0)),i()(this,"getRefSchema",(e=>{let{specSelectors:t}=this.props;return t.findDefinition(e)}))}render(){let{getComponent:e,getConfigs:t,specSelectors:n,schema:a,required:i,name:s,isRef:l,specPath:u,displayName:c,includeReadOnly:f,includeWriteOnly:h}=this.props;const d=e("ObjectModel"),m=e("ArrayModel"),g=e("PrimitiveModel");let v="object",y=a&&a.get("$$ref");if(!s&&y&&(s=this.getModelName(y)),!a&&y&&(a=this.getRefSchema(s)),!a)return p.createElement("span",{className:"model model-title"},p.createElement("span",{className:"model-title__text"},c||s),p.createElement("img",{src:r(2517),height:"20px",width:"20px"}));const b=n.isOAS3()&&a.get("deprecated");switch(l=void 0!==l?l:!!y,v=a&&a.get("type")||v,v){case"object":return p.createElement(d,o()({className:"object"},this.props,{specPath:u,getConfigs:t,schema:a,name:s,deprecated:b,isRef:l,includeReadOnly:f,includeWriteOnly:h}));case"array":return p.createElement(m,o()({className:"array"},this.props,{getConfigs:t,schema:a,name:s,deprecated:b,required:i,includeReadOnly:f,includeWriteOnly:h}));default:return p.createElement(g,o()({},this.props,{getComponent:e,getConfigs:t,schema:a,name:s,deprecated:b,required:i}))}}}i()(P,"propTypes",{schema:c()(I()).isRequired,getComponent:T().func.isRequired,getConfigs:T().func.isRequired,specSelectors:T().object.isRequired,name:T().string,displayName:T().string,isRef:T().bool,required:T().bool,expandDepth:T().number,depth:T().number,specPath:I().list.isRequired,includeReadOnly:T().bool,includeWriteOnly:T().bool})},5623:(e,t,r)=>{"use strict";r.d(t,{Z:()=>f});var n=r(61125),o=r.n(n),a=r(28222),i=r.n(a),s=r(67294),l=r(84564),u=r.n(l),c=r(90242),p=r(27504);class f extends s.Component{constructor(e,t){super(e,t),o()(this,"getDefinitionUrl",(()=>{let{specSelectors:e}=this.props;return new(u())(e.url(),p.Z.location).toString()}));let{getConfigs:r}=e,{validatorUrl:n}=r();this.state={url:this.getDefinitionUrl(),validatorUrl:void 0===n?"https://validator.swagger.io/validator":n}}UNSAFE_componentWillReceiveProps(e){let{getConfigs:t}=e,{validatorUrl:r}=t();this.setState({url:this.getDefinitionUrl(),validatorUrl:void 0===r?"https://validator.swagger.io/validator":r})}render(){let{getConfigs:e}=this.props,{spec:t}=e(),r=(0,c.Nm)(this.state.validatorUrl);return"object"==typeof t&&i()(t).length?null:this.state.url&&(0,c.hW)(this.state.validatorUrl)&&(0,c.hW)(this.state.url)?s.createElement("span",{className:"float-right"},s.createElement("a",{target:"_blank",rel:"noopener noreferrer",href:`${r}/debug?url=${encodeURIComponent(this.state.url)}`},s.createElement(h,{src:`${r}?url=${encodeURIComponent(this.state.url)}`,alt:"Online validator badge"}))):null}}class h extends s.Component{constructor(e){super(e),this.state={loaded:!1,error:!1}}componentDidMount(){const e=new Image;e.onload=()=>{this.setState({loaded:!0})},e.onerror=()=>{this.setState({error:!0})},e.src=this.props.src}UNSAFE_componentWillReceiveProps(e){if(e.src!==this.props.src){const t=new Image;t.onload=()=>{this.setState({loaded:!0})},t.onerror=()=>{this.setState({error:!0})},t.src=e.src}}render(){return this.state.error?s.createElement("img",{alt:"Error"}):this.state.loaded?s.createElement("img",{src:this.props.src,alt:this.props.alt}):null}}},86019:(e,t,r)=>{"use strict";r.d(t,{Z:()=>me,s:()=>ge});var n=r(67294),o=r(89927);function a(e,t){if(Array.prototype.indexOf)return e.indexOf(t);for(var r=0,n=e.length;r=0;r--)!0===t(e[r])&&e.splice(r,1)}function s(e){throw new Error("Unhandled case for value: '"+e+"'")}var l=function(){function e(e){void 0===e&&(e={}),this.tagName="",this.attrs={},this.innerHTML="",this.whitespaceRegex=/\s+/,this.tagName=e.tagName||"",this.attrs=e.attrs||{},this.innerHTML=e.innerHtml||e.innerHTML||""}return e.prototype.setTagName=function(e){return this.tagName=e,this},e.prototype.getTagName=function(){return this.tagName||""},e.prototype.setAttr=function(e,t){return this.getAttrs()[e]=t,this},e.prototype.getAttr=function(e){return this.getAttrs()[e]},e.prototype.setAttrs=function(e){return Object.assign(this.getAttrs(),e),this},e.prototype.getAttrs=function(){return this.attrs||(this.attrs={})},e.prototype.setClass=function(e){return this.setAttr("class",e)},e.prototype.addClass=function(e){for(var t,r=this.getClass(),n=this.whitespaceRegex,o=r?r.split(n):[],i=e.split(n);t=i.shift();)-1===a(o,t)&&o.push(t);return this.getAttrs().class=o.join(" "),this},e.prototype.removeClass=function(e){for(var t,r=this.getClass(),n=this.whitespaceRegex,o=r?r.split(n):[],i=e.split(n);o.length&&(t=i.shift());){var s=a(o,t);-1!==s&&o.splice(s,1)}return this.getAttrs().class=o.join(" "),this},e.prototype.getClass=function(){return this.getAttrs().class||""},e.prototype.hasClass=function(e){return-1!==(" "+this.getClass()+" ").indexOf(" "+e+" ")},e.prototype.setInnerHTML=function(e){return this.innerHTML=e,this},e.prototype.setInnerHtml=function(e){return this.setInnerHTML(e)},e.prototype.getInnerHTML=function(){return this.innerHTML||""},e.prototype.getInnerHtml=function(){return this.getInnerHTML()},e.prototype.toAnchorString=function(){var e=this.getTagName(),t=this.buildAttrsStr();return["<",e,t=t?" "+t:"",">",this.getInnerHtml(),""].join("")},e.prototype.buildAttrsStr=function(){if(!this.attrs)return"";var e=this.getAttrs(),t=[];for(var r in e)e.hasOwnProperty(r)&&t.push(r+'="'+e[r]+'"');return t.join(" ")},e}();var u=function(){function e(e){void 0===e&&(e={}),this.newWindow=!1,this.truncate={},this.className="",this.newWindow=e.newWindow||!1,this.truncate=e.truncate||{},this.className=e.className||""}return e.prototype.build=function(e){return new l({tagName:"a",attrs:this.createAttrs(e),innerHtml:this.processAnchorText(e.getAnchorText())})},e.prototype.createAttrs=function(e){var t={href:e.getAnchorHref()},r=this.createCssClass(e);return r&&(t.class=r),this.newWindow&&(t.target="_blank",t.rel="noopener noreferrer"),this.truncate&&this.truncate.length&&this.truncate.length=s)return l.host.length==t?(l.host.substr(0,t-o)+r).substr(0,s+n):i(c,s).substr(0,s+n);var p="";if(l.path&&(p+="/"+l.path),l.query&&(p+="?"+l.query),p){if((c+p).length>=s)return(c+p).length==t?(c+p).substr(0,t):(c+i(p,s-c.length)).substr(0,s+n);c+=p}if(l.fragment){var f="#"+l.fragment;if((c+f).length>=s)return(c+f).length==t?(c+f).substr(0,t):(c+i(f,s-c.length)).substr(0,s+n);c+=f}if(l.scheme&&l.host){var h=l.scheme+"://";if((c+h).length0&&(d=c.substr(-1*Math.floor(s/2))),(c.substr(0,Math.ceil(s/2))+r+d).substr(0,s+n)}(e,r):"middle"===n?function(e,t,r){if(e.length<=t)return e;var n,o;null==r?(r="…",n=8,o=3):(n=r.length,o=r.length);var a=t-o,i="";return a>0&&(i=e.substr(-1*Math.floor(a/2))),(e.substr(0,Math.ceil(a/2))+r+i).substr(0,a+n)}(e,r):function(e,t,r){return function(e,t,r){var n;return e.length>t&&(null==r?(r="…",n=3):n=r.length,e=e.substring(0,t-n)+r),e}(e,t,r)}(e,r)},e}(),c=function(){function e(e){this.__jsduckDummyDocProp=null,this.matchedText="",this.offset=0,this.tagBuilder=e.tagBuilder,this.matchedText=e.matchedText,this.offset=e.offset}return e.prototype.getMatchedText=function(){return this.matchedText},e.prototype.setOffset=function(e){this.offset=e},e.prototype.getOffset=function(){return this.offset},e.prototype.getCssClassSuffixes=function(){return[this.getType()]},e.prototype.buildTag=function(){return this.tagBuilder.build(this)},e}(),p=function(e,t){return p=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])},p(e,t)};function f(e,t){function r(){this.constructor=e}p(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}var h=function(){return h=Object.assign||function(e){for(var t,r=1,n=arguments.length;r-1},e.isValidUriScheme=function(e){var t=e.match(this.uriSchemeRegex),r=t&&t[0].toLowerCase();return"javascript:"!==r&&"vbscript:"!==r},e.urlMatchDoesNotHaveProtocolOrDot=function(e,t){return!(!e||t&&this.hasFullProtocolRegex.test(t)||-1!==e.indexOf("."))},e.urlMatchDoesNotHaveAtLeastOneWordChar=function(e,t){return!(!e||!t)&&(!this.hasFullProtocolRegex.test(t)&&!this.hasWordCharAfterProtocolRegex.test(e))},e.hasFullProtocolRegex=/^[A-Za-z][-.+A-Za-z0-9]*:\/\//,e.uriSchemeRegex=/^[A-Za-z][-.+A-Za-z0-9]*:/,e.hasWordCharAfterProtocolRegex=new RegExp(":[^\\s]*?["+C+"]"),e.ipRegex=/[0-9][0-9]?[0-9]?\.[0-9][0-9]?[0-9]?\.[0-9][0-9]?[0-9]?\.[0-9][0-9]?[0-9]?(:[0-9]*)?\/?$/,e}(),V=(d=new RegExp("[/?#](?:["+N+"\\-+&@#/%=~_()|'$*\\[\\]{}?!:,.;^✓]*["+N+"\\-+&@#/%=~_()|'$*\\[\\]{}✓])?"),new RegExp(["(?:","(",/(?:[A-Za-z][-.+A-Za-z0-9]{0,63}:(?![A-Za-z][-.+A-Za-z0-9]{0,63}:\/\/)(?!\d+\/?)(?:\/\/)?)/.source,M(2),")","|","(","(//)?",/(?:www\.)/.source,M(6),")","|","(","(//)?",M(10)+"\\.",L.source,"(?![-"+I+"])",")",")","(?::[0-9]+)?","(?:"+d.source+")?"].join(""),"gi")),$=new RegExp("["+N+"]"),W=function(e){function t(t){var r=e.call(this,t)||this;return r.stripPrefix={scheme:!0,www:!0},r.stripTrailingSlash=!0,r.decodePercentEncoding=!0,r.matcherRegex=V,r.wordCharRegExp=$,r.stripPrefix=t.stripPrefix,r.stripTrailingSlash=t.stripTrailingSlash,r.decodePercentEncoding=t.decodePercentEncoding,r}return f(t,e),t.prototype.parseMatches=function(e){for(var t,r=this.matcherRegex,n=this.stripPrefix,o=this.stripTrailingSlash,a=this.decodePercentEncoding,i=this.tagBuilder,s=[],l=function(){var r=t[0],l=t[1],c=t[4],p=t[5],f=t[9],h=t.index,d=p||f,m=e.charAt(h-1);if(!q.isValid(r,l))return"continue";if(h>0&&"@"===m)return"continue";if(h>0&&d&&u.wordCharRegExp.test(m))return"continue";if(/\?$/.test(r)&&(r=r.substr(0,r.length-1)),u.matchHasUnbalancedClosingParen(r))r=r.substr(0,r.length-1);else{var g=u.matchHasInvalidCharAfterTld(r,l);g>-1&&(r=r.substr(0,g))}var v=["http://","https://"].find((function(e){return!!l&&-1!==l.indexOf(e)}));if(v){var y=r.indexOf(v);r=r.substr(y),l=l.substr(y),h+=y}var w=l?"scheme":c?"www":"tld",E=!!l;s.push(new b({tagBuilder:i,matchedText:r,offset:h,urlMatchType:w,url:r,protocolUrlMatch:E,protocolRelativeMatch:!!d,stripPrefix:n,stripTrailingSlash:o,decodePercentEncoding:a}))},u=this;null!==(t=r.exec(e));)l();return s},t.prototype.matchHasUnbalancedClosingParen=function(e){var t,r=e.charAt(e.length-1);if(")"===r)t="(";else if("]"===r)t="[";else{if("}"!==r)return!1;t="{"}for(var n=0,o=0,a=e.length-1;o"===e?(m=new ne(h(h({},m),{name:H()})),W()):E.test(e)||x.test(e)||":"===e||V()}function w(e){">"===e?V():E.test(e)?f=3:V()}function _(e){S.test(e)||("/"===e?f=12:">"===e?W():"<"===e?$():"="===e||A.test(e)||k.test(e)?V():f=5)}function C(e){S.test(e)?f=6:"/"===e?f=12:"="===e?f=7:">"===e?W():"<"===e?$():A.test(e)&&V()}function O(e){S.test(e)||("/"===e?f=12:"="===e?f=7:">"===e?W():"<"===e?$():A.test(e)?V():f=5)}function j(e){S.test(e)||('"'===e?f=8:"'"===e?f=9:/[>=`]/.test(e)?V():"<"===e?$():f=10)}function I(e){'"'===e&&(f=11)}function N(e){"'"===e&&(f=11)}function T(e){S.test(e)?f=4:">"===e?W():"<"===e&&$()}function P(e){S.test(e)?f=4:"/"===e?f=12:">"===e?W():"<"===e?$():(f=4,c--)}function R(e){">"===e?(m=new ne(h(h({},m),{isClosing:!0})),W()):f=4}function M(t){"--"===e.substr(c,2)?(c+=2,m=new ne(h(h({},m),{type:"comment"})),f=14):"DOCTYPE"===e.substr(c,7).toUpperCase()?(c+=7,m=new ne(h(h({},m),{type:"doctype"})),f=20):V()}function D(e){"-"===e?f=15:">"===e?V():f=16}function L(e){"-"===e?f=18:">"===e?V():f=16}function B(e){"-"===e&&(f=17)}function F(e){f="-"===e?18:16}function z(e){">"===e?W():"!"===e?f=19:"-"===e||(f=16)}function U(e){"-"===e?f=17:">"===e?W():f=16}function q(e){">"===e?W():"<"===e&&$()}function V(){f=0,m=u}function $(){f=1,m=new ne({idx:c})}function W(){var t=e.slice(d,m.idx);t&&a(t,d),"comment"===m.type?i(m.idx):"doctype"===m.type?l(m.idx):(m.isOpening&&n(m.name,m.idx),m.isClosing&&o(m.name,m.idx)),V(),d=c+1}function H(){var t=m.idx+(m.isClosing?2:1);return e.slice(t,c).toLowerCase()}d=0&&n++},onText:function(e,r){if(0===n){var a=function(e,t){if(!t.global)throw new Error("`splitRegex` must have the 'g' flag set");for(var r,n=[],o=0;r=t.exec(e);)n.push(e.substring(o,r.index)),n.push(r[0]),o=r.index+r[0].length;return n.push(e.substring(o)),n}(e,/( | |<|<|>|>|"|"|')/gi),i=r;a.forEach((function(e,r){if(r%2==0){var n=t.parseText(e,i);o.push.apply(o,n)}i+=e.length}))}},onCloseTag:function(e){r.indexOf(e)>=0&&(n=Math.max(n-1,0))},onComment:function(e){},onDoctype:function(e){}}),o=this.compactMatches(o),o=this.removeUnwantedMatches(o)},e.prototype.compactMatches=function(e){e.sort((function(e,t){return e.getOffset()-t.getOffset()}));for(var t=0;to?t:t+1;e.splice(i,1);continue}e[t+1].getOffset()/g,">"));for(var t=this.parse(e),r=[],n=0,o=0,a=t.length;o/i.test(e)}function se(){var e=[],t=new oe({stripPrefix:!1,url:!0,email:!0,replaceFn:function(t){switch(t.getType()){case"url":e.push({text:t.matchedText,url:t.getUrl()});break;case"email":e.push({text:t.matchedText,url:"mailto:"+t.getEmail().replace(/^mailto:/i,"")})}return!1}});return{links:e,autolinker:t}}function le(e){var t,r,n,o,a,i,s,l,u,c,p,f,h,d,m=e.tokens,g=null;for(r=0,n=m.length;r=0;t--)if("link_close"!==(a=o[t]).type){if("htmltag"===a.type&&(d=a.content,/^\s]/i.test(d)&&p>0&&p--,ie(a.content)&&p++),!(p>0)&&"text"===a.type&&ae.test(a.content)){if(g||(f=(g=se()).links,h=g.autolinker),i=a.content,f.length=0,h.link(i),!f.length)continue;for(s=[],c=a.level,l=0;l({useUnsafeMarkdown:!1})};const me=de;function ge(e){let{useUnsafeMarkdown:t=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const r=t,n=t?[]:["style","class"];return t&&!ge.hasWarnedAboutDeprecation&&(console.warn("useUnsafeMarkdown display configuration parameter is deprecated since >3.26.0 and will be removed in v4.0.0."),ge.hasWarnedAboutDeprecation=!0),pe().sanitize(e,{ADD_ATTR:["target"],FORBID_TAGS:["style","form"],ALLOW_DATA_ATTR:r,FORBID_ATTR:n})}ge.hasWarnedAboutDeprecation=!1},45308:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>f});var n,o=r(86),a=r.n(o),i=r(8712),s=r.n(i),l=r(90242),u=r(27621);const c=r(95102),p={},f=p;a()(n=s()(c).call(c)).call(n,(function(e){if("./index.js"===e)return;let t=c(e);p[(0,l.Zl)(e)]=t.default?t.default:t})),p.SafeRender=u.default},55812:(e,t,r)=>{"use strict";r.r(t),r.d(t,{SHOW_AUTH_POPUP:()=>p,AUTHORIZE:()=>f,LOGOUT:()=>h,PRE_AUTHORIZE_OAUTH2:()=>d,AUTHORIZE_OAUTH2:()=>m,VALIDATE:()=>g,CONFIGURE_AUTH:()=>v,RESTORE_AUTHORIZATION:()=>y,showDefinitions:()=>b,authorize:()=>w,authorizeWithPersistOption:()=>E,logout:()=>x,logoutWithPersistOption:()=>_,preAuthorizeImplicit:()=>S,authorizeOauth2:()=>A,authorizeOauth2WithPersistOption:()=>k,authorizePassword:()=>C,authorizeApplication:()=>O,authorizeAccessCodeWithFormParams:()=>j,authorizeAccessCodeWithBasicAuthentication:()=>I,authorizeRequest:()=>N,configureAuth:()=>T,restoreAuthorization:()=>P,persistAuthorizationIfNeeded:()=>R,authPopup:()=>M});var n=r(35627),o=r.n(n),a=r(76986),i=r.n(a),s=r(84564),l=r.n(s),u=r(27504),c=r(90242);const p="show_popup",f="authorize",h="logout",d="pre_authorize_oauth2",m="authorize_oauth2",g="validate",v="configure_auth",y="restore_authorization";function b(e){return{type:p,payload:e}}function w(e){return{type:f,payload:e}}const E=e=>t=>{let{authActions:r}=t;r.authorize(e),r.persistAuthorizationIfNeeded()};function x(e){return{type:h,payload:e}}const _=e=>t=>{let{authActions:r}=t;r.logout(e),r.persistAuthorizationIfNeeded()},S=e=>t=>{let{authActions:r,errActions:n}=t,{auth:a,token:i,isValid:s}=e,{schema:l,name:c}=a,p=l.get("flow");delete u.Z.swaggerUIRedirectOauth2,"accessCode"===p||s||n.newAuthErr({authId:c,source:"auth",level:"warning",message:"Authorization may be unsafe, passed state was changed in server Passed state wasn't returned from auth server"}),i.error?n.newAuthErr({authId:c,source:"auth",level:"error",message:o()(i)}):r.authorizeOauth2WithPersistOption({auth:a,token:i})};function A(e){return{type:m,payload:e}}const k=e=>t=>{let{authActions:r}=t;r.authorizeOauth2(e),r.persistAuthorizationIfNeeded()},C=e=>t=>{let{authActions:r}=t,{schema:n,name:o,username:a,password:s,passwordType:l,clientId:u,clientSecret:p}=e,f={grant_type:"password",scope:e.scopes.join(" "),username:a,password:s},h={};switch(l){case"request-body":!function(e,t,r){t&&i()(e,{client_id:t});r&&i()(e,{client_secret:r})}(f,u,p);break;case"basic":h.Authorization="Basic "+(0,c.r3)(u+":"+p);break;default:console.warn(`Warning: invalid passwordType ${l} was passed, not including client id and secret`)}return r.authorizeRequest({body:(0,c.GZ)(f),url:n.get("tokenUrl"),name:o,headers:h,query:{},auth:e})};const O=e=>t=>{let{authActions:r}=t,{schema:n,scopes:o,name:a,clientId:i,clientSecret:s}=e,l={Authorization:"Basic "+(0,c.r3)(i+":"+s)},u={grant_type:"client_credentials",scope:o.join(" ")};return r.authorizeRequest({body:(0,c.GZ)(u),name:a,url:n.get("tokenUrl"),auth:e,headers:l})},j=e=>{let{auth:t,redirectUrl:r}=e;return e=>{let{authActions:n}=e,{schema:o,name:a,clientId:i,clientSecret:s,codeVerifier:l}=t,u={grant_type:"authorization_code",code:t.code,client_id:i,client_secret:s,redirect_uri:r,code_verifier:l};return n.authorizeRequest({body:(0,c.GZ)(u),name:a,url:o.get("tokenUrl"),auth:t})}},I=e=>{let{auth:t,redirectUrl:r}=e;return e=>{let{authActions:n}=e,{schema:o,name:a,clientId:i,clientSecret:s,codeVerifier:l}=t,u={Authorization:"Basic "+(0,c.r3)(i+":"+s)},p={grant_type:"authorization_code",code:t.code,client_id:i,redirect_uri:r,code_verifier:l};return n.authorizeRequest({body:(0,c.GZ)(p),name:a,url:o.get("tokenUrl"),auth:t,headers:u})}},N=e=>t=>{let r,{fn:n,getConfigs:a,authActions:s,errActions:u,oas3Selectors:c,specSelectors:p,authSelectors:f}=t,{body:h,query:d={},headers:m={},name:g,url:v,auth:y}=e,{additionalQueryStringParams:b}=f.getConfigs()||{};if(p.isOAS3()){let e=c.serverEffectiveValue(c.selectedServer());r=l()(v,e,!0)}else r=l()(v,p.url(),!0);"object"==typeof b&&(r.query=i()({},r.query,b));const w=r.toString();let E=i()({Accept:"application/json, text/plain, */*","Content-Type":"application/x-www-form-urlencoded","X-Requested-With":"XMLHttpRequest"},m);n.fetch({url:w,method:"post",headers:E,query:d,body:h,requestInterceptor:a().requestInterceptor,responseInterceptor:a().responseInterceptor}).then((function(e){let t=JSON.parse(e.data),r=t&&(t.error||""),n=t&&(t.parseError||"");e.ok?r||n?u.newAuthErr({authId:g,level:"error",source:"auth",message:o()(t)}):s.authorizeOauth2WithPersistOption({auth:y,token:t}):u.newAuthErr({authId:g,level:"error",source:"auth",message:e.statusText})})).catch((e=>{let t=new Error(e).message;if(e.response&&e.response.data){const r=e.response.data;try{const e="string"==typeof r?JSON.parse(r):r;e.error&&(t+=`, error: ${e.error}`),e.error_description&&(t+=`, description: ${e.error_description}`)}catch(e){}}u.newAuthErr({authId:g,level:"error",source:"auth",message:t})}))};function T(e){return{type:v,payload:e}}function P(e){return{type:y,payload:e}}const R=()=>e=>{let{authSelectors:t,getConfigs:r}=e;if(r().persistAuthorization){const e=t.authorized();localStorage.setItem("authorized",o()(e.toJS()))}},M=(e,t)=>()=>{u.Z.swaggerUIRedirectOauth2=t,u.Z.open(e)}},93705:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>u,preauthorizeBasic:()=>c,preauthorizeApiKey:()=>p});var n=r(11189),o=r.n(n),a=r(43962),i=r(55812),s=r(60035),l=r(48302);function u(){return{afterLoad(e){this.rootInjects=this.rootInjects||{},this.rootInjects.initOAuth=e.authActions.configureAuth,this.rootInjects.preauthorizeApiKey=o()(p).call(p,null,e),this.rootInjects.preauthorizeBasic=o()(c).call(c,null,e)},statePlugins:{auth:{reducers:a.default,actions:i,selectors:s},spec:{wrapActions:l}}}}function c(e,t,r,n){const{authActions:{authorize:o},specSelectors:{specJson:a,isOAS3:i}}=e,s=i()?["components","securitySchemes"]:["securityDefinitions"],l=a().getIn([...s,t]);return l?o({[t]:{value:{username:r,password:n},schema:l.toJS()}}):null}function p(e,t,r){const{authActions:{authorize:n},specSelectors:{specJson:o,isOAS3:a}}=e,i=a()?["components","securitySchemes"]:["securityDefinitions"],s=o().getIn([...i,t]);return s?n({[t]:{value:r,schema:s.toJS()}}):null}},43962:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>c});var n=r(86),o=r.n(n),a=r(76986),i=r.n(a),s=r(43393),l=r(90242),u=r(55812);const c={[u.SHOW_AUTH_POPUP]:(e,t)=>{let{payload:r}=t;return e.set("showDefinitions",r)},[u.AUTHORIZE]:(e,t)=>{var r;let{payload:n}=t,a=(0,s.fromJS)(n),i=e.get("authorized")||(0,s.Map)();return o()(r=a.entrySeq()).call(r,(t=>{let[r,n]=t;if(!(0,l.Wl)(n.getIn))return e.set("authorized",i);let o=n.getIn(["schema","type"]);if("apiKey"===o||"http"===o)i=i.set(r,n);else if("basic"===o){let e=n.getIn(["value","username"]),t=n.getIn(["value","password"]);i=i.setIn([r,"value"],{username:e,header:"Basic "+(0,l.r3)(e+":"+t)}),i=i.setIn([r,"schema"],n.get("schema"))}})),e.set("authorized",i)},[u.AUTHORIZE_OAUTH2]:(e,t)=>{let r,{payload:n}=t,{auth:o,token:a}=n;o.token=i()({},a),r=(0,s.fromJS)(o);let l=e.get("authorized")||(0,s.Map)();return l=l.set(r.get("name"),r),e.set("authorized",l)},[u.LOGOUT]:(e,t)=>{let{payload:r}=t,n=e.get("authorized").withMutations((e=>{o()(r).call(r,(t=>{e.delete(t)}))}));return e.set("authorized",n)},[u.CONFIGURE_AUTH]:(e,t)=>{let{payload:r}=t;return e.set("configs",r)},[u.RESTORE_AUTHORIZATION]:(e,t)=>{let{payload:r}=t;return e.set("authorized",(0,s.fromJS)(r.authorized))}}},60035:(e,t,r)=>{"use strict";r.r(t),r.d(t,{shownDefinitions:()=>y,definitionsToAuthorize:()=>b,getDefinitionsByNames:()=>w,definitionsForRequirements:()=>E,authorized:()=>x,isAuthorized:()=>_,getConfigs:()=>S});var n=r(86),o=r.n(n),a=r(14418),i=r.n(a),s=r(92039),l=r.n(s),u=r(11882),c=r.n(u),p=r(97606),f=r.n(p),h=r(28222),d=r.n(h),m=r(20573),g=r(43393);const v=e=>e,y=(0,m.P1)(v,(e=>e.get("showDefinitions"))),b=(0,m.P1)(v,(()=>e=>{var t;let{specSelectors:r}=e,n=r.securityDefinitions()||(0,g.Map)({}),a=(0,g.List)();return o()(t=n.entrySeq()).call(t,(e=>{let[t,r]=e,n=(0,g.Map)();n=n.set(t,r),a=a.push(n)})),a})),w=(e,t)=>e=>{var r;let{specSelectors:n}=e;console.warn("WARNING: getDefinitionsByNames is deprecated and will be removed in the next major version.");let a=n.securityDefinitions(),i=(0,g.List)();return o()(r=t.valueSeq()).call(r,(e=>{var t;let r=(0,g.Map)();o()(t=e.entrySeq()).call(t,(e=>{let t,[n,i]=e,s=a.get(n);var l;"oauth2"===s.get("type")&&i.size&&(t=s.get("scopes"),o()(l=t.keySeq()).call(l,(e=>{i.contains(e)||(t=t.delete(e))})),s=s.set("allowedScopes",t));r=r.set(n,s)})),i=i.push(r)})),i},E=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:(0,g.List)();return e=>{let{authSelectors:r}=e;const n=r.definitionsToAuthorize()||(0,g.List)();return i()(n).call(n,(e=>l()(t).call(t,(t=>t.get(e.keySeq().first())))))}},x=(0,m.P1)(v,(e=>e.get("authorized")||(0,g.Map)())),_=(e,t)=>e=>{var r;let{authSelectors:n}=e,o=n.authorized();return g.List.isList(t)?!!i()(r=t.toJS()).call(r,(e=>{var t,r;return-1===c()(t=f()(r=d()(e)).call(r,(e=>!!o.get(e)))).call(t,!1)})).length:null},S=(0,m.P1)(v,(e=>e.get("configs")))},48302:(e,t,r)=>{"use strict";r.r(t),r.d(t,{execute:()=>n});const n=(e,t)=>{let{authSelectors:r,specSelectors:n}=t;return t=>{let{path:o,method:a,operation:i,extras:s}=t,l={authorized:r.authorized()&&r.authorized().toJS(),definitions:n.securityDefinitions()&&n.securityDefinitions().toJS(),specSecurity:n.security()&&n.security().toJS()};return e({path:o,method:a,operation:i,securities:l,...s})}}},70714:(e,t,r)=>{"use strict";r.r(t),r.d(t,{UPDATE_CONFIGS:()=>n,TOGGLE_CONFIGS:()=>o,update:()=>a,toggle:()=>i,loaded:()=>s});const n="configs_update",o="configs_toggle";function a(e,t){return{type:n,payload:{[e]:t}}}function i(e){return{type:o,payload:e}}const s=()=>e=>{let{getConfigs:t,authActions:r}=e;if(t().persistAuthorization){const e=localStorage.getItem("authorized");e&&r.restoreAuthorization({authorized:JSON.parse(e)})}}},92256:(e,t,r)=>{"use strict";r.r(t),r.d(t,{parseYamlConfig:()=>o});var n=r(1272);const o=(e,t)=>{try{return n.ZP.load(e)}catch(e){return t&&t.errActions.newThrownErr(new Error(e)),{}}}},1661:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>c});var n=r(15163),o=r(92256),a=r(70714),i=r(22698),s=r(69018),l=r(37743);const u={getLocalConfig:()=>(0,o.parseYamlConfig)(n)};function c(){return{statePlugins:{spec:{actions:i,selectors:u},configs:{reducers:l.default,actions:a,selectors:s}}}}},37743:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>a});var n=r(43393),o=r(70714);const a={[o.UPDATE_CONFIGS]:(e,t)=>e.merge((0,n.fromJS)(t.payload)),[o.TOGGLE_CONFIGS]:(e,t)=>{const r=t.payload,n=e.get(r);return e.set(r,!n)}}},69018:(e,t,r)=>{"use strict";r.r(t),r.d(t,{get:()=>a});var n=r(58309),o=r.n(n);const a=(e,t)=>e.getIn(o()(t)?t:[t])},22698:(e,t,r)=>{"use strict";r.r(t),r.d(t,{downloadConfig:()=>o,getConfigByUrl:()=>a});var n=r(92256);const o=e=>t=>{const{fn:{fetch:r}}=t;return r(e)},a=(e,t)=>r=>{let{specActions:o}=r;if(e)return o.downloadConfig(e).then(a,a);function a(r){r instanceof Error||r.status>=400?(o.updateLoadingStatus("failedConfig"),o.updateLoadingStatus("failedConfig"),o.updateUrl(""),console.error(r.statusText+" "+e.url),t(null)):t((0,n.parseYamlConfig)(r.text))}}},31970:(e,t,r)=>{"use strict";r.r(t),r.d(t,{setHash:()=>n});const n=e=>e?history.pushState(null,null,`#${e}`):window.location.hash=""},34980:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>i});var n=r(41599),o=r(60877),a=r(34584);function i(){return[n.default,{statePlugins:{configs:{wrapActions:{loaded:(e,t)=>function(){e(...arguments);const r=decodeURIComponent(window.location.hash);t.layoutActions.parseDeepLinkHash(r)}}}},wrapComponents:{operation:o.default,OperationTag:a.default}}]}},41599:(e,t,r)=>{"use strict";r.r(t),r.d(t,{show:()=>b,scrollTo:()=>w,parseDeepLinkHash:()=>E,readyToScroll:()=>x,scrollToElement:()=>_,clearScrollTo:()=>S,default:()=>A});var n=r(58309),o=r.n(n),a=r(24278),i=r.n(a),s=r(97606),l=r.n(s),u=r(11882),c=r.n(u),p=r(31970),f=r(45172),h=r.n(f),d=r(90242),m=r(43393),g=r.n(m);const v="layout_scroll_to",y="layout_clear_scroll",b=(e,t)=>{let{getConfigs:r,layoutSelectors:n}=t;return function(){for(var t=arguments.length,a=new Array(t),i=0;i({type:v,payload:o()(e)?e:[e]}),E=e=>t=>{let{layoutActions:r,layoutSelectors:n,getConfigs:o}=t;if(o().deepLinking&&e){var a;let t=i()(e).call(e,1);"!"===t[0]&&(t=i()(t).call(t,1)),"/"===t[0]&&(t=i()(t).call(t,1));const o=l()(a=t.split("/")).call(a,(e=>e||"")),s=n.isShownKeyFromUrlHashArray(o),[u,p="",f=""]=s;if("operations"===u){const e=n.isShownKeyFromUrlHashArray([p]);c()(p).call(p,"_")>-1&&(console.warn("Warning: escaping deep link whitespace with `_` will be unsupported in v4.0, use `%20` instead."),r.show(l()(e).call(e,(e=>e.replace(/_/g," "))),!0)),r.show(e,!0)}(c()(p).call(p,"_")>-1||c()(f).call(f,"_")>-1)&&(console.warn("Warning: escaping deep link whitespace with `_` will be unsupported in v4.0, use `%20` instead."),r.show(l()(s).call(s,(e=>e.replace(/_/g," "))),!0)),r.show(s,!0),r.scrollTo(s)}},x=(e,t)=>r=>{const n=r.layoutSelectors.getScrollToKey();g().is(n,(0,m.fromJS)(e))&&(r.layoutActions.scrollToElement(t),r.layoutActions.clearScrollTo())},_=(e,t)=>r=>{try{t=t||r.fn.getScrollParent(e),h().createScroller(t).to(e)}catch(e){console.error(e)}},S=()=>({type:y});const A={fn:{getScrollParent:function(e,t){const r=document.documentElement;let n=getComputedStyle(e);const o="absolute"===n.position,a=t?/(auto|scroll|hidden)/:/(auto|scroll)/;if("fixed"===n.position)return r;for(let t=e;t=t.parentElement;)if(n=getComputedStyle(t),(!o||"static"!==n.position)&&a.test(n.overflow+n.overflowY+n.overflowX))return t;return r}},statePlugins:{layout:{actions:{scrollToElement:_,scrollTo:w,clearScrollTo:S,readyToScroll:x,parseDeepLinkHash:E},selectors:{getScrollToKey:e=>e.get("scrollToKey"),isShownKeyFromUrlHashArray(e,t){const[r,n]=t;return n?["operations",r,n]:r?["operations-tag",r]:[]},urlHashArrayFromIsShownKey(e,t){let[r,n,o]=t;return"operations"==r?[n,o]:"operations-tag"==r?[n]:[]}},reducers:{[v]:(e,t)=>e.set("scrollToKey",g().fromJS(t.payload)),[y]:e=>e.delete("scrollToKey")},wrapActions:{show:b}}}}},34584:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>i});var n=r(61125),o=r.n(n),a=r(67294);const i=(e,t)=>class extends a.Component{constructor(){super(...arguments),o()(this,"onLoad",(e=>{const{tag:r}=this.props,n=["operations-tag",r];t.layoutActions.readyToScroll(n,e)}))}render(){return a.createElement("span",{ref:this.onLoad},a.createElement(e,this.props))}}},60877:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>i});var n=r(61125),o=r.n(n),a=r(67294);r(23930);const i=(e,t)=>class extends a.Component{constructor(){super(...arguments),o()(this,"onLoad",(e=>{const{operation:r}=this.props,{tag:n,operationId:o}=r.toObject();let{isShownKey:a}=r.toObject();a=a||["operations",n,o],t.layoutActions.readyToScroll(a,e)}))}render(){return a.createElement("span",{ref:this.onLoad},a.createElement(e,this.props))}}},48011:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>d});var n=r(76986),o=r.n(n),a=r(63460),i=r.n(a),s=r(11882),l=r.n(s),u=r(35627),c=r.n(u),p=r(20573),f=r(43393),h=r(27504);function d(e){let{fn:t}=e;return{statePlugins:{spec:{actions:{download:e=>r=>{let{errActions:n,specSelectors:a,specActions:s,getConfigs:l}=r,{fetch:u}=t;const c=l();function p(t){if(t instanceof Error||t.status>=400)return s.updateLoadingStatus("failed"),n.newThrownErr(o()(new Error((t.message||t.statusText)+" "+e),{source:"fetch"})),void(!t.status&&t instanceof Error&&function(){try{let t;if("URL"in h.Z?t=new(i())(e):(t=document.createElement("a"),t.href=e),"https:"!==t.protocol&&"https:"===h.Z.location.protocol){const e=o()(new Error(`Possible mixed-content issue? The page was loaded over https:// but a ${t.protocol}// URL was specified. Check that you are not attempting to load mixed content.`),{source:"fetch"});return void n.newThrownErr(e)}if(t.origin!==h.Z.location.origin){const e=o()(new Error(`Possible cross-origin (CORS) issue? The URL origin (${t.origin}) does not match the page (${h.Z.location.origin}). Check the server returns the correct 'Access-Control-Allow-*' headers.`),{source:"fetch"});n.newThrownErr(e)}}catch(e){return}}());s.updateLoadingStatus("success"),s.updateSpec(t.text),a.url()!==e&&s.updateUrl(e)}e=e||a.url(),s.updateLoadingStatus("loading"),n.clear({source:"fetch"}),u({url:e,loadSpec:!0,requestInterceptor:c.requestInterceptor||(e=>e),responseInterceptor:c.responseInterceptor||(e=>e),credentials:"same-origin",headers:{Accept:"application/json,*/*"}}).then(p,p)},updateLoadingStatus:e=>{let t=[null,"loading","failed","success","failedConfig"];return-1===l()(t).call(t,e)&&console.error(`Error: ${e} is not one of ${c()(t)}`),{type:"spec_update_loading_status",payload:e}}},reducers:{spec_update_loading_status:(e,t)=>"string"==typeof t.payload?e.set("loadingStatus",t.payload):e},selectors:{loadingStatus:(0,p.P1)((e=>e||(0,f.Map)()),(e=>e.get("loadingStatus")||null))}}}}}},34966:(e,t,r)=>{"use strict";r.r(t),r.d(t,{NEW_THROWN_ERR:()=>o,NEW_THROWN_ERR_BATCH:()=>a,NEW_SPEC_ERR:()=>i,NEW_SPEC_ERR_BATCH:()=>s,NEW_AUTH_ERR:()=>l,CLEAR:()=>u,CLEAR_BY:()=>c,newThrownErr:()=>p,newThrownErrBatch:()=>f,newSpecErr:()=>h,newSpecErrBatch:()=>d,newAuthErr:()=>m,clear:()=>g,clearBy:()=>v});var n=r(7710);const o="err_new_thrown_err",a="err_new_thrown_err_batch",i="err_new_spec_err",s="err_new_spec_err_batch",l="err_new_auth_err",u="err_clear",c="err_clear_by";function p(e){return{type:o,payload:(0,n.serializeError)(e)}}function f(e){return{type:a,payload:e}}function h(e){return{type:i,payload:e}}function d(e){return{type:s,payload:e}}function m(e){return{type:l,payload:e}}function g(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{type:u,payload:e}}function v(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:()=>!0;return{type:c,payload:e}}},56982:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>c});var n=r(14418),o=r.n(n),a=r(97606),i=r.n(a),s=r(54061),l=r.n(s);const u=[r(2392),r(21835)];function c(e){var t;let r={jsSpec:{}},n=l()(u,((e,t)=>{try{let n=t.transform(e,r);return o()(n).call(n,(e=>!!e))}catch(t){return console.error("Transformer error:",t),e}}),e);return i()(t=o()(n).call(n,(e=>!!e))).call(t,(e=>(!e.get("line")&&e.get("path"),e)))}},2392:(e,t,r)=>{"use strict";r.r(t),r.d(t,{transform:()=>p});var n=r(97606),o=r.n(n),a=r(11882),i=r.n(a),s=r(24278),l=r.n(s),u=r(24282),c=r.n(u);function p(e){return o()(e).call(e,(e=>{var t;let r="is not of a type(s)",n=i()(t=e.get("message")).call(t,r);if(n>-1){var o,a;let t=l()(o=e.get("message")).call(o,n+r.length).split(",");return e.set("message",l()(a=e.get("message")).call(a,0,n)+function(e){return c()(e).call(e,((e,t,r,n)=>r===n.length-1&&n.length>1?e+"or "+t:n[r+1]&&n.length>2?e+t+", ":n[r+1]?e+t+" ":e+t),"should be a")}(t))}return e}))}},21835:(e,t,r)=>{"use strict";r.r(t),r.d(t,{transform:()=>n});r(97606),r(11882),r(27361),r(43393);function n(e,t){let{jsSpec:r}=t;return e}},77793:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>i});var n=r(93527),o=r(34966),a=r(87667);function i(e){return{statePlugins:{err:{reducers:(0,n.default)(e),actions:o,selectors:a}}}}},93527:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>v});var n=r(76986),o=r.n(n),a=r(97606),i=r.n(a),s=r(39022),l=r.n(s),u=r(14418),c=r.n(u),p=r(2250),f=r.n(p),h=r(34966),d=r(43393),m=r(56982);let g={line:0,level:"error",message:"Unknown error"};function v(){return{[h.NEW_THROWN_ERR]:(e,t)=>{let{payload:r}=t,n=o()(g,r,{type:"thrown"});return e.update("errors",(e=>(e||(0,d.List)()).push((0,d.fromJS)(n)))).update("errors",(e=>(0,m.default)(e)))},[h.NEW_THROWN_ERR_BATCH]:(e,t)=>{let{payload:r}=t;return r=i()(r).call(r,(e=>(0,d.fromJS)(o()(g,e,{type:"thrown"})))),e.update("errors",(e=>{var t;return l()(t=e||(0,d.List)()).call(t,(0,d.fromJS)(r))})).update("errors",(e=>(0,m.default)(e)))},[h.NEW_SPEC_ERR]:(e,t)=>{let{payload:r}=t,n=(0,d.fromJS)(r);return n=n.set("type","spec"),e.update("errors",(e=>(e||(0,d.List)()).push((0,d.fromJS)(n)).sortBy((e=>e.get("line"))))).update("errors",(e=>(0,m.default)(e)))},[h.NEW_SPEC_ERR_BATCH]:(e,t)=>{let{payload:r}=t;return r=i()(r).call(r,(e=>(0,d.fromJS)(o()(g,e,{type:"spec"})))),e.update("errors",(e=>{var t;return l()(t=e||(0,d.List)()).call(t,(0,d.fromJS)(r))})).update("errors",(e=>(0,m.default)(e)))},[h.NEW_AUTH_ERR]:(e,t)=>{let{payload:r}=t,n=(0,d.fromJS)(o()({},r));return n=n.set("type","auth"),e.update("errors",(e=>(e||(0,d.List)()).push((0,d.fromJS)(n)))).update("errors",(e=>(0,m.default)(e)))},[h.CLEAR]:(e,t)=>{var r;let{payload:n}=t;if(!n||!e.get("errors"))return e;let o=c()(r=e.get("errors")).call(r,(e=>{var t;return f()(t=e.keySeq()).call(t,(t=>{const r=e.get(t),o=n[t];return!o||r!==o}))}));return e.merge({errors:o})},[h.CLEAR_BY]:(e,t)=>{var r;let{payload:n}=t;if(!n||"function"!=typeof n)return e;let o=c()(r=e.get("errors")).call(r,(e=>n(e)));return e.merge({errors:o})}}}},87667:(e,t,r)=>{"use strict";r.r(t),r.d(t,{allErrors:()=>a,lastError:()=>i});var n=r(43393),o=r(20573);const a=(0,o.P1)((e=>e),(e=>e.get("errors",(0,n.List)()))),i=(0,o.P1)(a,(e=>e.last()))},49978:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>o});var n=r(4309);function o(){return{fn:{opsFilter:n.default}}}},4309:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>s});var n=r(14418),o=r.n(n),a=r(11882),i=r.n(a);function s(e,t){return o()(e).call(e,((e,r)=>-1!==i()(r).call(r,t)))}},25474:(e,t,r)=>{"use strict";r.r(t),r.d(t,{UPDATE_LAYOUT:()=>o,UPDATE_FILTER:()=>a,UPDATE_MODE:()=>i,SHOW:()=>s,updateLayout:()=>l,updateFilter:()=>u,show:()=>c,changeMode:()=>p});var n=r(90242);const o="layout_update_layout",a="layout_update_filter",i="layout_update_mode",s="layout_show";function l(e){return{type:o,payload:e}}function u(e){return{type:a,payload:e}}function c(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return e=(0,n.AF)(e),{type:s,payload:{thing:e,shown:t}}}function p(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return e=(0,n.AF)(e),{type:i,payload:{thing:e,mode:t}}}},26821:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>s});var n=r(5672),o=r(25474),a=r(4400),i=r(28989);function s(){return{statePlugins:{layout:{reducers:n.default,actions:o,selectors:a},spec:{wrapSelectors:i}}}}},5672:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>s});var n=r(39022),o=r.n(n),a=r(43393),i=r(25474);const s={[i.UPDATE_LAYOUT]:(e,t)=>e.set("layout",t.payload),[i.UPDATE_FILTER]:(e,t)=>e.set("filter",t.payload),[i.SHOW]:(e,t)=>{const r=t.payload.shown,n=(0,a.fromJS)(t.payload.thing);return e.update("shown",(0,a.fromJS)({}),(e=>e.set(n,r)))},[i.UPDATE_MODE]:(e,t)=>{var r;let n=t.payload.thing,a=t.payload.mode;return e.setIn(o()(r=["modes"]).call(r,n),(a||"")+"")}}},4400:(e,t,r)=>{"use strict";r.r(t),r.d(t,{current:()=>i,currentFilter:()=>s,isShown:()=>l,whatMode:()=>u,showSummary:()=>c});var n=r(20573),o=r(90242),a=r(43393);const i=e=>e.get("layout"),s=e=>e.get("filter"),l=(e,t,r)=>(t=(0,o.AF)(t),e.get("shown",(0,a.fromJS)({})).get((0,a.fromJS)(t),r)),u=function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";return t=(0,o.AF)(t),e.getIn(["modes",...t],r)},c=(0,n.P1)((e=>e),(e=>!l(e,"editor")))},28989:(e,t,r)=>{"use strict";r.r(t),r.d(t,{taggedOperations:()=>a});var n=r(24278),o=r.n(n);const a=(e,t)=>function(r){for(var n=arguments.length,a=new Array(n>1?n-1:0),i=1;i=0&&(s=o()(s).call(s,0,f)),s}},9150:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>a});var n=r(11189),o=r.n(n);function a(e){let{configs:t}=e;const r={debug:0,info:1,log:2,warn:3,error:4},n=e=>r[e]||-1;let{logLevel:a}=t,i=n(a);function s(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),o=1;o=i&&console[e](...r)}return s.warn=o()(s).call(s,null,"warn"),s.error=o()(s).call(s,null,"error"),s.info=o()(s).call(s,null,"info"),s.debug=o()(s).call(s,null,"debug"),{rootInjects:{log:s}}}},67002:(e,t,r)=>{"use strict";r.r(t),r.d(t,{UPDATE_SELECTED_SERVER:()=>n,UPDATE_REQUEST_BODY_VALUE:()=>o,UPDATE_REQUEST_BODY_VALUE_RETAIN_FLAG:()=>a,UPDATE_REQUEST_BODY_INCLUSION:()=>i,UPDATE_ACTIVE_EXAMPLES_MEMBER:()=>s,UPDATE_REQUEST_CONTENT_TYPE:()=>l,UPDATE_RESPONSE_CONTENT_TYPE:()=>u,UPDATE_SERVER_VARIABLE_VALUE:()=>c,SET_REQUEST_BODY_VALIDATE_ERROR:()=>p,CLEAR_REQUEST_BODY_VALIDATE_ERROR:()=>f,CLEAR_REQUEST_BODY_VALUE:()=>h,setSelectedServer:()=>d,setRequestBodyValue:()=>m,setRetainRequestBodyValueFlag:()=>g,setRequestBodyInclusion:()=>v,setActiveExamplesMember:()=>y,setRequestContentType:()=>b,setResponseContentType:()=>w,setServerVariableValue:()=>E,setRequestBodyValidateError:()=>x,clearRequestBodyValidateError:()=>_,initRequestBodyValidateError:()=>S,clearRequestBodyValue:()=>A});const n="oas3_set_servers",o="oas3_set_request_body_value",a="oas3_set_request_body_retain_flag",i="oas3_set_request_body_inclusion",s="oas3_set_active_examples_member",l="oas3_set_request_content_type",u="oas3_set_response_content_type",c="oas3_set_server_variable_value",p="oas3_set_request_body_validate_error",f="oas3_clear_request_body_validate_error",h="oas3_clear_request_body_value";function d(e,t){return{type:n,payload:{selectedServerUrl:e,namespace:t}}}function m(e){let{value:t,pathMethod:r}=e;return{type:o,payload:{value:t,pathMethod:r}}}const g=e=>{let{value:t,pathMethod:r}=e;return{type:a,payload:{value:t,pathMethod:r}}};function v(e){let{value:t,pathMethod:r,name:n}=e;return{type:i,payload:{value:t,pathMethod:r,name:n}}}function y(e){let{name:t,pathMethod:r,contextType:n,contextName:o}=e;return{type:s,payload:{name:t,pathMethod:r,contextType:n,contextName:o}}}function b(e){let{value:t,pathMethod:r}=e;return{type:l,payload:{value:t,pathMethod:r}}}function w(e){let{value:t,path:r,method:n}=e;return{type:u,payload:{value:t,path:r,method:n}}}function E(e){let{server:t,namespace:r,key:n,val:o}=e;return{type:c,payload:{server:t,namespace:r,key:n,val:o}}}const x=e=>{let{path:t,method:r,validationErrors:n}=e;return{type:p,payload:{path:t,method:r,validationErrors:n}}},_=e=>{let{path:t,method:r}=e;return{type:f,payload:{path:t,method:r}}},S=e=>{let{pathMethod:t}=e;return{type:f,payload:{path:t[0],method:t[1]}}},A=e=>{let{pathMethod:t}=e;return{type:h,payload:{pathMethod:t}}}},73723:(e,t,r)=>{"use strict";r.r(t),r.d(t,{definitionsToAuthorize:()=>f});var n=r(86),o=r.n(n),a=r(14418),i=r.n(a),s=r(24282),l=r.n(s),u=r(20573),c=r(43393),p=r(7779);const f=(h=(0,u.P1)((e=>e),(e=>{let{specSelectors:t}=e;return t.securityDefinitions()}),((e,t)=>{var r;let n=(0,c.List)();return t?(o()(r=t.entrySeq()).call(r,(e=>{let[t,r]=e;const a=r.get("type");var s;if("oauth2"===a&&o()(s=r.get("flows").entrySeq()).call(s,(e=>{let[o,a]=e,s=(0,c.fromJS)({flow:o,authorizationUrl:a.get("authorizationUrl"),tokenUrl:a.get("tokenUrl"),scopes:a.get("scopes"),type:r.get("type"),description:r.get("description")});n=n.push(new c.Map({[t]:i()(s).call(s,(e=>void 0!==e))}))})),"http"!==a&&"apiKey"!==a||(n=n.push(new c.Map({[t]:r}))),"openIdConnect"===a&&r.get("openIdConnectData")){let e=r.get("openIdConnectData"),a=e.get("grant_types_supported")||["authorization_code","implicit"];o()(a).call(a,(o=>{var a;let s=e.get("scopes_supported")&&l()(a=e.get("scopes_supported")).call(a,((e,t)=>e.set(t,"")),new c.Map),u=(0,c.fromJS)({flow:o,authorizationUrl:e.get("authorization_endpoint"),tokenUrl:e.get("token_endpoint"),scopes:s,type:"oauth2",openIdConnectUrl:r.get("openIdConnectUrl")});n=n.push(new c.Map({[t]:i()(u).call(u,(e=>void 0!==e))}))}))}})),n):n})),(e,t)=>function(){const r=t.getSystem().specSelectors.specJson();for(var n=arguments.length,o=new Array(n),a=0;a{"use strict";r.r(t),r.d(t,{default:()=>u});var n=r(23101),o=r.n(n),a=r(97606),i=r.n(a),s=r(67294),l=(r(23930),r(43393));const u=e=>{var t;let{callbacks:r,getComponent:n,specPath:a}=e;const u=n("OperationContainer",!0);if(!r)return s.createElement("span",null,"No callbacks");let c=i()(t=r.entrySeq()).call(t,(t=>{var r;let[n,c]=t;return s.createElement("div",{key:n},s.createElement("h2",null,n),i()(r=c.entrySeq()).call(r,(t=>{var r;let[c,p]=t;return"$$ref"===c?null:s.createElement("div",{key:c},i()(r=p.entrySeq()).call(r,(t=>{let[r,i]=t;if("$$ref"===r)return null;let p=(0,l.fromJS)({operation:i});return s.createElement(u,o()({},e,{op:p,key:r,tag:"",method:r,path:c,specPath:a.push(n,c,r),allowTryItOut:!1}))})))})))}));return s.createElement("div",null,c)}},86775:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>f});var n=r(61125),o=r.n(n),a=r(76986),i=r.n(a),s=r(14418),l=r.n(s),u=r(97606),c=r.n(u),p=r(67294);class f extends p.Component{constructor(e,t){super(e,t),o()(this,"onChange",(e=>{let{onChange:t}=this.props,{value:r,name:n}=e.target,o=i()({},this.state.value);n?o[n]=r:o=r,this.setState({value:o},(()=>t(this.state)))}));let{name:r,schema:n}=this.props,a=this.getValue();this.state={name:r,schema:n,value:a}}getValue(){let{name:e,authorized:t}=this.props;return t&&t.getIn([e,"value"])}render(){var e;let{schema:t,getComponent:r,errSelectors:n,name:o}=this.props;const a=r("Input"),i=r("Row"),s=r("Col"),u=r("authError"),f=r("Markdown",!0),h=r("JumpToPath",!0),d=(t.get("scheme")||"").toLowerCase();let m=this.getValue(),g=l()(e=n.allErrors()).call(e,(e=>e.get("authId")===o));if("basic"===d){var v;let e=m?m.get("username"):null;return p.createElement("div",null,p.createElement("h4",null,p.createElement("code",null,o||t.get("name")),"  (http, Basic)",p.createElement(h,{path:["securityDefinitions",o]})),e&&p.createElement("h6",null,"Authorized"),p.createElement(i,null,p.createElement(f,{source:t.get("description")})),p.createElement(i,null,p.createElement("label",null,"Username:"),e?p.createElement("code",null," ",e," "):p.createElement(s,null,p.createElement(a,{type:"text",required:"required",name:"username","aria-label":"auth-basic-username",onChange:this.onChange,autoFocus:!0}))),p.createElement(i,null,p.createElement("label",null,"Password:"),e?p.createElement("code",null," ****** "):p.createElement(s,null,p.createElement(a,{autoComplete:"new-password",name:"password",type:"password","aria-label":"auth-basic-password",onChange:this.onChange}))),c()(v=g.valueSeq()).call(v,((e,t)=>p.createElement(u,{error:e,key:t}))))}var y;return"bearer"===d?p.createElement("div",null,p.createElement("h4",null,p.createElement("code",null,o||t.get("name")),"  (http, Bearer)",p.createElement(h,{path:["securityDefinitions",o]})),m&&p.createElement("h6",null,"Authorized"),p.createElement(i,null,p.createElement(f,{source:t.get("description")})),p.createElement(i,null,p.createElement("label",null,"Value:"),m?p.createElement("code",null," ****** "):p.createElement(s,null,p.createElement(a,{type:"text","aria-label":"auth-bearer-value",onChange:this.onChange,autoFocus:!0}))),c()(y=g.valueSeq()).call(y,((e,t)=>p.createElement(u,{error:e,key:t})))):p.createElement("div",null,p.createElement("em",null,p.createElement("b",null,o)," HTTP authentication: unsupported scheme ",`'${d}'`))}}},76467:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>p});var n=r(33427),o=r(42458),a=r(15757),i=r(56617),s=r(9928),l=r(45327),u=r(86775),c=r(96796);const p={Callbacks:n.default,HttpAuth:u.default,RequestBody:o.default,Servers:i.default,ServersContainer:s.default,RequestBodyEditor:l.default,OperationServers:c.default,operationLink:a.default}},15757:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>u});var n=r(35627),o=r.n(n),a=r(97606),i=r.n(a),s=r(67294);r(23930);class l extends s.Component{render(){const{link:e,name:t,getComponent:r}=this.props,n=r("Markdown",!0);let a=e.get("operationId")||e.get("operationRef"),l=e.get("parameters")&&e.get("parameters").toJS(),u=e.get("description");return s.createElement("div",{className:"operation-link"},s.createElement("div",{className:"description"},s.createElement("b",null,s.createElement("code",null,t)),u?s.createElement(n,{source:u}):null),s.createElement("pre",null,"Operation `",a,"`",s.createElement("br",null),s.createElement("br",null),"Parameters ",function(e,t){var r;if("string"!=typeof t)return"";return i()(r=t.split("\n")).call(r,((t,r)=>r>0?Array(e+1).join(" ")+t:t)).join("\n")}(0,o()(l,null,2))||"{}",s.createElement("br",null)))}}const u=l},96796:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>i});var n=r(61125),o=r.n(n),a=r(67294);r(23930);class i extends a.Component{constructor(){super(...arguments),o()(this,"setSelectedServer",(e=>{const{path:t,method:r}=this.props;return this.forceUpdate(),this.props.setSelectedServer(e,`${t}:${r}`)})),o()(this,"setServerVariableValue",(e=>{const{path:t,method:r}=this.props;return this.forceUpdate(),this.props.setServerVariableValue({...e,namespace:`${t}:${r}`})})),o()(this,"getSelectedServer",(()=>{const{path:e,method:t}=this.props;return this.props.getSelectedServer(`${e}:${t}`)})),o()(this,"getServerVariable",((e,t)=>{const{path:r,method:n}=this.props;return this.props.getServerVariable({namespace:`${r}:${n}`,server:e},t)})),o()(this,"getEffectiveServerValue",(e=>{const{path:t,method:r}=this.props;return this.props.getEffectiveServerValue({server:e,namespace:`${t}:${r}`})}))}render(){const{operationServers:e,pathServers:t,getComponent:r}=this.props;if(!e&&!t)return null;const n=r("Servers"),o=e||t,i=e?"operation":"path";return a.createElement("div",{className:"opblock-section operation-servers"},a.createElement("div",{className:"opblock-section-header"},a.createElement("div",{className:"tab-header"},a.createElement("h4",{className:"opblock-title"},"Servers"))),a.createElement("div",{className:"opblock-description-wrapper"},a.createElement("h4",{className:"message"},"These ",i,"-level options override the global server options."),a.createElement(n,{servers:o,currentServer:this.getSelectedServer(),setSelectedServer:this.setSelectedServer,setServerVariableValue:this.setServerVariableValue,getServerVariable:this.getServerVariable,getEffectiveServerValue:this.getEffectiveServerValue})))}}},45327:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>c});var n=r(61125),o=r.n(n),a=r(67294),i=r(94184),s=r.n(i),l=r(90242);const u=Function.prototype;class c extends a.PureComponent{constructor(e,t){super(e,t),o()(this,"applyDefaultValue",(e=>{const{onChange:t,defaultValue:r}=e||this.props;return this.setState({value:r}),t(r)})),o()(this,"onChange",(e=>{this.props.onChange((0,l.Pz)(e))})),o()(this,"onDomChange",(e=>{const t=e.target.value;this.setState({value:t},(()=>this.onChange(t)))})),this.state={value:(0,l.Pz)(e.value)||e.defaultValue},e.onChange(e.value)}UNSAFE_componentWillReceiveProps(e){this.props.value!==e.value&&e.value!==this.state.value&&this.setState({value:(0,l.Pz)(e.value)}),!e.value&&e.defaultValue&&this.state.value&&this.applyDefaultValue(e)}render(){let{getComponent:e,errors:t}=this.props,{value:r}=this.state,n=t.size>0;const o=e("TextArea");return a.createElement("div",{className:"body-param"},a.createElement(o,{className:s()("body-param__text",{invalid:n}),title:t.size?t.join(", "):"",value:r,onChange:this.onDomChange}))}}o()(c,"defaultProps",{onChange:u,userHasEditedBody:!1})},42458:(e,t,r)=>{"use strict";r.r(t),r.d(t,{getDefaultRequestBodyValue:()=>m,default:()=>g});var n=r(97606),o=r.n(n),a=r(11882),i=r.n(a),s=r(58118),l=r.n(s),u=r(58309),c=r.n(u),p=r(67294),f=(r(23930),r(43393)),h=r(90242),d=r(2518);const m=(e,t,r)=>{const n=e.getIn(["content",t]),o=n.get("schema").toJS(),a=void 0!==n.get("examples"),i=n.get("example"),s=a?n.getIn(["examples",r,"value"]):i,l=(0,h.xi)(o,t,{includeWriteOnly:!0},s);return(0,h.Pz)(l)},g=e=>{let{userHasEditedBody:t,requestBody:r,requestBodyValue:n,requestBodyInclusionSetting:a,requestBodyErrors:s,getComponent:u,getConfigs:g,specSelectors:v,fn:y,contentType:b,isExecute:w,specPath:E,onChange:x,onChangeIncludeEmpty:_,activeExamplesKey:S,updateActiveExamplesKey:A,setRetainRequestBodyValueFlag:k}=e;const C=e=>{x(e.target.files[0])},O=e=>{let t={key:e,shouldDispatchInit:!1,defaultValue:!0};return"no value"===a.get(e,"no value")&&(t.shouldDispatchInit=!0),t},j=u("Markdown",!0),I=u("modelExample"),N=u("RequestBodyEditor"),T=u("highlightCode"),P=u("ExamplesSelectValueRetainer"),R=u("Example"),M=u("ParameterIncludeEmpty"),{showCommonExtensions:D}=g(),L=r&&r.get("description")||null,B=r&&r.get("content")||new f.OrderedMap;b=b||B.keySeq().first()||"";const F=B.get(b,(0,f.OrderedMap)()),z=F.get("schema",(0,f.OrderedMap)()),U=F.get("examples",null),q=null==U?void 0:o()(U).call(U,((e,t)=>{var n;const o=null===(n=e)||void 0===n?void 0:n.get("value",null);return o&&(e=e.set("value",m(r,b,t),o)),e}));if(s=f.List.isList(s)?s:(0,f.List)(),!F.size)return null;const V="object"===F.getIn(["schema","type"]),$="binary"===F.getIn(["schema","format"]),W="base64"===F.getIn(["schema","format"]);if("application/octet-stream"===b||0===i()(b).call(b,"image/")||0===i()(b).call(b,"audio/")||0===i()(b).call(b,"video/")||$||W){const e=u("Input");return w?p.createElement(e,{type:"file",onChange:C}):p.createElement("i",null,"Example values are not available for ",p.createElement("code",null,b)," media types.")}if(V&&("application/x-www-form-urlencoded"===b||0===i()(b).call(b,"multipart/"))&&z.get("properties",(0,f.OrderedMap)()).size>0){var H;const e=u("JsonSchemaForm"),t=u("ParameterExt"),r=z.get("properties",(0,f.OrderedMap)());return n=f.Map.isMap(n)?n:(0,f.OrderedMap)(),p.createElement("div",{className:"table-container"},L&&p.createElement(j,{source:L}),p.createElement("table",null,p.createElement("tbody",null,f.Map.isMap(r)&&o()(H=r.entrySeq()).call(H,(r=>{var i,d;let[m,g]=r;if(g.get("readOnly"))return;let v=D?(0,h.po)(g):null;const b=l()(i=z.get("required",(0,f.List)())).call(i,m),E=g.get("type"),S=g.get("format"),A=g.get("description"),k=n.getIn([m,"value"]),C=n.getIn([m,"errors"])||s,I=a.get(m)||!1,N=g.has("default")||g.has("example")||g.hasIn(["items","example"])||g.hasIn(["items","default"]),T=g.has("enum")&&(1===g.get("enum").size||b),P=N||T;let R="";"array"!==E||P||(R=[]),("object"===E||P)&&(R=(0,h.xi)(g,!1,{includeWriteOnly:!0})),"string"!=typeof R&&"object"===E&&(R=(0,h.Pz)(R)),"string"==typeof R&&"array"===E&&(R=JSON.parse(R));const L="string"===E&&("binary"===S||"base64"===S);return p.createElement("tr",{key:m,className:"parameters","data-property-name":m},p.createElement("td",{className:"parameters-col_name"},p.createElement("div",{className:b?"parameter__name required":"parameter__name"},m,b?p.createElement("span",null," *"):null),p.createElement("div",{className:"parameter__type"},E,S&&p.createElement("span",{className:"prop-format"},"($",S,")"),D&&v.size?o()(d=v.entrySeq()).call(d,(e=>{let[r,n]=e;return p.createElement(t,{key:`${r}-${n}`,xKey:r,xVal:n})})):null),p.createElement("div",{className:"parameter__deprecated"},g.get("deprecated")?"deprecated":null)),p.createElement("td",{className:"parameters-col_description"},p.createElement(j,{source:A}),w?p.createElement("div",null,p.createElement(e,{fn:y,dispatchInitialValue:!L,schema:g,description:m,getComponent:u,value:void 0===k?R:k,required:b,errors:C,onChange:e=>{x(e,[m])}}),b?null:p.createElement(M,{onChange:e=>_(m,e),isIncluded:I,isIncludedOptions:O(m),isDisabled:c()(k)?0!==k.length:!(0,h.O2)(k)})):null))})))))}const J=m(r,b,S);let K=null;return(0,d.O)(J)&&(K="json"),p.createElement("div",null,L&&p.createElement(j,{source:L}),q?p.createElement(P,{userHasEditedBody:t,examples:q,currentKey:S,currentUserInputValue:n,onSelect:e=>{A(e)},updateValue:x,defaultToFirstExample:!0,getComponent:u,setRetainRequestBodyValueFlag:k}):null,w?p.createElement("div",null,p.createElement(N,{value:n,errors:s,defaultValue:J,onChange:x,getComponent:u})):p.createElement(I,{getComponent:u,getConfigs:g,specSelectors:v,expandDepth:1,isExecute:w,schema:F.get("schema"),specPath:E.push("content",b),example:p.createElement(T,{className:"body-param__example",getConfigs:g,language:K,value:(0,h.Pz)(n)||J}),includeWriteOnly:!0}),q?p.createElement(R,{example:q.get(S),getComponent:u,getConfigs:g}):null)}},9928:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>o});var n=r(67294);class o extends n.Component{render(){const{specSelectors:e,oas3Selectors:t,oas3Actions:r,getComponent:o}=this.props,a=e.servers(),i=o("Servers");return a&&a.size?n.createElement("div",null,n.createElement("span",{className:"servers-title"},"Servers"),n.createElement(i,{servers:a,currentServer:t.selectedServer(),setSelectedServer:r.setSelectedServer,setServerVariableValue:r.setServerVariableValue,getServerVariable:t.serverVariableValue,getEffectiveServerValue:t.serverEffectiveValue})):null}}},56617:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>p});var n=r(61125),o=r.n(n),a=r(51679),i=r.n(a),s=r(97606),l=r.n(s),u=r(67294),c=r(43393);r(23930);class p extends u.Component{constructor(){super(...arguments),o()(this,"onServerChange",(e=>{this.setServer(e.target.value)})),o()(this,"onServerVariableValueChange",(e=>{let{setServerVariableValue:t,currentServer:r}=this.props,n=e.target.getAttribute("data-variable"),o=e.target.value;"function"==typeof t&&t({server:r,key:n,val:o})})),o()(this,"setServer",(e=>{let{setSelectedServer:t}=this.props;t(e)}))}componentDidMount(){var e;let{servers:t,currentServer:r}=this.props;r||this.setServer(null===(e=t.first())||void 0===e?void 0:e.get("url"))}UNSAFE_componentWillReceiveProps(e){let{servers:t,setServerVariableValue:r,getServerVariable:n}=e;if(this.props.currentServer!==e.currentServer||this.props.servers!==e.servers){var o;let a=i()(t).call(t,(t=>t.get("url")===e.currentServer)),s=i()(o=this.props.servers).call(o,(e=>e.get("url")===this.props.currentServer))||(0,c.OrderedMap)();if(!a)return this.setServer(t.first().get("url"));let u=s.get("variables")||(0,c.OrderedMap)(),p=(i()(u).call(u,(e=>e.get("default")))||(0,c.OrderedMap)()).get("default"),f=a.get("variables")||(0,c.OrderedMap)(),h=(i()(f).call(f,(e=>e.get("default")))||(0,c.OrderedMap)()).get("default");l()(f).call(f,((t,o)=>{n(e.currentServer,o)&&p===h||r({server:e.currentServer,key:o,val:t.get("default")||""})}))}}render(){var e,t;let{servers:r,currentServer:n,getServerVariable:o,getEffectiveServerValue:a}=this.props,s=(i()(r).call(r,(e=>e.get("url")===n))||(0,c.OrderedMap)()).get("variables")||(0,c.OrderedMap)(),p=0!==s.size;return u.createElement("div",{className:"servers"},u.createElement("label",{htmlFor:"servers"},u.createElement("select",{onChange:this.onServerChange,value:n},l()(e=r.valueSeq()).call(e,(e=>u.createElement("option",{value:e.get("url"),key:e.get("url")},e.get("url"),e.get("description")&&` - ${e.get("description")}`))).toArray())),p?u.createElement("div",null,u.createElement("div",{className:"computed-url"},"Computed URL:",u.createElement("code",null,a(n))),u.createElement("h4",null,"Server variables"),u.createElement("table",null,u.createElement("tbody",null,l()(t=s.entrySeq()).call(t,(e=>{var t;let[r,a]=e;return u.createElement("tr",{key:r},u.createElement("td",null,r),u.createElement("td",null,a.get("enum")?u.createElement("select",{"data-variable":r,onChange:this.onServerVariableValueChange},l()(t=a.get("enum")).call(t,(e=>u.createElement("option",{selected:e===o(n,r),key:e,value:e},e)))):u.createElement("input",{type:"text",value:o(n,r)||"",onChange:this.onServerVariableValueChange,"data-variable":r})))}))))):null)}}},7779:(e,t,r)=>{"use strict";r.r(t),r.d(t,{isOAS3:()=>l,isSwagger2:()=>u,OAS3ComponentWrapFactory:()=>c});var n=r(23101),o=r.n(n),a=r(27043),i=r.n(a),s=r(67294);function l(e){const t=e.get("openapi");return"string"==typeof t&&(i()(t).call(t,"3.0.")&&t.length>4)}function u(e){const t=e.get("swagger");return"string"==typeof t&&i()(t).call(t,"2.0")}function c(e){return(t,r)=>n=>{if(r&&r.specSelectors&&r.specSelectors.specJson){return l(r.specSelectors.specJson())?s.createElement(e,o()({},n,r,{Ori:t})):s.createElement(t,n)}return console.warn("OAS3 wrapper: couldn't get spec"),null}}},97451:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>p});var n=r(92044),o=r(73723),a=r(91741),i=r(76467),s=r(37761),l=r(67002),u=r(5065),c=r(62109);function p(){return{components:i.default,wrapComponents:s.default,statePlugins:{spec:{wrapSelectors:n,selectors:a},auth:{wrapSelectors:o},oas3:{actions:l,reducers:c.default,selectors:u}}}}},62109:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>p});var n=r(8712),o=r.n(n),a=r(86),i=r.n(a),s=r(24282),l=r.n(s),u=r(43393),c=r(67002);const p={[c.UPDATE_SELECTED_SERVER]:(e,t)=>{let{payload:{selectedServerUrl:r,namespace:n}}=t;const o=n?[n,"selectedServer"]:["selectedServer"];return e.setIn(o,r)},[c.UPDATE_REQUEST_BODY_VALUE]:(e,t)=>{let{payload:{value:r,pathMethod:n}}=t,[a,s]=n;if(!u.Map.isMap(r))return e.setIn(["requestData",a,s,"bodyValue"],r);let l,c=e.getIn(["requestData",a,s,"bodyValue"])||(0,u.Map)();u.Map.isMap(c)||(c=(0,u.Map)());const[...p]=o()(r).call(r);return i()(p).call(p,(e=>{let t=r.getIn([e]);c.has(e)&&u.Map.isMap(t)||(l=c.setIn([e,"value"],t))})),e.setIn(["requestData",a,s,"bodyValue"],l)},[c.UPDATE_REQUEST_BODY_VALUE_RETAIN_FLAG]:(e,t)=>{let{payload:{value:r,pathMethod:n}}=t,[o,a]=n;return e.setIn(["requestData",o,a,"retainBodyValue"],r)},[c.UPDATE_REQUEST_BODY_INCLUSION]:(e,t)=>{let{payload:{value:r,pathMethod:n,name:o}}=t,[a,i]=n;return e.setIn(["requestData",a,i,"bodyInclusion",o],r)},[c.UPDATE_ACTIVE_EXAMPLES_MEMBER]:(e,t)=>{let{payload:{name:r,pathMethod:n,contextType:o,contextName:a}}=t,[i,s]=n;return e.setIn(["examples",i,s,o,a,"activeExample"],r)},[c.UPDATE_REQUEST_CONTENT_TYPE]:(e,t)=>{let{payload:{value:r,pathMethod:n}}=t,[o,a]=n;return e.setIn(["requestData",o,a,"requestContentType"],r)},[c.UPDATE_RESPONSE_CONTENT_TYPE]:(e,t)=>{let{payload:{value:r,path:n,method:o}}=t;return e.setIn(["requestData",n,o,"responseContentType"],r)},[c.UPDATE_SERVER_VARIABLE_VALUE]:(e,t)=>{let{payload:{server:r,namespace:n,key:o,val:a}}=t;const i=n?[n,"serverVariableValues",r,o]:["serverVariableValues",r,o];return e.setIn(i,a)},[c.SET_REQUEST_BODY_VALIDATE_ERROR]:(e,t)=>{let{payload:{path:r,method:n,validationErrors:o}}=t,a=[];if(a.push("Required field is not provided"),o.missingBodyValue)return e.setIn(["requestData",r,n,"errors"],(0,u.fromJS)(a));if(o.missingRequiredKeys&&o.missingRequiredKeys.length>0){const{missingRequiredKeys:t}=o;return e.updateIn(["requestData",r,n,"bodyValue"],(0,u.fromJS)({}),(e=>l()(t).call(t,((e,t)=>e.setIn([t,"errors"],(0,u.fromJS)(a))),e)))}return console.warn("unexpected result: SET_REQUEST_BODY_VALIDATE_ERROR"),e},[c.CLEAR_REQUEST_BODY_VALIDATE_ERROR]:(e,t)=>{let{payload:{path:r,method:n}}=t;const a=e.getIn(["requestData",r,n,"bodyValue"]);if(!u.Map.isMap(a))return e.setIn(["requestData",r,n,"errors"],(0,u.fromJS)([]));const[...i]=o()(a).call(a);return i?e.updateIn(["requestData",r,n,"bodyValue"],(0,u.fromJS)({}),(e=>l()(i).call(i,((e,t)=>e.setIn([t,"errors"],(0,u.fromJS)([]))),e))):e},[c.CLEAR_REQUEST_BODY_VALUE]:(e,t)=>{let{payload:{pathMethod:r}}=t,[n,o]=r;const a=e.getIn(["requestData",n,o,"bodyValue"]);return a?u.Map.isMap(a)?e.setIn(["requestData",n,o,"bodyValue"],(0,u.Map)()):e.setIn(["requestData",n,o,"bodyValue"],""):e}}},5065:(e,t,r)=>{"use strict";r.r(t),r.d(t,{selectedServer:()=>g,requestBodyValue:()=>v,shouldRetainRequestBodyValue:()=>y,hasUserEditedBody:()=>b,requestBodyInclusionSetting:()=>w,requestBodyErrors:()=>E,activeExamplesMember:()=>x,requestContentType:()=>_,responseContentType:()=>S,serverVariableValue:()=>A,serverVariables:()=>k,serverEffectiveValue:()=>C,validateBeforeExecute:()=>O,validateShallowRequired:()=>I});var n=r(97606),o=r.n(n),a=r(86),i=r.n(a),s=r(28222),l=r.n(s),u=r(11882),c=r.n(u),p=r(43393),f=r(7779),h=r(42458),d=r(90242);function m(e){return function(){for(var t=arguments.length,r=new Array(t),n=0;n{const n=t.getSystem().specSelectors.specJson();return(0,f.isOAS3)(n)?e(...r):null}}}const g=m(((e,t)=>{const r=t?[t,"selectedServer"]:["selectedServer"];return e.getIn(r)||""})),v=m(((e,t,r)=>e.getIn(["requestData",t,r,"bodyValue"])||null)),y=m(((e,t,r)=>e.getIn(["requestData",t,r,"retainBodyValue"])||!1)),b=(e,t,r)=>e=>{const{oas3Selectors:n,specSelectors:o}=e.getSystem(),a=o.specJson();if((0,f.isOAS3)(a)){let e=!1;const a=n.requestContentType(t,r);let i=n.requestBodyValue(t,r);if(p.Map.isMap(i)&&(i=(0,d.Pz)(i.mapEntries((e=>p.Map.isMap(e[1])?[e[0],e[1].get("value")]:e)).toJS())),p.List.isList(i)&&(i=(0,d.Pz)(i)),a){const s=(0,h.getDefaultRequestBodyValue)(o.specResolvedSubtree(["paths",t,r,"requestBody"]),a,n.activeExamplesMember(t,r,"requestBody","requestBody"));e=!!i&&i!==s}return e}return null},w=m(((e,t,r)=>e.getIn(["requestData",t,r,"bodyInclusion"])||(0,p.Map)())),E=m(((e,t,r)=>e.getIn(["requestData",t,r,"errors"])||null)),x=m(((e,t,r,n,o)=>e.getIn(["examples",t,r,n,o,"activeExample"])||null)),_=m(((e,t,r)=>e.getIn(["requestData",t,r,"requestContentType"])||null)),S=m(((e,t,r)=>e.getIn(["requestData",t,r,"responseContentType"])||null)),A=m(((e,t,r)=>{let n;if("string"!=typeof t){const{server:e,namespace:o}=t;n=o?[o,"serverVariableValues",e,r]:["serverVariableValues",e,r]}else{n=["serverVariableValues",t,r]}return e.getIn(n)||null})),k=m(((e,t)=>{let r;if("string"!=typeof t){const{server:e,namespace:n}=t;r=n?[n,"serverVariableValues",e]:["serverVariableValues",e]}else{r=["serverVariableValues",t]}return e.getIn(r)||(0,p.OrderedMap)()})),C=m(((e,t)=>{var r,n;if("string"!=typeof t){const{server:o,namespace:a}=t;n=o,r=a?e.getIn([a,"serverVariableValues",n]):e.getIn(["serverVariableValues",n])}else n=t,r=e.getIn(["serverVariableValues",n]);r=r||(0,p.OrderedMap)();let a=n;return o()(r).call(r,((e,t)=>{a=a.replace(new RegExp(`{${t}}`,"g"),e)})),a})),O=(j=(e,t)=>((e,t)=>(t=t||[],!!e.getIn(["requestData",...t,"bodyValue"])))(e,t),function(){for(var e=arguments.length,t=new Array(e),r=0;r{const r=e.getSystem().specSelectors.specJson();let n=[...t][1]||[];return!r.getIn(["paths",...n,"requestBody","required"])||j(...t)}});var j;const I=(e,t)=>{var r;let{oas3RequiredRequestBodyContentType:n,oas3RequestContentType:o,oas3RequestBodyValue:a}=t,s=[];if(!p.Map.isMap(a))return s;let u=[];return i()(r=l()(n.requestContentType)).call(r,(e=>{if(e===o){let t=n.requestContentType[e];i()(t).call(t,(e=>{c()(u).call(u,e)<0&&u.push(e)}))}})),i()(u).call(u,(e=>{a.getIn([e,"value"])||s.push(e)})),s}},91741:(e,t,r)=>{"use strict";r.r(t),r.d(t,{servers:()=>u,isSwagger2:()=>p});var n=r(20573),o=r(43393),a=r(7779);const i=e=>e||(0,o.Map)(),s=(0,n.P1)(i,(e=>e.get("json",(0,o.Map)()))),l=(0,n.P1)(i,(e=>e.get("resolved",(0,o.Map)()))),u=(c=(0,n.P1)((e=>{let t=l(e);return t.count()<1&&(t=s(e)),t}),(e=>e.getIn(["servers"])||(0,o.Map)())),()=>function(e){const t=e.getSystem().specSelectors.specJson();if((0,a.isOAS3)(t)){for(var r=arguments.length,n=new Array(r>1?r-1:0),o=1;o()=>{const e=t.getSystem().specSelectors.specJson();return(0,a.isSwagger2)(e)}},92044:(e,t,r)=>{"use strict";r.r(t),r.d(t,{definitions:()=>h,hasHost:()=>d,securityDefinitions:()=>m,host:()=>g,basePath:()=>v,consumes:()=>y,produces:()=>b,schemes:()=>w,servers:()=>E,isOAS3:()=>x,isSwagger2:()=>_});var n=r(20573),o=r(33881),a=r(43393),i=r(7779);function s(e){return(t,r)=>function(){const n=r.getSystem().specSelectors.specJson();return(0,i.isOAS3)(n)?e(...arguments):t(...arguments)}}const l=e=>e||(0,a.Map)(),u=s((0,n.P1)((()=>null))),c=(0,n.P1)(l,(e=>e.get("json",(0,a.Map)()))),p=(0,n.P1)(l,(e=>e.get("resolved",(0,a.Map)()))),f=e=>{let t=p(e);return t.count()<1&&(t=c(e)),t},h=s((0,n.P1)(f,(e=>{const t=e.getIn(["components","schemas"]);return a.Map.isMap(t)?t:(0,a.Map)()}))),d=s((e=>f(e).hasIn(["servers",0]))),m=s((0,n.P1)(o.specJsonWithResolvedSubtrees,(e=>e.getIn(["components","securitySchemes"])||null))),g=u,v=u,y=u,b=u,w=u,E=s((0,n.P1)(f,(e=>e.getIn(["servers"])||(0,a.Map)()))),x=(e,t)=>()=>{const e=t.getSystem().specSelectors.specJson();return(0,i.isOAS3)(a.Map.isMap(e)?e:(0,a.Map)())},_=(e,t)=>()=>{const e=t.getSystem().specSelectors.specJson();return(0,i.isSwagger2)(a.Map.isMap(e)?e:(0,a.Map)())}},70356:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>o});var n=r(67294);const o=(0,r(7779).OAS3ComponentWrapFactory)((e=>{let{Ori:t,...r}=e;const{schema:o,getComponent:a,errSelectors:i,authorized:s,onAuthChange:l,name:u}=r,c=a("HttpAuth");return"http"===o.get("type")?n.createElement(c,{key:u,schema:o,name:u,errSelectors:i,authorized:s,getComponent:a,onChange:l}):n.createElement(t,r)}))},37761:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>u});var n=r(22460),o=r(70356),a=r(69487),i=r(50058),s=r(53499),l=r(90287);const u={Markdown:n.default,AuthItem:o.default,JsonSchema_string:l.default,VersionStamp:a.default,model:s.default,onlineValidatorBadge:i.default}},90287:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>o});var n=r(67294);const o=(0,r(7779).OAS3ComponentWrapFactory)((e=>{let{Ori:t,...r}=e;const{schema:o,getComponent:a,errors:i,onChange:s}=r,l=o&&o.get?o.get("format"):null,u=o&&o.get?o.get("type"):null,c=a("Input");return u&&"string"===u&&l&&("binary"===l||"base64"===l)?n.createElement(c,{type:"file",className:i.length?"invalid":"",title:i.length?i:"",onChange:e=>{s(e.target.files[0])},disabled:t.isDisabled}):n.createElement(t,r)}))},22460:(e,t,r)=>{"use strict";r.r(t),r.d(t,{Markdown:()=>f,default:()=>h});var n=r(81607),o=r.n(n),a=r(67294),i=r(94184),s=r.n(i),l=r(89927),u=r(7779),c=r(86019);const p=new l._("commonmark");p.block.ruler.enable(["table"]),p.set({linkTarget:"_blank"});const f=e=>{let{source:t,className:r="",getConfigs:n}=e;if("string"!=typeof t)return null;if(t){const{useUnsafeMarkdown:e}=n(),i=p.render(t),l=(0,c.s)(i,{useUnsafeMarkdown:e});let u;return"string"==typeof l&&(u=o()(l).call(l)),a.createElement("div",{dangerouslySetInnerHTML:{__html:u},className:s()(r,"renderedMarkdown")})}return null};f.defaultProps={getConfigs:()=>({useUnsafeMarkdown:!1})};const h=(0,u.OAS3ComponentWrapFactory)(f)},53499:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>u});var n=r(23101),o=r.n(n),a=r(67294),i=r(7779),s=r(53795);class l extends a.Component{render(){let{getConfigs:e,schema:t}=this.props,r=["model-box"],n=null;return!0===t.get("deprecated")&&(r.push("deprecated"),n=a.createElement("span",{className:"model-deprecated-warning"},"Deprecated:")),a.createElement("div",{className:r.join(" ")},n,a.createElement(s.Z,o()({},this.props,{getConfigs:e,depth:1,expandDepth:this.props.expandDepth||0})))}}const u=(0,i.OAS3ComponentWrapFactory)(l)},50058:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>a});var n=r(7779),o=r(5623);const a=(0,n.OAS3ComponentWrapFactory)(o.Z)},69487:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>o});var n=r(67294);const o=(0,r(7779).OAS3ComponentWrapFactory)((e=>{const{Ori:t}=e;return n.createElement("span",null,n.createElement(t,e),n.createElement("small",{className:"version-stamp"},n.createElement("pre",{className:"version"},"OAS3")))}))},28560:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>i});var n=r(87198),o=r.n(n);let a=!1;function i(){return{statePlugins:{spec:{wrapActions:{updateSpec:e=>function(){return a=!0,e(...arguments)},updateJsonSpec:(e,t)=>function(){const r=t.getConfigs().onComplete;return a&&"function"==typeof r&&(o()(r,0),a=!1),e(...arguments)}}}}}}},92135:(e,t,r)=>{"use strict";r.r(t),r.d(t,{requestSnippetGenerator_curl_powershell:()=>A,requestSnippetGenerator_curl_bash:()=>k,requestSnippetGenerator_curl_cmd:()=>C});var n=r(11882),o=r.n(n),a=r(81607),i=r.n(a),s=r(35627),l=r.n(s),u=r(97606),c=r.n(u),p=r(12196),f=r.n(p),h=r(74386),d=r.n(h),m=r(58118),g=r.n(m),v=r(27504),y=r(43393);const b=e=>{var t;const r="_**[]";return o()(e).call(e,r)<0?e:i()(t=e.split(r)[0]).call(t)},w=e=>"-d "===e||/^[_\/-]/g.test(e)?e:"'"+e.replace(/'/g,"'\\''")+"'",E=e=>"-d "===(e=e.replace(/\^/g,"^^").replace(/\\"/g,'\\\\"').replace(/"/g,'""').replace(/\n/g,"^\n"))?e.replace(/-d /g,"-d ^\n"):/^[_\/-]/g.test(e)?e:'"'+e+'"',x=e=>"-d "===e?e:/\n/.test(e)?'@"\n'+e.replace(/"/g,'\\"').replace(/`/g,"``").replace(/\$/,"`$")+'\n"@':/^[_\/-]/g.test(e)?e:"'"+e.replace(/"/g,'""').replace(/'/g,"''")+"'";function _(e){let t=[];for(let[r,n]of e.get("body").entrySeq()){let e=b(r);n instanceof v.Z.File?t.push(` "${e}": {\n "name": "${n.name}"${n.type?`,\n "type": "${n.type}"`:""}\n }`):t.push(` "${e}": ${l()(n,null,2).replace(/(\r\n|\r|\n)/g,"\n ")}`)}return`{\n${t.join(",\n")}\n}`}const S=function(e,t,r){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"",o=!1,a="";const i=function(){for(var e=arguments.length,r=new Array(e),n=0;na+=` ${r}`,p=function(){var e;let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return a+=f()(e=" ").call(e,t)};let h=e.get("headers");if(a+="curl"+n,e.has("curlOptions")&&i(...e.get("curlOptions")),i("-X",e.get("method")),u(),p(),s(`${e.get("url")}`),h&&h.size)for(let t of d()(m=e.get("headers")).call(m)){var m;u(),p();let[e,r]=t;s("-H",`${e}: ${r}`),o=o||/^content-type$/i.test(e)&&/^multipart\/form-data$/i.test(r)}const w=e.get("body");var E;if(w)if(o&&g()(E=["POST","PUT","PATCH"]).call(E,e.get("method")))for(let[e,t]of w.entrySeq()){let r=b(e);u(),p(),s("-F"),t instanceof v.Z.File?i(`${r}=@${t.name}${t.type?`;type=${t.type}`:""}`):i(`${r}=${t}`)}else if(w instanceof v.Z.File)u(),p(),s(`--data-binary '@${w.name}'`);else{u(),p(),s("-d ");let t=w;y.Map.isMap(t)?s(_(e)):("string"!=typeof t&&(t=l()(t)),s(t))}else w||"POST"!==e.get("method")||(u(),p(),s("-d ''"));return a},A=e=>S(e,x,"`\n",".exe"),k=e=>S(e,w,"\\\n"),C=e=>S(e,E,"^\n")},86575:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>i});var n=r(92135),o=r(4669),a=r(84206);const i=()=>({components:{RequestSnippets:a.default},fn:n,statePlugins:{requestSnippets:{selectors:o}}})},84206:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>w});var n=r(14418),o=r.n(n),a=r(25110),i=r.n(a),s=r(86),l=r.n(s),u=r(97606),c=r.n(u),p=r(67294),f=r(27361),h=r.n(f),d=r(23560),m=r.n(d),g=r(74855),v=r(36581);const y={cursor:"pointer",lineHeight:1,display:"inline-flex",backgroundColor:"rgb(250, 250, 250)",paddingBottom:"0",paddingTop:"0",border:"1px solid rgb(51, 51, 51)",borderRadius:"4px 4px 0 0",boxShadow:"none",borderBottom:"none"},b={cursor:"pointer",lineHeight:1,display:"inline-flex",backgroundColor:"rgb(51, 51, 51)",boxShadow:"none",border:"1px solid rgb(51, 51, 51)",paddingBottom:"0",paddingTop:"0",borderRadius:"4px 4px 0 0",marginTop:"-5px",marginRight:"-5px",marginLeft:"-5px",zIndex:"9999",borderBottom:"none"},w=e=>{var t,r;let{request:n,requestSnippetsSelectors:a,getConfigs:s}=e;const u=m()(s)?s():null,f=!1!==h()(u,"syntaxHighlight")&&h()(u,"syntaxHighlight.activated",!0),d=(0,p.useRef)(null),[w,E]=(0,p.useState)(null===(t=a.getSnippetGenerators())||void 0===t?void 0:t.keySeq().first()),[x,_]=(0,p.useState)(null==a?void 0:a.getDefaultExpanded());(0,p.useEffect)((()=>{}),[]),(0,p.useEffect)((()=>{var e;const t=o()(e=i()(d.current.childNodes)).call(e,(e=>{var t;return!!e.nodeType&&(null===(t=e.classList)||void 0===t?void 0:t.contains("curl-command"))}));return l()(t).call(t,(e=>e.addEventListener("mousewheel",j,{passive:!1}))),()=>{l()(t).call(t,(e=>e.removeEventListener("mousewheel",j)))}}),[n]);const S=a.getSnippetGenerators(),A=S.get(w),k=A.get("fn")(n),C=()=>{_(!x)},O=e=>e===w?b:y,j=e=>{const{target:t,deltaY:r}=e,{scrollHeight:n,offsetHeight:o,scrollTop:a}=t;n>o&&(0===a&&r<0||o+a>=n&&r>0)&&e.preventDefault()},I=f?p.createElement(v.d3,{language:A.get("syntax"),className:"curl microlight",style:(0,v.C2)(h()(u,"syntaxHighlight.theme"))},k):p.createElement("textarea",{readOnly:!0,className:"curl",value:k});return p.createElement("div",{className:"request-snippets",ref:d},p.createElement("div",{style:{width:"100%",display:"flex",justifyContent:"flex-start",alignItems:"center",marginBottom:"15px"}},p.createElement("h4",{onClick:()=>C(),style:{cursor:"pointer"}},"Snippets"),p.createElement("button",{onClick:()=>C(),style:{border:"none",background:"none"},title:x?"Collapse operation":"Expand operation"},p.createElement("svg",{className:"arrow",width:"10",height:"10"},p.createElement("use",{href:x?"#large-arrow-down":"#large-arrow",xlinkHref:x?"#large-arrow-down":"#large-arrow"})))),x&&p.createElement("div",{className:"curl-command"},p.createElement("div",{style:{paddingLeft:"15px",paddingRight:"10px",width:"100%",display:"flex"}},c()(r=S.entrySeq()).call(r,(e=>{let[t,r]=e;return p.createElement("div",{style:O(t),className:"btn",key:t,onClick:()=>(e=>{w!==e&&E(e)})(t)},p.createElement("h4",{style:t===w?{color:"white"}:{}},r.get("title")))}))),p.createElement("div",{className:"copy-to-clipboard"},p.createElement(g.CopyToClipboard,{text:k},p.createElement("button",null))),p.createElement("div",null,I)))}},4669:(e,t,r)=>{"use strict";r.r(t),r.d(t,{getGenerators:()=>f,getSnippetGenerators:()=>h,getActiveLanguage:()=>d,getDefaultExpanded:()=>m});var n=r(14418),o=r.n(n),a=r(58118),i=r.n(a),s=r(97606),l=r.n(s),u=r(20573),c=r(43393);const p=e=>e||(0,c.Map)(),f=(0,u.P1)(p,(e=>{const t=e.get("languages"),r=e.get("generators",(0,c.Map)());return!t||t.isEmpty()?r:o()(r).call(r,((e,r)=>i()(t).call(t,r)))})),h=e=>t=>{var r,n;let{fn:a}=t;return o()(r=l()(n=f(e)).call(n,((e,t)=>{const r=(e=>a[`requestSnippetGenerator_${e}`])(t);return"function"!=typeof r?null:e.set("fn",r)}))).call(r,(e=>e))},d=(0,u.P1)(p,(e=>e.get("activeLanguage"))),m=(0,u.P1)(p,(e=>e.get("defaultExpanded")))},36195:(e,t,r)=>{"use strict";r.r(t),r.d(t,{ErrorBoundary:()=>i,default:()=>s});var n=r(67294),o=r(56189),a=r(29403);class i extends n.Component{static getDerivedStateFromError(e){return{hasError:!0,error:e}}constructor(){super(...arguments),this.state={hasError:!1,error:null}}componentDidCatch(e,t){this.props.fn.componentDidCatch(e,t)}render(){const{getComponent:e,targetName:t,children:r}=this.props;if(this.state.hasError){const r=e("Fallback");return n.createElement(r,{name:t})}return r}}i.defaultProps={targetName:"this component",getComponent:()=>a.default,fn:{componentDidCatch:o.componentDidCatch},children:null};const s=i},29403:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>o});var n=r(67294);const o=e=>{let{name:t}=e;return n.createElement("div",{className:"fallback"},"😱 ",n.createElement("i",null,"Could not render ","t"===t?"this component":t,", see the console."))}},56189:(e,t,r)=>{"use strict";r.r(t),r.d(t,{componentDidCatch:()=>i,withErrorBoundary:()=>s});var n=r(23101),o=r.n(n),a=r(67294);const i=console.error,s=e=>t=>{const{getComponent:r,fn:n}=e(),i=r("ErrorBoundary"),s=n.getDisplayName(t);class l extends a.Component{render(){return a.createElement(i,{targetName:s,getComponent:r,fn:n},a.createElement(t,o()({},this.props,this.context)))}}var u;return l.displayName=`WithErrorBoundary(${s})`,(u=t).prototype&&u.prototype.isReactComponent&&(l.prototype.mapStateToProps=t.prototype.mapStateToProps),l}},27621:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>c});var n=r(47475),o=r.n(n),a=r(7287),i=r.n(a),s=r(36195),l=r(29403),u=r(56189);const c=function(){let{componentList:e=[],fullOverride:t=!1}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return r=>{var n;let{getSystem:a}=r;const c=t?e:["App","BaseLayout","VersionPragmaFilter","InfoContainer","ServersContainer","SchemesContainer","AuthorizeBtnContainer","FilterContainer","Operations","OperationContainer","parameters","responses","OperationServers","Models","ModelWrapper",...e],p=i()(c,o()(n=Array(c.length)).call(n,((e,t)=>{let{fn:r}=t;return r.withErrorBoundary(e)})));return{fn:{componentDidCatch:u.componentDidCatch,withErrorBoundary:(0,u.withErrorBoundary)(a)},components:{ErrorBoundary:s.default,Fallback:l.default},wrapComponents:p}}}},57050:(e,t,r)=>{"use strict";r.r(t),r.d(t,{sampleFromSchemaGeneric:()=>F,inferSchema:()=>z,createXMLExample:()=>U,sampleFromSchema:()=>q,memoizedCreateXMLExample:()=>$,memoizedSampleFromSchema:()=>W});var n=r(11882),o=r.n(n),a=r(86),i=r.n(a),s=r(58309),l=r.n(s),u=r(58118),c=r.n(u),p=r(92039),f=r.n(p),h=r(24278),d=r.n(h),m=r(51679),g=r.n(m),v=r(39022),y=r.n(v),b=r(97606),w=r.n(b),E=r(35627),x=r.n(E),_=r(53479),S=r.n(_),A=r(14419),k=r.n(A),C=r(41609),O=r.n(C),j=r(90242),I=r(60314);const N={string:e=>e.pattern?(e=>{try{return new(k())(e).gen()}catch(e){return"string"}})(e.pattern):"string",string_email:()=>"user@example.com","string_date-time":()=>(new Date).toISOString(),string_date:()=>(new Date).toISOString().substring(0,10),string_uuid:()=>"3fa85f64-5717-4562-b3fc-2c963f66afa6",string_hostname:()=>"example.com",string_ipv4:()=>"198.51.100.42",string_ipv6:()=>"2001:0db8:5b96:0000:0000:426f:8e17:642a",number:()=>0,number_float:()=>0,integer:()=>0,boolean:e=>"boolean"!=typeof e.default||e.default},T=e=>{e=(0,j.mz)(e);let{type:t,format:r}=e,n=N[`${t}_${r}`]||N[t];return(0,j.Wl)(n)?n(e):"Unknown Type: "+e.type},P=e=>(0,j.XV)(e,"$$ref",(e=>"string"==typeof e&&o()(e).call(e,"#")>-1)),R=["maxProperties","minProperties"],M=["minItems","maxItems"],D=["minimum","maximum","exclusiveMinimum","exclusiveMaximum"],L=["minLength","maxLength"],B=function(e,t){var r;let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const a=r=>{void 0===t[r]&&void 0!==e[r]&&(t[r]=e[r])};var s;(i()(r=["example","default","enum","xml","type",...R,...M,...D,...L]).call(r,(e=>a(e))),void 0!==e.required&&l()(e.required))&&(void 0!==t.required&&t.required.length||(t.required=[]),i()(s=e.required).call(s,(e=>{var r;c()(r=t.required).call(r,e)||t.required.push(e)})));if(e.properties){t.properties||(t.properties={});let r=(0,j.mz)(e.properties);for(let a in r){var u;if(Object.prototype.hasOwnProperty.call(r,a))if(!r[a]||!r[a].deprecated)if(!r[a]||!r[a].readOnly||n.includeReadOnly)if(!r[a]||!r[a].writeOnly||n.includeWriteOnly)if(!t.properties[a])t.properties[a]=r[a],!e.required&&l()(e.required)&&-1!==o()(u=e.required).call(u,a)&&(t.required?t.required.push(a):t.required=[a])}}return e.items&&(t.items||(t.items={}),t.items=B(e.items,t.items,n)),t},F=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,n=arguments.length>3&&void 0!==arguments[3]&&arguments[3];e&&(0,j.Wl)(e.toJS)&&(e=e.toJS());let a=void 0!==r||e&&void 0!==e.example||e&&void 0!==e.default;const s=!a&&e&&e.oneOf&&e.oneOf.length>0,u=!a&&e&&e.anyOf&&e.anyOf.length>0;if(!a&&(s||u)){const r=(0,j.mz)(s?e.oneOf[0]:e.anyOf[0]);if(B(r,e,t),!e.xml&&r.xml&&(e.xml=r.xml),void 0!==e.example&&void 0!==r.example)a=!0;else if(r.properties){e.properties||(e.properties={});let n=(0,j.mz)(r.properties);for(let a in n){var p;if(Object.prototype.hasOwnProperty.call(n,a))if(!n[a]||!n[a].deprecated)if(!n[a]||!n[a].readOnly||t.includeReadOnly)if(!n[a]||!n[a].writeOnly||t.includeWriteOnly)if(!e.properties[a])e.properties[a]=n[a],!r.required&&l()(r.required)&&-1!==o()(p=r.required).call(p,a)&&(e.required?e.required.push(a):e.required=[a])}}}const h={};let{xml:m,type:v,example:b,properties:E,additionalProperties:x,items:_}=e||{},{includeReadOnly:S,includeWriteOnly:A}=t;m=m||{};let k,{name:C,prefix:I,namespace:N}=m,L={};if(n&&(C=C||"notagname",k=(I?I+":":"")+C,N)){h[I?"xmlns:"+I:"xmlns"]=N}n&&(L[k]=[]);const z=t=>f()(t).call(t,(t=>Object.prototype.hasOwnProperty.call(e,t)));e&&!v&&(E||x||z(R)?v="object":_||z(M)?v="array":z(D)?(v="number",e.type="number"):a||e.enum||(v="string",e.type="string"));const U=t=>{var r,n,o,a,i;null!==(null===(r=e)||void 0===r?void 0:r.maxItems)&&void 0!==(null===(n=e)||void 0===n?void 0:n.maxItems)&&(t=d()(t).call(t,0,null===(i=e)||void 0===i?void 0:i.maxItems));if(null!==(null===(o=e)||void 0===o?void 0:o.minItems)&&void 0!==(null===(a=e)||void 0===a?void 0:a.minItems)){let r=0;for(;t.length<(null===(s=e)||void 0===s?void 0:s.minItems);){var s;t.push(t[r++%t.length])}}return t},q=(0,j.mz)(E);let V,$=0;const W=()=>e&&null!==e.maxProperties&&void 0!==e.maxProperties&&$>=e.maxProperties,H=()=>{if(!e||!e.required)return 0;let t=0;var r,o;n?i()(r=e.required).call(r,(e=>t+=void 0===L[e]?0:1)):i()(o=e.required).call(o,(e=>{var r;return t+=void 0===(null===(r=L[k])||void 0===r?void 0:g()(r).call(r,(t=>void 0!==t[e])))?0:1}));return e.required.length-t},J=t=>{var r;return!(e&&e.required&&e.required.length)||!c()(r=e.required).call(r,t)},K=t=>!e||null===e.maxProperties||void 0===e.maxProperties||!W()&&(!J(t)||e.maxProperties-$-H()>0);if(V=n?function(r){let o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0;if(e&&q[r]){if(q[r].xml=q[r].xml||{},q[r].xml.attribute){const e=l()(q[r].enum)?q[r].enum[0]:void 0,t=q[r].example,n=q[r].default;return void(h[q[r].xml.name||r]=void 0!==t?t:void 0!==n?n:void 0!==e?e:T(q[r]))}q[r].xml.name=q[r].xml.name||r}else q[r]||!1===x||(q[r]={xml:{name:r}});let a=F(e&&q[r]||void 0,t,o,n);var i;K(r)&&($++,l()(a)?L[k]=y()(i=L[k]).call(i,a):L[k].push(a))}:(e,r)=>{K(e)&&(L[e]=F(q[e],t,r,n),$++)},a){let o;if(o=P(void 0!==r?r:void 0!==b?b:e.default),!n){if("number"==typeof o&&"string"===v)return`${o}`;if("string"!=typeof o||"string"===v)return o;try{return JSON.parse(o)}catch(e){return o}}if(e||(v=l()(o)?"array":typeof o),"array"===v){if(!l()(o)){if("string"==typeof o)return o;o=[o]}const r=e?e.items:void 0;r&&(r.xml=r.xml||m||{},r.xml.name=r.xml.name||m.name);let a=w()(o).call(o,(e=>F(r,t,e,n)));return a=U(a),m.wrapped?(L[k]=a,O()(h)||L[k].push({_attr:h})):L=a,L}if("object"===v){if("string"==typeof o)return o;for(let t in o)Object.prototype.hasOwnProperty.call(o,t)&&(e&&q[t]&&q[t].readOnly&&!S||e&&q[t]&&q[t].writeOnly&&!A||(e&&q[t]&&q[t].xml&&q[t].xml.attribute?h[q[t].xml.name||t]=o[t]:V(t,o[t])));return O()(h)||L[k].push({_attr:h}),L}return L[k]=O()(h)?o:[{_attr:h},o],L}if("object"===v){for(let e in q)Object.prototype.hasOwnProperty.call(q,e)&&(q[e]&&q[e].deprecated||q[e]&&q[e].readOnly&&!S||q[e]&&q[e].writeOnly&&!A||V(e));if(n&&h&&L[k].push({_attr:h}),W())return L;if(!0===x)n?L[k].push({additionalProp:"Anything can be here"}):L.additionalProp1={},$++;else if(x){const r=(0,j.mz)(x),o=F(r,t,void 0,n);if(n&&r.xml&&r.xml.name&&"notagname"!==r.xml.name)L[k].push(o);else{const t=null!==e.minProperties&&void 0!==e.minProperties&&$F(B(_,e,t),t,void 0,n)));else if(l()(_.oneOf)){var Y;r=w()(Y=_.oneOf).call(Y,(e=>F(B(_,e,t),t,void 0,n)))}else{if(!(!n||n&&m.wrapped))return F(_,t,void 0,n);r=[F(_,t,void 0,n)]}return r=U(r),n&&m.wrapped?(L[k]=r,O()(h)||L[k].push({_attr:h}),L):r}let Q;if(e&&l()(e.enum))Q=(0,j.AF)(e.enum)[0];else{if(!e)return;if(Q=T(e),"number"==typeof Q){let t=e.minimum;null!=t&&(e.exclusiveMinimum&&t++,Q=t);let r=e.maximum;null!=r&&(e.exclusiveMaximum&&r--,Q=r)}if("string"==typeof Q&&(null!==e.maxLength&&void 0!==e.maxLength&&(Q=d()(Q).call(Q,0,e.maxLength)),null!==e.minLength&&void 0!==e.minLength)){let t=0;for(;Q.length(e.schema&&(e=e.schema),e.properties&&(e.type="object"),e),U=(e,t,r)=>{const n=F(e,t,r,!0);if(n)return"string"==typeof n?n:S()(n,{declaration:!0,indent:"\t"})},q=(e,t,r)=>F(e,t,r,!1),V=(e,t,r)=>[e,x()(t),x()(r)],$=(0,I.Z)(U,V),W=(0,I.Z)(q,V)},8883:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>o});var n=r(57050);function o(){return{fn:n}}},51228:(e,t,r)=>{"use strict";r.r(t),r.d(t,{UPDATE_SPEC:()=>U,UPDATE_URL:()=>q,UPDATE_JSON:()=>V,UPDATE_PARAM:()=>$,UPDATE_EMPTY_PARAM_INCLUSION:()=>W,VALIDATE_PARAMS:()=>H,SET_RESPONSE:()=>J,SET_REQUEST:()=>K,SET_MUTATED_REQUEST:()=>G,LOG_REQUEST:()=>Z,CLEAR_RESPONSE:()=>Y,CLEAR_REQUEST:()=>Q,CLEAR_VALIDATE_PARAMS:()=>X,UPDATE_OPERATION_META_VALUE:()=>ee,UPDATE_RESOLVED:()=>te,UPDATE_RESOLVED_SUBTREE:()=>re,SET_SCHEME:()=>ne,updateSpec:()=>oe,updateResolved:()=>ae,updateUrl:()=>ie,updateJsonSpec:()=>se,parseToJson:()=>le,resolveSpec:()=>ce,requestResolvedSubtree:()=>he,changeParam:()=>de,changeParamByIdentity:()=>me,updateResolvedSubtree:()=>ge,invalidateResolvedSubtreeCache:()=>ve,validateParams:()=>ye,updateEmptyParamInclusion:()=>be,clearValidateParams:()=>we,changeConsumesValue:()=>Ee,changeProducesValue:()=>xe,setResponse:()=>_e,setRequest:()=>Se,setMutatedRequest:()=>Ae,logRequest:()=>ke,executeRequest:()=>Ce,execute:()=>Oe,clearResponse:()=>je,clearRequest:()=>Ie,setScheme:()=>Ne});var n=r(58309),o=r.n(n),a=r(97606),i=r.n(a),s=r(96718),l=r.n(s),u=r(24282),c=r.n(u),p=r(2250),f=r.n(p),h=r(6226),d=r.n(h),m=r(14418),g=r.n(m),v=r(3665),y=r.n(v),b=r(11882),w=r.n(b),E=r(86),x=r.n(E),_=r(28222),S=r.n(_),A=r(76986),k=r.n(A),C=r(70586),O=r.n(C),j=r(1272),I=r(43393),N=r(84564),T=r.n(N),P=r(7710),R=r(47037),M=r.n(R),D=r(23279),L=r.n(D),B=r(36968),F=r.n(B),z=r(90242);const U="spec_update_spec",q="spec_update_url",V="spec_update_json",$="spec_update_param",W="spec_update_empty_param_inclusion",H="spec_validate_param",J="spec_set_response",K="spec_set_request",G="spec_set_mutated_request",Z="spec_log_request",Y="spec_clear_response",Q="spec_clear_request",X="spec_clear_validate_param",ee="spec_update_operation_meta_value",te="spec_update_resolved",re="spec_update_resolved_subtree",ne="set_scheme";function oe(e){const t=(r=e,M()(r)?r:"").replace(/\t/g," ");var r;if("string"==typeof e)return{type:U,payload:t}}function ae(e){return{type:te,payload:e}}function ie(e){return{type:q,payload:e}}function se(e){return{type:V,payload:e}}const le=e=>t=>{let{specActions:r,specSelectors:n,errActions:o}=t,{specStr:a}=n,i=null;try{e=e||a(),o.clear({source:"parser"}),i=j.ZP.load(e,{schema:j.A8})}catch(e){return console.error(e),o.newSpecErr({source:"parser",level:"error",message:e.reason,line:e.mark&&e.mark.line?e.mark.line+1:void 0})}return i&&"object"==typeof i?r.updateJsonSpec(i):{}};let ue=!1;const ce=(e,t)=>r=>{let{specActions:n,specSelectors:a,errActions:s,fn:{fetch:u,resolve:c,AST:p={}},getConfigs:f}=r;ue||(console.warn("specActions.resolveSpec is deprecated since v3.10.0 and will be removed in v4.0.0; use requestResolvedSubtree instead!"),ue=!0);const{modelPropertyMacro:h,parameterMacro:d,requestInterceptor:m,responseInterceptor:g}=f();void 0===e&&(e=a.specJson()),void 0===t&&(t=a.url());let v=p.getLineNumberForPath?p.getLineNumberForPath:()=>{},y=a.specStr();return c({fetch:u,spec:e,baseDoc:t,modelPropertyMacro:h,parameterMacro:d,requestInterceptor:m,responseInterceptor:g}).then((e=>{let{spec:t,errors:r}=e;if(s.clear({type:"thrown"}),o()(r)&&r.length>0){let e=i()(r).call(r,(e=>(console.error(e),e.line=e.fullPath?v(y,e.fullPath):null,e.path=e.fullPath?e.fullPath.join("."):null,e.level="error",e.type="thrown",e.source="resolver",l()(e,"message",{enumerable:!0,value:e.message}),e)));s.newThrownErrBatch(e)}return n.updateResolved(t)}))};let pe=[];const fe=L()((async()=>{const e=pe.system;if(!e)return void console.error("debResolveSubtrees: don't have a system to operate on, aborting.");const{errActions:t,errSelectors:r,fn:{resolveSubtree:n,fetch:a,AST:s={}},specSelectors:u,specActions:p}=e;if(!n)return void console.error("Error: Swagger-Client did not provide a `resolveSubtree` method, doing nothing.");let h=s.getLineNumberForPath?s.getLineNumberForPath:()=>{};const m=u.specStr(),{modelPropertyMacro:v,parameterMacro:b,requestInterceptor:w,responseInterceptor:E}=e.getConfigs();try{var x=await c()(pe).call(pe,(async(e,s)=>{const{resultMap:c,specWithCurrentSubtrees:p}=await e,{errors:x,spec:_}=await n(p,s,{baseDoc:u.url(),modelPropertyMacro:v,parameterMacro:b,requestInterceptor:w,responseInterceptor:E});if(r.allErrors().size&&t.clearBy((e=>{var t;return"thrown"!==e.get("type")||"resolver"!==e.get("source")||!f()(t=e.get("fullPath")).call(t,((e,t)=>e===s[t]||void 0===s[t]))})),o()(x)&&x.length>0){let e=i()(x).call(x,(e=>(e.line=e.fullPath?h(m,e.fullPath):null,e.path=e.fullPath?e.fullPath.join("."):null,e.level="error",e.type="thrown",e.source="resolver",l()(e,"message",{enumerable:!0,value:e.message}),e)));t.newThrownErrBatch(e)}var S,A;_&&u.isOAS3()&&"components"===s[0]&&"securitySchemes"===s[1]&&await d().all(i()(S=g()(A=y()(_)).call(A,(e=>"openIdConnect"===e.type))).call(S,(async e=>{const t={url:e.openIdConnectUrl,requestInterceptor:w,responseInterceptor:E};try{const r=await a(t);r instanceof Error||r.status>=400?console.error(r.statusText+" "+t.url):e.openIdConnectData=JSON.parse(r.text)}catch(e){console.error(e)}})));return F()(c,s,_),F()(p,s,_),{resultMap:c,specWithCurrentSubtrees:p}}),d().resolve({resultMap:(u.specResolvedSubtree([])||(0,I.Map)()).toJS(),specWithCurrentSubtrees:u.specJson().toJS()}));delete pe.system,pe=[]}catch(e){console.error(e)}p.updateResolvedSubtree([],x.resultMap)}),35),he=e=>t=>{var r;w()(r=i()(pe).call(pe,(e=>e.join("@@")))).call(r,e.join("@@"))>-1||(pe.push(e),pe.system=t,fe())};function de(e,t,r,n,o){return{type:$,payload:{path:e,value:n,paramName:t,paramIn:r,isXml:o}}}function me(e,t,r,n){return{type:$,payload:{path:e,param:t,value:r,isXml:n}}}const ge=(e,t)=>({type:re,payload:{path:e,value:t}}),ve=()=>({type:re,payload:{path:[],value:(0,I.Map)()}}),ye=(e,t)=>({type:H,payload:{pathMethod:e,isOAS3:t}}),be=(e,t,r,n)=>({type:W,payload:{pathMethod:e,paramName:t,paramIn:r,includeEmptyValue:n}});function we(e){return{type:X,payload:{pathMethod:e}}}function Ee(e,t){return{type:ee,payload:{path:e,value:t,key:"consumes_value"}}}function xe(e,t){return{type:ee,payload:{path:e,value:t,key:"produces_value"}}}const _e=(e,t,r)=>({payload:{path:e,method:t,res:r},type:J}),Se=(e,t,r)=>({payload:{path:e,method:t,req:r},type:K}),Ae=(e,t,r)=>({payload:{path:e,method:t,req:r},type:G}),ke=e=>({payload:e,type:Z}),Ce=e=>t=>{let{fn:r,specActions:n,specSelectors:a,getConfigs:s,oas3Selectors:l}=t,{pathName:u,method:c,operation:p}=e,{requestInterceptor:f,responseInterceptor:h}=s(),d=p.toJS();var m,v;p&&p.get("parameters")&&x()(m=g()(v=p.get("parameters")).call(v,(e=>e&&!0===e.get("allowEmptyValue")))).call(m,(t=>{if(a.parameterInclusionSettingFor([u,c],t.get("name"),t.get("in"))){e.parameters=e.parameters||{};const r=(0,z.cz)(t,e.parameters);(!r||r&&0===r.size)&&(e.parameters[t.get("name")]="")}}));if(e.contextUrl=T()(a.url()).toString(),d&&d.operationId?e.operationId=d.operationId:d&&u&&c&&(e.operationId=r.opId(d,u,c)),a.isOAS3()){const t=`${u}:${c}`;e.server=l.selectedServer(t)||l.selectedServer();const r=l.serverVariables({server:e.server,namespace:t}).toJS(),n=l.serverVariables({server:e.server}).toJS();e.serverVariables=S()(r).length?r:n,e.requestContentType=l.requestContentType(u,c),e.responseContentType=l.responseContentType(u,c)||"*/*";const a=l.requestBodyValue(u,c),s=l.requestBodyInclusionSetting(u,c);var y;if(a&&a.toJS)e.requestBody=g()(y=i()(a).call(a,(e=>I.Map.isMap(e)?e.get("value"):e))).call(y,((e,t)=>(o()(e)?0!==e.length:!(0,z.O2)(e))||s.get(t))).toJS();else e.requestBody=a}let b=k()({},e);b=r.buildRequest(b),n.setRequest(e.pathName,e.method,b);e.requestInterceptor=async t=>{let r=await f.apply(void 0,[t]),o=k()({},r);return n.setMutatedRequest(e.pathName,e.method,o),r},e.responseInterceptor=h;const w=O()();return r.execute(e).then((t=>{t.duration=O()()-w,n.setResponse(e.pathName,e.method,t)})).catch((t=>{"Failed to fetch"===t.message&&(t.name="",t.message='**Failed to fetch.** \n**Possible Reasons:** \n - CORS \n - Network Failure \n - URL scheme must be "http" or "https" for CORS request.'),n.setResponse(e.pathName,e.method,{error:!0,err:(0,P.serializeError)(t)})}))},Oe=function(){let{path:e,method:t,...r}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return n=>{let{fn:{fetch:o},specSelectors:a,specActions:i}=n,s=a.specJsonWithResolvedSubtrees().toJS(),l=a.operationScheme(e,t),{requestContentType:u,responseContentType:c}=a.contentTypeValues([e,t]).toJS(),p=/xml/i.test(u),f=a.parameterValues([e,t],p).toJS();return i.executeRequest({...r,fetch:o,spec:s,pathName:e,method:t,parameters:f,requestContentType:u,scheme:l,responseContentType:c})}};function je(e,t){return{type:Y,payload:{path:e,method:t}}}function Ie(e,t){return{type:Q,payload:{path:e,method:t}}}function Ne(e,t,r){return{type:ne,payload:{scheme:e,path:t,method:r}}}},37038:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>s});var n=r(20032),o=r(51228),a=r(33881),i=r(77508);function s(){return{statePlugins:{spec:{wrapActions:i,reducers:n.default,actions:o,selectors:a}}}}},20032:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>d});var n=r(24282),o=r.n(n),a=r(97606),i=r.n(a),s=r(76986),l=r.n(s),u=r(43393),c=r(90242),p=r(27504),f=r(33881),h=r(51228);const d={[h.UPDATE_SPEC]:(e,t)=>"string"==typeof t.payload?e.set("spec",t.payload):e,[h.UPDATE_URL]:(e,t)=>e.set("url",t.payload+""),[h.UPDATE_JSON]:(e,t)=>e.set("json",(0,c.oG)(t.payload)),[h.UPDATE_RESOLVED]:(e,t)=>e.setIn(["resolved"],(0,c.oG)(t.payload)),[h.UPDATE_RESOLVED_SUBTREE]:(e,t)=>{const{value:r,path:n}=t.payload;return e.setIn(["resolvedSubtrees",...n],(0,c.oG)(r))},[h.UPDATE_PARAM]:(e,t)=>{let{payload:r}=t,{path:n,paramName:o,paramIn:a,param:i,value:s,isXml:l}=r,u=i?(0,c.V9)(i):`${a}.${o}`;const p=l?"value_xml":"value";return e.setIn(["meta","paths",...n,"parameters",u,p],s)},[h.UPDATE_EMPTY_PARAM_INCLUSION]:(e,t)=>{let{payload:r}=t,{pathMethod:n,paramName:o,paramIn:a,includeEmptyValue:i}=r;if(!o||!a)return console.warn("Warning: UPDATE_EMPTY_PARAM_INCLUSION could not generate a paramKey."),e;const s=`${a}.${o}`;return e.setIn(["meta","paths",...n,"parameter_inclusions",s],i)},[h.VALIDATE_PARAMS]:(e,t)=>{let{payload:{pathMethod:r,isOAS3:n}}=t;const a=(0,f.specJsonWithResolvedSubtrees)(e).getIn(["paths",...r]),i=(0,f.parameterValues)(e,r).toJS();return e.updateIn(["meta","paths",...r,"parameters"],(0,u.fromJS)({}),(t=>{var s;return o()(s=a.get("parameters",(0,u.List)())).call(s,((t,o)=>{const a=(0,c.cz)(o,i),s=(0,f.parameterInclusionSettingFor)(e,r,o.get("name"),o.get("in")),l=(0,c.Ik)(o,a,{bypassRequiredCheck:s,isOAS3:n});return t.setIn([(0,c.V9)(o),"errors"],(0,u.fromJS)(l))}),t)}))},[h.CLEAR_VALIDATE_PARAMS]:(e,t)=>{let{payload:{pathMethod:r}}=t;return e.updateIn(["meta","paths",...r,"parameters"],(0,u.fromJS)([]),(e=>i()(e).call(e,(e=>e.set("errors",(0,u.fromJS)([]))))))},[h.SET_RESPONSE]:(e,t)=>{let r,{payload:{res:n,path:o,method:a}}=t;r=n.error?l()({error:!0,name:n.err.name,message:n.err.message,statusCode:n.err.statusCode},n.err.response):n,r.headers=r.headers||{};let i=e.setIn(["responses",o,a],(0,c.oG)(r));return p.Z.Blob&&n.data instanceof p.Z.Blob&&(i=i.setIn(["responses",o,a,"text"],n.data)),i},[h.SET_REQUEST]:(e,t)=>{let{payload:{req:r,path:n,method:o}}=t;return e.setIn(["requests",n,o],(0,c.oG)(r))},[h.SET_MUTATED_REQUEST]:(e,t)=>{let{payload:{req:r,path:n,method:o}}=t;return e.setIn(["mutatedRequests",n,o],(0,c.oG)(r))},[h.UPDATE_OPERATION_META_VALUE]:(e,t)=>{let{payload:{path:r,value:n,key:o}}=t,a=["paths",...r],i=["meta","paths",...r];return e.getIn(["json",...a])||e.getIn(["resolved",...a])||e.getIn(["resolvedSubtrees",...a])?e.setIn([...i,o],(0,u.fromJS)(n)):e},[h.CLEAR_RESPONSE]:(e,t)=>{let{payload:{path:r,method:n}}=t;return e.deleteIn(["responses",r,n])},[h.CLEAR_REQUEST]:(e,t)=>{let{payload:{path:r,method:n}}=t;return e.deleteIn(["requests",r,n])},[h.SET_SCHEME]:(e,t)=>{let{payload:{scheme:r,path:n,method:o}}=t;return n&&o?e.setIn(["scheme",n,o],r):n||o?void 0:e.setIn(["scheme","_defaultScheme"],r)}}},33881:(e,t,r)=>{"use strict";r.r(t),r.d(t,{lastError:()=>O,url:()=>j,specStr:()=>I,specSource:()=>N,specJson:()=>T,specResolved:()=>P,specResolvedSubtree:()=>R,specJsonWithResolvedSubtrees:()=>D,spec:()=>L,isOAS3:()=>B,info:()=>F,externalDocs:()=>z,version:()=>U,semver:()=>q,paths:()=>V,operations:()=>$,consumes:()=>W,produces:()=>H,security:()=>J,securityDefinitions:()=>K,findDefinition:()=>G,definitions:()=>Z,basePath:()=>Y,host:()=>Q,schemes:()=>X,operationsWithRootInherited:()=>ee,tags:()=>te,tagDetails:()=>re,operationsWithTags:()=>ne,taggedOperations:()=>oe,responses:()=>ae,requests:()=>ie,mutatedRequests:()=>se,responseFor:()=>le,requestFor:()=>ue,mutatedRequestFor:()=>ce,allowTryItOutFor:()=>pe,parameterWithMetaByIdentity:()=>fe,parameterInclusionSettingFor:()=>he,parameterWithMeta:()=>de,operationWithMeta:()=>me,getParameter:()=>ge,hasHost:()=>ve,parameterValues:()=>ye,parametersIncludeIn:()=>be,parametersIncludeType:()=>we,contentTypeValues:()=>Ee,currentProducesFor:()=>xe,producesOptionsFor:()=>_e,consumesOptionsFor:()=>Se,operationScheme:()=>Ae,canExecuteScheme:()=>ke,validateBeforeExecute:()=>Ce,getOAS3RequiredRequestBodyContentType:()=>Oe,isMediaTypeSchemaPropertiesEqual:()=>je});var n=r(24278),o=r.n(n),a=r(86),i=r.n(a),s=r(11882),l=r.n(s),u=r(97606),c=r.n(u),p=r(14418),f=r.n(p),h=r(51679),d=r.n(h),m=r(24282),g=r.n(m),v=r(2578),y=r.n(v),b=r(92039),w=r.n(b),E=r(58309),x=r.n(E),_=r(20573),S=r(90242),A=r(43393);const k=["get","put","post","delete","options","head","patch","trace"],C=e=>e||(0,A.Map)(),O=(0,_.P1)(C,(e=>e.get("lastError"))),j=(0,_.P1)(C,(e=>e.get("url"))),I=(0,_.P1)(C,(e=>e.get("spec")||"")),N=(0,_.P1)(C,(e=>e.get("specSource")||"not-editor")),T=(0,_.P1)(C,(e=>e.get("json",(0,A.Map)()))),P=(0,_.P1)(C,(e=>e.get("resolved",(0,A.Map)()))),R=(e,t)=>e.getIn(["resolvedSubtrees",...t],void 0),M=(e,t)=>A.Map.isMap(e)&&A.Map.isMap(t)?t.get("$$ref")?t:(0,A.OrderedMap)().mergeWith(M,e,t):t,D=(0,_.P1)(C,(e=>(0,A.OrderedMap)().mergeWith(M,e.get("json"),e.get("resolvedSubtrees")))),L=e=>T(e),B=(0,_.P1)(L,(()=>!1)),F=(0,_.P1)(L,(e=>Ie(e&&e.get("info")))),z=(0,_.P1)(L,(e=>Ie(e&&e.get("externalDocs")))),U=(0,_.P1)(F,(e=>e&&e.get("version"))),q=(0,_.P1)(U,(e=>{var t;return o()(t=/v?([0-9]*)\.([0-9]*)\.([0-9]*)/i.exec(e)).call(t,1)})),V=(0,_.P1)(D,(e=>e.get("paths"))),$=(0,_.P1)(V,(e=>{if(!e||e.size<1)return(0,A.List)();let t=(0,A.List)();return e&&i()(e)?(i()(e).call(e,((e,r)=>{if(!e||!i()(e))return{};i()(e).call(e,((e,n)=>{l()(k).call(k,n)<0||(t=t.push((0,A.fromJS)({path:r,method:n,operation:e,id:`${n}-${r}`})))}))})),t):(0,A.List)()})),W=(0,_.P1)(L,(e=>(0,A.Set)(e.get("consumes")))),H=(0,_.P1)(L,(e=>(0,A.Set)(e.get("produces")))),J=(0,_.P1)(L,(e=>e.get("security",(0,A.List)()))),K=(0,_.P1)(L,(e=>e.get("securityDefinitions"))),G=(e,t)=>{const r=e.getIn(["resolvedSubtrees","definitions",t],null),n=e.getIn(["json","definitions",t],null);return r||n||null},Z=(0,_.P1)(L,(e=>{const t=e.get("definitions");return A.Map.isMap(t)?t:(0,A.Map)()})),Y=(0,_.P1)(L,(e=>e.get("basePath"))),Q=(0,_.P1)(L,(e=>e.get("host"))),X=(0,_.P1)(L,(e=>e.get("schemes",(0,A.Map)()))),ee=(0,_.P1)($,W,H,((e,t,r)=>c()(e).call(e,(e=>e.update("operation",(e=>{if(e){if(!A.Map.isMap(e))return;return e.withMutations((e=>(e.get("consumes")||e.update("consumes",(e=>(0,A.Set)(e).merge(t))),e.get("produces")||e.update("produces",(e=>(0,A.Set)(e).merge(r))),e)))}return(0,A.Map)()})))))),te=(0,_.P1)(L,(e=>{const t=e.get("tags",(0,A.List)());return A.List.isList(t)?f()(t).call(t,(e=>A.Map.isMap(e))):(0,A.List)()})),re=(e,t)=>{var r;let n=te(e)||(0,A.List)();return d()(r=f()(n).call(n,A.Map.isMap)).call(r,(e=>e.get("name")===t),(0,A.Map)())},ne=(0,_.P1)(ee,te,((e,t)=>g()(e).call(e,((e,t)=>{let r=(0,A.Set)(t.getIn(["operation","tags"]));return r.count()<1?e.update("default",(0,A.List)(),(e=>e.push(t))):g()(r).call(r,((e,r)=>e.update(r,(0,A.List)(),(e=>e.push(t)))),e)}),g()(t).call(t,((e,t)=>e.set(t.get("name"),(0,A.List)())),(0,A.OrderedMap)())))),oe=e=>t=>{var r;let{getConfigs:n}=t,{tagsSorter:o,operationsSorter:a}=n();return c()(r=ne(e).sortBy(((e,t)=>t),((e,t)=>{let r="function"==typeof o?o:S.wh.tagsSorter[o];return r?r(e,t):null}))).call(r,((t,r)=>{let n="function"==typeof a?a:S.wh.operationsSorter[a],o=n?y()(t).call(t,n):t;return(0,A.Map)({tagDetails:re(e,r),operations:o})}))},ae=(0,_.P1)(C,(e=>e.get("responses",(0,A.Map)()))),ie=(0,_.P1)(C,(e=>e.get("requests",(0,A.Map)()))),se=(0,_.P1)(C,(e=>e.get("mutatedRequests",(0,A.Map)()))),le=(e,t,r)=>ae(e).getIn([t,r],null),ue=(e,t,r)=>ie(e).getIn([t,r],null),ce=(e,t,r)=>se(e).getIn([t,r],null),pe=()=>!0,fe=(e,t,r)=>{const n=D(e).getIn(["paths",...t,"parameters"],(0,A.OrderedMap)()),o=e.getIn(["meta","paths",...t,"parameters"],(0,A.OrderedMap)()),a=c()(n).call(n,(e=>{const t=o.get(`${r.get("in")}.${r.get("name")}`),n=o.get(`${r.get("in")}.${r.get("name")}.hash-${r.hashCode()}`);return(0,A.OrderedMap)().merge(e,t,n)}));return d()(a).call(a,(e=>e.get("in")===r.get("in")&&e.get("name")===r.get("name")),(0,A.OrderedMap)())},he=(e,t,r,n)=>{const o=`${n}.${r}`;return e.getIn(["meta","paths",...t,"parameter_inclusions",o],!1)},de=(e,t,r,n)=>{const o=D(e).getIn(["paths",...t,"parameters"],(0,A.OrderedMap)()),a=d()(o).call(o,(e=>e.get("in")===n&&e.get("name")===r),(0,A.OrderedMap)());return fe(e,t,a)},me=(e,t,r)=>{var n;const o=D(e).getIn(["paths",t,r],(0,A.OrderedMap)()),a=e.getIn(["meta","paths",t,r],(0,A.OrderedMap)()),i=c()(n=o.get("parameters",(0,A.List)())).call(n,(n=>fe(e,[t,r],n)));return(0,A.OrderedMap)().merge(o,a).set("parameters",i)};function ge(e,t,r,n){t=t||[];let o=e.getIn(["meta","paths",...t,"parameters"],(0,A.fromJS)([]));return d()(o).call(o,(e=>A.Map.isMap(e)&&e.get("name")===r&&e.get("in")===n))||(0,A.Map)()}const ve=(0,_.P1)(L,(e=>{const t=e.get("host");return"string"==typeof t&&t.length>0&&"/"!==t[0]}));function ye(e,t,r){t=t||[];let n=me(e,...t).get("parameters",(0,A.List)());return g()(n).call(n,((e,t)=>{let n=r&&"body"===t.get("in")?t.get("value_xml"):t.get("value");return e.set((0,S.V9)(t,{allowHashes:!1}),n)}),(0,A.fromJS)({}))}function be(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(A.List.isList(e))return w()(e).call(e,(e=>A.Map.isMap(e)&&e.get("in")===t))}function we(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(A.List.isList(e))return w()(e).call(e,(e=>A.Map.isMap(e)&&e.get("type")===t))}function Ee(e,t){t=t||[];let r=D(e).getIn(["paths",...t],(0,A.fromJS)({})),n=e.getIn(["meta","paths",...t],(0,A.fromJS)({})),o=xe(e,t);const a=r.get("parameters")||new A.List,i=n.get("consumes_value")?n.get("consumes_value"):we(a,"file")?"multipart/form-data":we(a,"formData")?"application/x-www-form-urlencoded":void 0;return(0,A.fromJS)({requestContentType:i,responseContentType:o})}function xe(e,t){t=t||[];const r=D(e).getIn(["paths",...t],null);if(null===r)return;const n=e.getIn(["meta","paths",...t,"produces_value"],null),o=r.getIn(["produces",0],null);return n||o||"application/json"}function _e(e,t){t=t||[];const r=D(e),n=r.getIn(["paths",...t],null);if(null===n)return;const[o]=t,a=n.get("produces",null),i=r.getIn(["paths",o,"produces"],null),s=r.getIn(["produces"],null);return a||i||s}function Se(e,t){t=t||[];const r=D(e),n=r.getIn(["paths",...t],null);if(null===n)return;const[o]=t,a=n.get("consumes",null),i=r.getIn(["paths",o,"consumes"],null),s=r.getIn(["consumes"],null);return a||i||s}const Ae=(e,t,r)=>{let n=e.get("url").match(/^([a-z][a-z0-9+\-.]*):/),o=x()(n)?n[1]:null;return e.getIn(["scheme",t,r])||e.getIn(["scheme","_defaultScheme"])||o||""},ke=(e,t,r)=>{var n;return l()(n=["http","https"]).call(n,Ae(e,t,r))>-1},Ce=(e,t)=>{t=t||[];let r=e.getIn(["meta","paths",...t,"parameters"],(0,A.fromJS)([])),n=!0;return i()(r).call(r,(e=>{let t=e.get("errors");t&&t.count()&&(n=!1)})),n},Oe=(e,t)=>{var r;let n={requestBody:!1,requestContentType:{}},o=e.getIn(["resolvedSubtrees","paths",...t,"requestBody"],(0,A.fromJS)([]));return o.size<1||(o.getIn(["required"])&&(n.requestBody=o.getIn(["required"])),i()(r=o.getIn(["content"]).entrySeq()).call(r,(e=>{const t=e[0];if(e[1].getIn(["schema","required"])){const r=e[1].getIn(["schema","required"]).toJS();n.requestContentType[t]=r}}))),n},je=(e,t,r,n)=>{if((r||n)&&r===n)return!0;let o=e.getIn(["resolvedSubtrees","paths",...t,"requestBody","content"],(0,A.fromJS)([]));if(o.size<2||!r||!n)return!1;let a=o.getIn([r,"schema","properties"],(0,A.fromJS)([])),i=o.getIn([n,"schema","properties"],(0,A.fromJS)([]));return!!a.equals(i)};function Ie(e){return A.Map.isMap(e)?e:new A.Map}},77508:(e,t,r)=>{"use strict";r.r(t),r.d(t,{updateSpec:()=>u,updateJsonSpec:()=>c,executeRequest:()=>p,validateParams:()=>f});var n=r(28222),o=r.n(n),a=r(86),i=r.n(a),s=r(27361),l=r.n(s);const u=(e,t)=>{let{specActions:r}=t;return function(){e(...arguments),r.parseToJson(...arguments)}},c=(e,t)=>{let{specActions:r}=t;return function(){for(var t=arguments.length,n=new Array(t),a=0;a{l()(u,[e]).$ref&&r.requestResolvedSubtree(["paths",e])})),r.requestResolvedSubtree(["components","securitySchemes"])}},p=(e,t)=>{let{specActions:r}=t;return t=>(r.logRequest(t),e(t))},f=(e,t)=>{let{specSelectors:r}=t;return t=>e(t,r.isOAS3())}},34852:(e,t,r)=>{"use strict";r.r(t),r.d(t,{loaded:()=>n});const n=(e,t)=>function(){e(...arguments);const r=t.getConfigs().withCredentials;void 0!==r&&(t.fn.fetch.withCredentials="string"==typeof r?"true"===r:!!r)}},48792:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>qr});var n={};r.r(n),r.d(n,{JsonPatchError:()=>Fe,_areEquals:()=>Ge,applyOperation:()=>$e,applyPatch:()=>We,applyReducer:()=>He,deepClone:()=>ze,getValueByPointer:()=>Ve,validate:()=>Ke,validator:()=>Je});var o={};r.r(o),r.d(o,{compare:()=>nt,generate:()=>tt,observe:()=>et,unobserve:()=>Xe});var a={};r.r(a),r.d(a,{cookie:()=>kr,header:()=>Ar,path:()=>xr,query:()=>_r});var i=r(80093),s=r.n(i),l=r(30222),u=r.n(l),c=r(36594),p=r.n(c),f=r(20474),h=r.n(f),d=r(67375),m=r.n(d),g=r(58118),v=r.n(g),y=r(74386),b=r.n(y),w=r(25110),E=r.n(w),x=r(35627),_=r.n(x),S=r(97606),A=r.n(S),k=r(28222),C=r.n(k),O=r(39022),j=r.n(O),I=r(2018),N=r.n(I),T=r(14418),P=r.n(T),R=(r(31905),r(92495)),M=r.n(R),D=r(1272);const L="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:window,{FormData:B,Blob:F,File:z}=L;var U=r(15687),q=r.n(U),V=r(24278),$=r.n(V),W=function(e){return":/?#[]@!$&'()*+,;=".indexOf(e)>-1},H=function(e){return/^[a-z0-9\-._~]+$/i.test(e)};function J(e){var t,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=r.escape,o=arguments.length>2?arguments[2]:void 0;return"number"==typeof e&&(e=e.toString()),"string"==typeof e&&e.length&&n?o?JSON.parse(e):A()(t=q()(e)).call(t,(function(e){var t,r;if(H(e))return e;if(W(e)&&"unsafe"===n)return e;var o=new TextEncoder;return A()(t=A()(r=E()(o.encode(e))).call(r,(function(e){var t;return $()(t="0".concat(e.toString(16).toUpperCase())).call(t,-2)}))).call(t,(function(e){return"%".concat(e)})).join("")})).join(""):e}function K(e){var t=e.value;return Array.isArray(t)?function(e){var t=e.key,r=e.value,n=e.style,o=e.explode,a=e.escape,i=function(e){return J(e,{escape:a})};if("simple"===n)return A()(r).call(r,(function(e){return i(e)})).join(",");if("label"===n)return".".concat(A()(r).call(r,(function(e){return i(e)})).join("."));if("matrix"===n)return A()(r).call(r,(function(e){return i(e)})).reduce((function(e,r){var n,a,i;return!e||o?j()(a=j()(i="".concat(e||"",";")).call(i,t,"=")).call(a,r):j()(n="".concat(e,",")).call(n,r)}),"");if("form"===n){var s=o?"&".concat(t,"="):",";return A()(r).call(r,(function(e){return i(e)})).join(s)}if("spaceDelimited"===n){var l=o?"".concat(t,"="):"";return A()(r).call(r,(function(e){return i(e)})).join(" ".concat(l))}if("pipeDelimited"===n){var u=o?"".concat(t,"="):"";return A()(r).call(r,(function(e){return i(e)})).join("|".concat(u))}return}(e):"object"===h()(t)?function(e){var t=e.key,r=e.value,n=e.style,o=e.explode,a=e.escape,i=function(e){return J(e,{escape:a})},s=C()(r);if("simple"===n)return s.reduce((function(e,t){var n,a,s,l=i(r[t]),u=o?"=":",",c=e?"".concat(e,","):"";return j()(n=j()(a=j()(s="".concat(c)).call(s,t)).call(a,u)).call(n,l)}),"");if("label"===n)return s.reduce((function(e,t){var n,a,s,l=i(r[t]),u=o?"=":".",c=e?"".concat(e,"."):".";return j()(n=j()(a=j()(s="".concat(c)).call(s,t)).call(a,u)).call(n,l)}),"");if("matrix"===n&&o)return s.reduce((function(e,t){var n,o,a=i(r[t]),s=e?"".concat(e,";"):";";return j()(n=j()(o="".concat(s)).call(o,t,"=")).call(n,a)}),"");if("matrix"===n)return s.reduce((function(e,n){var o,a,s=i(r[n]),l=e?"".concat(e,","):";".concat(t,"=");return j()(o=j()(a="".concat(l)).call(a,n,",")).call(o,s)}),"");if("form"===n)return s.reduce((function(e,t){var n,a,s,l,u=i(r[t]),c=e?j()(n="".concat(e)).call(n,o?"&":","):"",p=o?"=":",";return j()(a=j()(s=j()(l="".concat(c)).call(l,t)).call(s,p)).call(a,u)}),"");return}(e):function(e){var t,r=e.key,n=e.value,o=e.style,a=e.escape,i=function(e){return J(e,{escape:a})};if("simple"===o)return i(n);if("label"===o)return".".concat(i(n));if("matrix"===o)return j()(t=";".concat(r,"=")).call(t,i(n));if("form"===o)return i(n);if("deepObject"===o)return i(n,{},!0);return}(e)}const G=function(e,t){t.body=e};var Z={serializeRes:te,mergeInQueryOrForm:fe};function Y(e){return Q.apply(this,arguments)}function Q(){return Q=s()(u().mark((function e(t){var r,n,o,a,i,s=arguments;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=s.length>1&&void 0!==s[1]?s[1]:{},"object"===h()(t)&&(t=(r=t).url),r.headers=r.headers||{},Z.mergeInQueryOrForm(r),r.headers&&C()(r.headers).forEach((function(e){var t=r.headers[e];"string"==typeof t&&(r.headers[e]=t.replace(/\n+/g," "))})),!r.requestInterceptor){e.next=12;break}return e.next=8,r.requestInterceptor(r);case 8:if(e.t0=e.sent,e.t0){e.next=11;break}e.t0=r;case 11:r=e.t0;case 12:return n=r.headers["content-type"]||r.headers["Content-Type"],/multipart\/form-data/i.test(n)&&r.body instanceof B&&(delete r.headers["content-type"],delete r.headers["Content-Type"]),e.prev=14,e.next=17,(r.userFetch||fetch)(r.url,r);case 17:return o=e.sent,e.next=20,Z.serializeRes(o,t,r);case 20:if(o=e.sent,!r.responseInterceptor){e.next=28;break}return e.next=24,r.responseInterceptor(o);case 24:if(e.t1=e.sent,e.t1){e.next=27;break}e.t1=o;case 27:o=e.t1;case 28:e.next=39;break;case 30:if(e.prev=30,e.t2=e.catch(14),o){e.next=34;break}throw e.t2;case 34:throw(a=new Error(o.statusText||"response status is ".concat(o.status))).status=o.status,a.statusCode=o.status,a.responseError=e.t2,a;case 39:if(o.ok){e.next=45;break}throw(i=new Error(o.statusText||"response status is ".concat(o.status))).status=o.status,i.statusCode=o.status,i.response=o,i;case 45:return e.abrupt("return",o);case 46:case"end":return e.stop()}}),e,null,[[14,30]])}))),Q.apply(this,arguments)}var X=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return/(json|xml|yaml|text)\b/.test(e)};function ee(e,t){return t&&(0===t.indexOf("application/json")||t.indexOf("+json")>0)?JSON.parse(e):D.ZP.load(e)}function te(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=r.loadSpec,o=void 0!==n&&n,a={ok:e.ok,url:e.url||t,status:e.status,statusText:e.statusText,headers:ne(e.headers)},i=a.headers["content-type"],s=o||X(i),l=s?e.text:e.blob||e.buffer;return l.call(e).then((function(e){if(a.text=e,a.data=e,s)try{var t=ee(e,i);a.body=t,a.obj=t}catch(e){a.parseError=e}return a}))}function re(e){return v()(e).call(e,", ")?e.split(", "):e}function ne(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return"function"!=typeof b()(e)?{}:E()(b()(e).call(e)).reduce((function(e,t){var r=m()(t,2),n=r[0],o=r[1];return e[n]=re(o),e}),{})}function oe(e,t){return t||"undefined"==typeof navigator||(t=navigator),t&&"ReactNative"===t.product?!(!e||"object"!==h()(e)||"string"!=typeof e.uri):void 0!==z&&e instanceof z||(void 0!==F&&e instanceof F||(!!ArrayBuffer.isView(e)||null!==e&&"object"===h()(e)&&"function"==typeof e.pipe))}function ae(e,t){return Array.isArray(e)&&e.some((function(e){return oe(e,t)}))}var ie={form:",",spaceDelimited:"%20",pipeDelimited:"|"},se={csv:",",ssv:"%20",tsv:"%09",pipes:"|"};function le(e,t){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=t.collectionFormat,o=t.allowEmptyValue,a=t.serializationOption,i=t.encoding,s="object"!==h()(t)||Array.isArray(t)?t:t.value,l=r?function(e){return e.toString()}:function(e){return encodeURIComponent(e)},u=l(e);if(void 0===s&&o)return[[u,""]];if(oe(s)||ae(s))return[[u,s]];if(a)return ue(e,s,r,a);if(i){if([h()(i.style),h()(i.explode),h()(i.allowReserved)].some((function(e){return"undefined"!==e}))){var c=i.style,p=i.explode,f=i.allowReserved;return ue(e,s,r,{style:c,explode:p,allowReserved:f})}if(i.contentType){if("application/json"===i.contentType){var d="string"==typeof s?s:_()(s);return[[u,l(d)]]}return[[u,l(s.toString())]]}return"object"!==h()(s)?[[u,l(s)]]:Array.isArray(s)&&s.every((function(e){return"object"!==h()(e)}))?[[u,A()(s).call(s,l).join(",")]]:[[u,l(_()(s))]]}return"object"!==h()(s)?[[u,l(s)]]:Array.isArray(s)?"multi"===n?[[u,A()(s).call(s,l)]]:[[u,A()(s).call(s,l).join(se[n||"csv"])]]:[[u,""]]}function ue(e,t,r,n){var o,a,i,s=n.style||"form",l=void 0===n.explode?"form"===s:n.explode,u=!r&&(n&&n.allowReserved?"unsafe":"reserved"),c=function(e){return J(e,{escape:u})},p=r?function(e){return e}:function(e){return J(e,{escape:u})};return"object"!==h()(t)?[[p(e),c(t)]]:Array.isArray(t)?l?[[p(e),A()(t).call(t,c)]]:[[p(e),A()(t).call(t,c).join(ie[s])]]:"deepObject"===s?A()(a=C()(t)).call(a,(function(r){var n;return[p(j()(n="".concat(e,"[")).call(n,r,"]")),c(t[r])]})):l?A()(i=C()(t)).call(i,(function(e){return[p(e),c(t[e])]})):[[p(e),A()(o=C()(t)).call(o,(function(e){var r;return[j()(r="".concat(p(e),",")).call(r,c(t[e]))]})).join(",")]]}function ce(e){return N()(e).reduce((function(e,t){var r,n=m()(t,2),o=n[0],a=n[1],i=p()(le(o,a,!0));try{for(i.s();!(r=i.n()).done;){var s=m()(r.value,2),l=s[0],u=s[1];if(Array.isArray(u)){var c,f=p()(u);try{for(f.s();!(c=f.n()).done;){var h=c.value;if(ArrayBuffer.isView(h)){var d=new F([h]);e.append(l,d)}else e.append(l,h)}}catch(e){f.e(e)}finally{f.f()}}else if(ArrayBuffer.isView(u)){var g=new F([u]);e.append(l,g)}else e.append(l,u)}}catch(e){i.e(e)}finally{i.f()}return e}),new B)}function pe(e){var t=C()(e).reduce((function(t,r){var n,o=p()(le(r,e[r]));try{for(o.s();!(n=o.n()).done;){var a=m()(n.value,2),i=a[0],s=a[1];t[i]=s}}catch(e){o.e(e)}finally{o.f()}return t}),{});return M().stringify(t,{encode:!1,indices:!1})||""}function fe(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.url,r=void 0===t?"":t,n=e.query,o=e.form,a=function(){for(var e=arguments.length,t=new Array(e),r=0;r=48&&t<=57))return!1;r++}return!0}function Re(e){return-1===e.indexOf("/")&&-1===e.indexOf("~")?e:e.replace(/~/g,"~0").replace(/\//g,"~1")}function Me(e){return e.replace(/~1/g,"/").replace(/~0/g,"~")}function De(e){if(void 0===e)return!0;if(e)if(Array.isArray(e)){for(var t=0,r=e.length;t0&&"constructor"==s[u-1]))throw new TypeError("JSON-Patch: modifying `__proto__` or `constructor/prototype` prop is banned for security reasons, if this was on purpose, please set `banPrototypeModifications` flag false and pass it to this function. More info in fast-json-patch README");if(r&&void 0===p&&(void 0===l[f]?p=s.slice(0,u).join("/"):u==c-1&&(p=t.path),void 0!==p&&h(t,0,e,p)),u++,Array.isArray(l)){if("-"===f)f=l.length;else{if(r&&!Pe(f))throw new Fe("Expected an unsigned base-10 integer value, making the new referenced value the array element with the zero-based index","OPERATION_PATH_ILLEGAL_ARRAY_INDEX",a,t,e);Pe(f)&&(f=~~f)}if(u>=c){if(r&&"add"===t.op&&f>l.length)throw new Fe("The specified index MUST NOT be greater than the number of elements in the array","OPERATION_VALUE_OUT_OF_BOUNDS",a,t,e);if(!1===(i=qe[t.op].call(t,l,f,e)).test)throw new Fe("Test operation failed","TEST_OPERATION_FAILED",a,t,e);return i}}else if(u>=c){if(!1===(i=Ue[t.op].call(t,l,f,e)).test)throw new Fe("Test operation failed","TEST_OPERATION_FAILED",a,t,e);return i}if(l=l[f],r&&u0)throw new Fe('Operation `path` property must start with "/"',"OPERATION_PATH_INVALID",t,e,r);if(("move"===e.op||"copy"===e.op)&&"string"!=typeof e.from)throw new Fe("Operation `from` property is not present (applicable in `move` and `copy` operations)","OPERATION_FROM_REQUIRED",t,e,r);if(("add"===e.op||"replace"===e.op||"test"===e.op)&&void 0===e.value)throw new Fe("Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)","OPERATION_VALUE_REQUIRED",t,e,r);if(("add"===e.op||"replace"===e.op||"test"===e.op)&&De(e.value))throw new Fe("Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)","OPERATION_VALUE_CANNOT_CONTAIN_UNDEFINED",t,e,r);if(r)if("add"==e.op){var o=e.path.split("/").length,a=n.split("/").length;if(o!==a+1&&o!==a)throw new Fe("Cannot perform an `add` operation at the desired path","OPERATION_PATH_CANNOT_ADD",t,e,r)}else if("replace"===e.op||"remove"===e.op||"_get"===e.op){if(e.path!==n)throw new Fe("Cannot perform the operation at a path that does not exist","OPERATION_PATH_UNRESOLVABLE",t,e,r)}else if("move"===e.op||"copy"===e.op){var i=Ke([{op:"_get",path:e.from,value:void 0}],r);if(i&&"OPERATION_PATH_UNRESOLVABLE"===i.name)throw new Fe("Cannot perform the operation from a path that does not exist","OPERATION_FROM_UNRESOLVABLE",t,e,r)}}function Ke(e,t,r){try{if(!Array.isArray(e))throw new Fe("Patch sequence must be an array","SEQUENCE_NOT_AN_ARRAY");if(t)We(Te(t),Te(e),r||!0);else{r=r||Je;for(var n=0;n0&&(e.patches=[],e.callback&&e.callback(n)),n}function rt(e,t,r,n,o){if(t!==e){"function"==typeof t.toJSON&&(t=t.toJSON());for(var a=Ne(t),i=Ne(e),s=!1,l=i.length-1;l>=0;l--){var u=e[p=i[l]];if(!Ie(t,p)||void 0===t[p]&&void 0!==u&&!1===Array.isArray(t))Array.isArray(e)===Array.isArray(t)?(o&&r.push({op:"test",path:n+"/"+Re(p),value:Te(u)}),r.push({op:"remove",path:n+"/"+Re(p)}),s=!0):(o&&r.push({op:"test",path:n,value:e}),r.push({op:"replace",path:n,value:t}),!0);else{var c=t[p];"object"==typeof u&&null!=u&&"object"==typeof c&&null!=c&&Array.isArray(u)===Array.isArray(c)?rt(u,c,r,n+"/"+Re(p),o):u!==c&&(!0,o&&r.push({op:"test",path:n+"/"+Re(p),value:Te(u)}),r.push({op:"replace",path:n+"/"+Re(p),value:Te(c)}))}}if(s||a.length!=i.length)for(l=0;l0){var o=t(e,r[r.length-1],r);o&&(n=j()(n).call(n,o))}if(Array.isArray(e)){var a=A()(e).call(e,(function(e,n){return pt(e,t,j()(r).call(r,n))}));a&&(n=j()(n).call(n,a))}else if(mt(e)){var i,s=A()(i=C()(e)).call(i,(function(n){return pt(e[n],t,j()(r).call(r,n))}));s&&(n=j()(n).call(n,s))}return n=ht(n)}function ft(e){return Array.isArray(e)?e:[e]}function ht(e){var t;return j()(t=[]).apply(t,q()(A()(e).call(e,(function(e){return Array.isArray(e)?ht(e):e}))))}function dt(e){return P()(e).call(e,(function(e){return void 0!==e}))}function mt(e){return e&&"object"===h()(e)}function gt(e){return e&&"function"==typeof e}function vt(e){if(wt(e)){var t=e.op;return"add"===t||"remove"===t||"replace"===t}return!1}function yt(e){return vt(e)||wt(e)&&"mutation"===e.type}function bt(e){return yt(e)&&("add"===e.op||"replace"===e.op||"merge"===e.op||"mergeDeep"===e.op)}function wt(e){return e&&"object"===h()(e)}function Et(e,t){try{return Ve(e,t)}catch(e){return console.error(e),{}}}var xt=r(28886),_t=r.n(xt),St=r(37659),At=r.n(St),kt=r(8575);function Ct(e,t){function r(){Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack;for(var e=arguments.length,r=new Array(e),n=0;n-1&&-1===Nt.indexOf(r)||Tt.indexOf(n)>-1||Pt.some((function(e){return n.indexOf(e)>-1}))}function Mt(e,t){var r,n=e.split("#"),o=m()(n,2),a=o[0],i=o[1],s=kt.resolve(a||"",t||"");return i?j()(r="".concat(s,"#")).call(r,i):s}var Dt="application/json, application/yaml",Lt=/^([a-z]+:\/\/|\/\/)/i,Bt=Ct("JSONRefError",(function(e,t,r){this.originalError=r,Ee()(this,t||{})})),Ft={},zt=new(_t()),Ut=[function(e){return"paths"===e[0]&&"responses"===e[3]&&"examples"===e[5]},function(e){return"paths"===e[0]&&"responses"===e[3]&&"content"===e[5]&&"example"===e[7]},function(e){return"paths"===e[0]&&"responses"===e[3]&&"content"===e[5]&&"examples"===e[7]&&"value"===e[9]},function(e){return"paths"===e[0]&&"requestBody"===e[3]&&"content"===e[4]&&"example"===e[6]},function(e){return"paths"===e[0]&&"requestBody"===e[3]&&"content"===e[4]&&"examples"===e[6]&&"value"===e[8]},function(e){return"paths"===e[0]&&"parameters"===e[2]&&"example"===e[4]},function(e){return"paths"===e[0]&&"parameters"===e[3]&&"example"===e[5]},function(e){return"paths"===e[0]&&"parameters"===e[2]&&"examples"===e[4]&&"value"===e[6]},function(e){return"paths"===e[0]&&"parameters"===e[3]&&"examples"===e[5]&&"value"===e[7]},function(e){return"paths"===e[0]&&"parameters"===e[2]&&"content"===e[4]&&"example"===e[6]},function(e){return"paths"===e[0]&&"parameters"===e[2]&&"content"===e[4]&&"examples"===e[6]&&"value"===e[8]},function(e){return"paths"===e[0]&&"parameters"===e[3]&&"content"===e[4]&&"example"===e[7]},function(e){return"paths"===e[0]&&"parameters"===e[3]&&"content"===e[5]&&"examples"===e[7]&&"value"===e[9]}],qt={key:"$ref",plugin:function(e,t,r,n){var o=n.getInstance(),a=$()(r).call(r,0,-1);if(!Rt(a)&&!function(e){return Ut.some((function(t){return t(e)}))}(a)){var i=n.getContext(r).baseDoc;if("string"!=typeof e)return new Bt("$ref: must be a string (JSON-Ref)",{$ref:e,baseDoc:i,fullPath:r});var s,l,u,c=Jt(e),p=c[0],f=c[1]||"";try{s=i||p?Wt(p,i):null}catch(t){return Ht(t,{pointer:f,$ref:e,basePath:s,fullPath:r})}if(function(e,t,r,n){var o,a,i=zt.get(n);i||(i={},zt.set(n,i));var s=function(e){if(0===e.length)return"";return"/".concat(A()(e).call(e,Xt).join("/"))}(r),l=j()(o="".concat(t||"","#")).call(o,e),u=s.replace(/allOf\/\d+\/?/g,""),c=n.contextTree.get([]).baseDoc;if(t===c&&er(u,e))return!0;var p="",f=r.some((function(e){var t;return p=j()(t="".concat(p,"/")).call(t,Xt(e)),i[p]&&i[p].some((function(e){return er(e,l)||er(l,e)}))}));if(f)return!0;return void(i[u]=j()(a=i[u]||[]).call(a,l))}(f,s,a,n)&&!o.useCircularStructures){var h=Mt(e,s);return e===h?null:it.replace(r,h)}if(null==s?(u=Yt(f),void 0===(l=n.get(u))&&(l=new Bt("Could not resolve reference: ".concat(e),{pointer:f,$ref:e,baseDoc:i,fullPath:r}))):l=null!=(l=Kt(s,f)).__value?l.__value:l.catch((function(t){throw Ht(t,{pointer:f,$ref:e,baseDoc:i,fullPath:r})})),l instanceof Error)return[it.remove(r),l];var d=Mt(e,s),m=it.replace(a,l,{$$ref:d});if(s&&s!==i)return[m,it.context(a,{baseDoc:s})];try{if(!function(e,t){var r=[e];return t.path.reduce((function(e,t){return r.push(e[t]),e[t]}),e),n(t.value);function n(e){return it.isObject(e)&&(r.indexOf(e)>=0||C()(e).some((function(t){return n(e[t])})))}}(n.state,m)||o.useCircularStructures)return m}catch(e){return null}}}},Vt=Ee()(qt,{docCache:Ft,absoluteify:Wt,clearCache:function(e){void 0!==e?delete Ft[e]:C()(Ft).forEach((function(e){delete Ft[e]}))},JSONRefError:Bt,wrapError:Ht,getDoc:Gt,split:Jt,extractFromDoc:Kt,fetchJSON:function(e){return fetch(e,{headers:{Accept:Dt},loadSpec:!0}).then((function(e){return e.text()})).then((function(e){return D.ZP.load(e)}))},extract:Zt,jsonPointerToArray:Yt,unescapeJsonPointerToken:Qt});const $t=Vt;function Wt(e,t){if(!Lt.test(e)){var r;if(!t)throw new Bt(j()(r="Tried to resolve a relative URL, without having a basePath. path: '".concat(e,"' basePath: '")).call(r,t,"'"));return kt.resolve(t,e)}return e}function Ht(e,t){var r,n;e&&e.response&&e.response.body?r=j()(n="".concat(e.response.body.code," ")).call(n,e.response.body.message):r=e.message;return new Bt("Could not resolve reference: ".concat(r),t,e)}function Jt(e){return(e+"").split("#")}function Kt(e,t){var r=Ft[e];if(r&&!it.isPromise(r))try{var n=Zt(t,r);return Ee()(Ae().resolve(n),{__value:n})}catch(e){return Ae().reject(e)}return Gt(e).then((function(e){return Zt(t,e)}))}function Gt(e){var t=Ft[e];return t?it.isPromise(t)?t:Ae().resolve(t):(Ft[e]=Vt.fetchJSON(e).then((function(t){return Ft[e]=t,t})),Ft[e])}function Zt(e,t){var r=Yt(e);if(r.length<1)return t;var n=it.getIn(t,r);if(void 0===n)throw new Bt("Could not resolve pointer: ".concat(e," does not exist in document"),{pointer:e});return n}function Yt(e){var t;if("string"!=typeof e)throw new TypeError("Expected a string, got a ".concat(h()(e)));return"/"===e[0]&&(e=e.substr(1)),""===e?[]:A()(t=e.split("/")).call(t,Qt)}function Qt(e){return"string"!=typeof e?e:new(At())("=".concat(e.replace(/~1/g,"/").replace(/~0/g,"~"))).get("")}function Xt(e){var t,r=new(At())([["",e.replace(/~/g,"~0").replace(/\//g,"~1")]]);return $()(t=r.toString()).call(t,1)}function er(e,t){if(!(r=t)||"/"===r||"#"===r)return!0;var r,n=e.charAt(t.length),o=$()(t).call(t,-1);return 0===e.indexOf(t)&&(!n||"/"===n||"#"===n)&&"#"!==o}const tr={key:"allOf",plugin:function(e,t,r,n,o){if(!o.meta||!o.meta.$$ref){var a=$()(r).call(r,0,-1);if(!Rt(a)){if(!Array.isArray(e)){var i=new TypeError("allOf must be an array");return i.fullPath=r,i}var s=!1,l=o.value;if(a.forEach((function(e){l&&(l=l[e])})),l=me()({},l),0!==C()(l).length){delete l.allOf;var u,c,p=[];if(p.push(n.replace(a,{})),e.forEach((function(e,t){if(!n.isObject(e)){if(s)return null;s=!0;var o=new TypeError("Elements in allOf must be objects");return o.fullPath=r,p.push(o)}p.push(n.mergeDeep(a,e));var i=function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=r.specmap,o=r.getBaseUrlForNodePath,a=void 0===o?function(e){var r;return n.getContext(j()(r=[]).call(r,q()(t),q()(e))).baseDoc}:o,i=r.targetKeys,s=void 0===i?["$ref","$$ref"]:i,l=[];return jt()(e).forEach((function(){if(v()(s).call(s,this.key)&&"string"==typeof this.node){var e=this.path,r=j()(t).call(t,this.path),o=Mt(this.node,a(e));l.push(n.replace(r,o))}})),l}(e,$()(r).call(r,0,-1),{getBaseUrlForNodePath:function(e){var o;return n.getContext(j()(o=[]).call(o,q()(r),[t],q()(e))).baseDoc},specmap:n});p.push.apply(p,q()(i))})),l.example)p.push(n.remove(j()(u=[]).call(u,a,"example")));if(p.push(n.mergeDeep(a,l)),!l.$$ref)p.push(n.remove(j()(c=[]).call(c,a,"$$ref")));return p}}}}},rr={key:"parameters",plugin:function(e,t,r,n){if(Array.isArray(e)&&e.length){var o=Ee()([],e),a=$()(r).call(r,0,-1),i=me()({},it.getIn(n.spec,a));return e.forEach((function(e,t){try{o[t].default=n.parameterMacro(i,e)}catch(e){var a=new Error(e);return a.fullPath=r,a}})),it.replace(r,o)}return it.replace(r,e)}},nr={key:"properties",plugin:function(e,t,r,n){var o=me()({},e);for(var a in e)try{o[a].default=n.modelPropertyMacro(o[a])}catch(e){var i=new Error(e);return i.fullPath=r,i}return it.replace(r,o)}};var or=function(){function e(t){ve()(this,e),this.root=ar(t||{})}return be()(e,[{key:"set",value:function(e,t){var r=this.getParent(e,!0);if(r){var n=e[e.length-1],o=r.children;o[n]?ir(o[n],t,r):o[n]=ar(t,r)}else ir(this.root,t,null)}},{key:"get",value:function(e){if((e=e||[]).length<1)return this.root.value;for(var t,r,n=this.root,o=0;o1?r-1:0),o=1;o1?n-1:0),a=1;a0}))}},{key:"nextPromisedPatch",value:function(){var e;if(this.promisedPatches.length>0)return Ae().race(A()(e=this.promisedPatches).call(e,(function(e){return e.value})))}},{key:"getPluginHistory",value:function(e){var t=this.constructor.getPluginName(e);return this.pluginHistory[t]||[]}},{key:"getPluginRunCount",value:function(e){return this.getPluginHistory(e).length}},{key:"getPluginHistoryTip",value:function(e){var t=this.getPluginHistory(e);return t&&t[t.length-1]||{}}},{key:"getPluginMutationIndex",value:function(e){var t=this.getPluginHistoryTip(e).mutationIndex;return"number"!=typeof t?-1:t}},{key:"updatePluginHistory",value:function(e,t){var r=this.constructor.getPluginName(e);this.pluginHistory[r]=this.pluginHistory[r]||[],this.pluginHistory[r].push(t)}},{key:"updatePatches",value:function(e){var t=this;it.normalizeArray(e).forEach((function(e){if(e instanceof Error)t.errors.push(e);else try{if(!it.isObject(e))return void t.debug("updatePatches","Got a non-object patch",e);if(t.showDebug&&t.allPatches.push(e),it.isPromise(e.value))return t.promisedPatches.push(e),void t.promisedPatchThen(e);if(it.isContextPatch(e))return void t.setContext(e.path,e.value);if(it.isMutation(e))return void t.updateMutations(e)}catch(e){console.error(e),t.errors.push(e)}}))}},{key:"updateMutations",value:function(e){"object"===h()(e.value)&&!Array.isArray(e.value)&&this.allowMetaPatches&&(e.value=me()({},e.value));var t=it.applyPatch(this.state,e,{allowMetaPatches:this.allowMetaPatches});t&&(this.mutations.push(e),this.state=t)}},{key:"removePromisedPatch",value:function(e){var t,r=this.promisedPatches.indexOf(e);r<0?this.debug("Tried to remove a promisedPatch that isn't there!"):Ce()(t=this.promisedPatches).call(t,r,1)}},{key:"promisedPatchThen",value:function(e){var t=this;return e.value=e.value.then((function(r){var n=me()(me()({},e),{},{value:r});t.removePromisedPatch(e),t.updatePatches(n)})).catch((function(r){t.removePromisedPatch(e),t.updatePatches(r)})),e.value}},{key:"getMutations",value:function(e,t){var r;return e=e||0,"number"!=typeof t&&(t=this.mutations.length),$()(r=this.mutations).call(r,e,t)}},{key:"getCurrentMutations",value:function(){return this.getMutationsForPlugin(this.getCurrentPlugin())}},{key:"getMutationsForPlugin",value:function(e){var t=this.getPluginMutationIndex(e);return this.getMutations(t+1)}},{key:"getCurrentPlugin",value:function(){return this.currentPlugin}},{key:"getLib",value:function(){return this.libMethods}},{key:"_get",value:function(e){return it.getIn(this.state,e)}},{key:"_getContext",value:function(e){return this.contextTree.get(e)}},{key:"setContext",value:function(e,t){return this.contextTree.set(e,t)}},{key:"_hasRun",value:function(e){return this.getPluginRunCount(this.getCurrentPlugin())>(e||0)}},{key:"dispatch",value:function(){var e,t=this,r=this,n=this.nextPlugin();if(!n){var o=this.nextPromisedPatch();if(o)return o.then((function(){return t.dispatch()})).catch((function(){return t.dispatch()}));var a={spec:this.state,errors:this.errors};return this.showDebug&&(a.patches=this.allPatches),Ae().resolve(a)}if(r.pluginCount=r.pluginCount||{},r.pluginCount[n]=(r.pluginCount[n]||0)+1,r.pluginCount[n]>100)return Ae().resolve({spec:r.state,errors:j()(e=r.errors).call(e,new Error("We've reached a hard limit of ".concat(100," plugin runs")))});if(n!==this.currentPlugin&&this.promisedPatches.length){var i,s=A()(i=this.promisedPatches).call(i,(function(e){return e.value}));return Ae().all(A()(s).call(s,(function(e){return e.then(sr,sr)}))).then((function(){return t.dispatch()}))}return function(){r.currentPlugin=n;var e=r.getCurrentMutations(),t=r.mutations.length-1;try{if(n.isGenerator){var o,a=p()(n(e,r.getLib()));try{for(a.s();!(o=a.n()).done;){l(o.value)}}catch(e){a.e(e)}finally{a.f()}}else{l(n(e,r.getLib()))}}catch(e){console.error(e),l([Ee()(Object.create(e),{plugin:n})])}finally{r.updatePluginHistory(n,{mutationIndex:t})}return r.dispatch()}();function l(e){e&&(e=it.fullyNormalizeArray(e),r.updatePatches(e,n))}}}],[{key:"getPluginName",value:function(e){return e.pluginName}},{key:"getPatchesOfType",value:function(e,t){return P()(e).call(e,t)}}]),e}();var ur={refs:$t,allOf:tr,parameters:rr,properties:nr},cr=r(23159);function pr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.requestInterceptor,n=t.responseInterceptor,o=e.withCredentials?"include":"same-origin";return function(t){return e({url:t,loadSpec:!0,requestInterceptor:r,responseInterceptor:n,headers:{Accept:Dt},credentials:o}).then((function(e){return e.body}))}}function fr(e){var t=e.fetch,r=e.spec,n=e.url,o=e.mode,a=e.allowMetaPatches,i=void 0===a||a,l=e.pathDiscriminator,c=e.modelPropertyMacro,p=e.parameterMacro,f=e.requestInterceptor,h=e.responseInterceptor,d=e.skipNormalization,m=e.useCircularStructures,g=e.http,v=e.baseDoc;return v=v||n,g=t||g||Y,r?y(r):pr(g,{requestInterceptor:f,responseInterceptor:h})(v).then(y);function y(e){v&&(ur.refs.docCache[v]=e),ur.refs.fetchJSON=pr(g,{requestInterceptor:f,responseInterceptor:h});var t,r=[ur.refs];return"function"==typeof p&&r.push(ur.parameters),"function"==typeof c&&r.push(ur.properties),"strict"!==o&&r.push(ur.allOf),(t={spec:e,context:{baseDoc:v},plugins:r,allowMetaPatches:i,pathDiscriminator:l,parameterMacro:p,modelPropertyMacro:c,useCircularStructures:m},new lr(t).dispatch()).then(d?function(){var e=s()(u().mark((function e(t){return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",t);case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}():cr.K1)}}var hr=r(88436),dr=r.n(hr),mr=r(27361),gr=r.n(mr),vr=r(30006);function yr(e){return"[object Object]"===Object.prototype.toString.call(e)}function br(e){var t,r;return!1!==yr(e)&&(void 0===(t=e.constructor)||!1!==yr(r=t.prototype)&&!1!==r.hasOwnProperty("isPrototypeOf"))}const wr={body:function(e){var t=e.req,r=e.value;t.body=r},header:function(e){var t=e.req,r=e.parameter,n=e.value;t.headers=t.headers||{},void 0!==n&&(t.headers[r.name]=n)},query:function(e){var t=e.req,r=e.value,n=e.parameter;t.query=t.query||{},!1===r&&"boolean"===n.type&&(r="false");0===r&&["number","integer"].indexOf(n.type)>-1&&(r="0");if(r)t.query[n.name]={collectionFormat:n.collectionFormat,value:r};else if(n.allowEmptyValue&&void 0!==r){var o=n.name;t.query[o]=t.query[o]||{},t.query[o].allowEmptyValue=!0}},path:function(e){var t=e.req,r=e.value,n=e.parameter;t.url=t.url.split("{".concat(n.name,"}")).join(encodeURIComponent(r))},formData:function(e){var t=e.req,r=e.value,n=e.parameter;(r||n.allowEmptyValue)&&(t.form=t.form||{},t.form[n.name]={value:r,allowEmptyValue:n.allowEmptyValue,collectionFormat:n.collectionFormat})}};function Er(e,t){return v()(t).call(t,"application/json")?"string"==typeof e?e:_()(e):e.toString()}function xr(e){var t=e.req,r=e.value,n=e.parameter,o=n.name,a=n.style,i=n.explode,s=n.content;if(s){var l=C()(s)[0];t.url=t.url.split("{".concat(o,"}")).join(J(Er(r,l),{escape:!0}))}else{var u=K({key:n.name,value:r,style:a||"simple",explode:i||!1,escape:!0});t.url=t.url.split("{".concat(o,"}")).join(u)}}function _r(e){var t=e.req,r=e.value,n=e.parameter;if(t.query=t.query||{},n.content){var o=C()(n.content)[0];t.query[n.name]=Er(r,o)}else if(!1===r&&(r="false"),0===r&&(r="0"),r){var a=n.style,i=n.explode,s=n.allowReserved;t.query[n.name]={value:r,serializationOption:{style:a,explode:i,allowReserved:s}}}else if(n.allowEmptyValue&&void 0!==r){var l=n.name;t.query[l]=t.query[l]||{},t.query[l].allowEmptyValue=!0}}var Sr=["accept","authorization","content-type"];function Ar(e){var t=e.req,r=e.parameter,n=e.value;if(t.headers=t.headers||{},!(Sr.indexOf(r.name.toLowerCase())>-1))if(r.content){var o=C()(r.content)[0];t.headers[r.name]=Er(n,o)}else void 0!==n&&(t.headers[r.name]=K({key:r.name,value:n,style:r.style||"simple",explode:void 0!==r.explode&&r.explode,escape:!1}))}function kr(e){var t=e.req,r=e.parameter,n=e.value;t.headers=t.headers||{};var o=h()(n);if(r.content){var a,i=C()(r.content)[0];t.headers.Cookie=j()(a="".concat(r.name,"=")).call(a,Er(n,i))}else if("undefined"!==o){var s="object"===o&&!Array.isArray(n)&&r.explode?"":"".concat(r.name,"=");t.headers.Cookie=s+K({key:r.name,value:n,escape:!1,style:r.style||"form",explode:void 0!==r.explode&&r.explode})}}var Cr=r(92381),Or=r.n(Cr);const jr=(void 0!==Or()?Or():"undefined"!=typeof self?self:window).btoa;function Ir(e,t){var r=e.operation,n=e.requestBody,o=e.securities,a=e.spec,i=e.attachContentTypeForEmptyPayload,s=e.requestContentType;t=function(e){var t=e.request,r=e.securities,n=void 0===r?{}:r,o=e.operation,a=void 0===o?{}:o,i=e.spec,s=me()({},t),l=n.authorized,u=void 0===l?{}:l,c=a.security||i.security||[],p=u&&!!C()(u).length,f=gr()(i,["components","securitySchemes"])||{};if(s.headers=s.headers||{},s.query=s.query||{},!C()(n).length||!p||!c||Array.isArray(a.security)&&!a.security.length)return t;return c.forEach((function(e){C()(e).forEach((function(e){var t=u[e],r=f[e];if(t){var n=t.value||t,o=r.type;if(t)if("apiKey"===o)"query"===r.in&&(s.query[r.name]=n),"header"===r.in&&(s.headers[r.name]=n),"cookie"===r.in&&(s.cookies[r.name]=n);else if("http"===o){if(/^basic$/i.test(r.scheme)){var a,i=n.username||"",l=n.password||"",c=jr(j()(a="".concat(i,":")).call(a,l));s.headers.Authorization="Basic ".concat(c)}/^bearer$/i.test(r.scheme)&&(s.headers.Authorization="Bearer ".concat(n))}else if("oauth2"===o||"openIdConnect"===o){var p,h=t.token||{},d=h[r["x-tokenName"]||"access_token"],m=h.token_type;m&&"bearer"!==m.toLowerCase()||(m="Bearer"),s.headers.Authorization=j()(p="".concat(m," ")).call(p,d)}}}))})),s}({request:t,securities:o,operation:r,spec:a});var l=r.requestBody||{},u=C()(l.content||{}),c=s&&u.indexOf(s)>-1;if(n||i){if(s&&c)t.headers["Content-Type"]=s;else if(!s){var p=u[0];p&&(t.headers["Content-Type"]=p,s=p)}}else s&&c&&(t.headers["Content-Type"]=s);if(!e.responseContentType&&r.responses){var f,d=P()(f=N()(r.responses)).call(f,(function(e){var t=m()(e,2),r=t[0],n=t[1],o=parseInt(r,10);return o>=200&&o<300&&br(n.content)})).reduce((function(e,t){var r=m()(t,2)[1];return j()(e).call(e,C()(r.content))}),[]);d.length>0&&(t.headers.accept=d.join(", "))}if(n)if(s){if(u.indexOf(s)>-1)if("application/x-www-form-urlencoded"===s||"multipart/form-data"===s)if("object"===h()(n)){var g=(l.content[s]||{}).encoding||{};t.form={},C()(n).forEach((function(e){t.form[e]={value:n[e],encoding:g[e]||{}}}))}else t.form=n;else t.body=n}else t.body=n;return t}function Nr(e,t){var r,n,o=e.spec,a=e.operation,i=e.securities,s=e.requestContentType,l=e.responseContentType,u=e.attachContentTypeForEmptyPayload;if(t=function(e){var t=e.request,r=e.securities,n=void 0===r?{}:r,o=e.operation,a=void 0===o?{}:o,i=e.spec,s=me()({},t),l=n.authorized,u=void 0===l?{}:l,c=n.specSecurity,p=void 0===c?[]:c,f=a.security||p,h=u&&!!C()(u).length,d=i.securityDefinitions;if(s.headers=s.headers||{},s.query=s.query||{},!C()(n).length||!h||!f||Array.isArray(a.security)&&!a.security.length)return t;return f.forEach((function(e){C()(e).forEach((function(e){var t=u[e];if(t){var r=t.token,n=t.value||t,o=d[e],a=o.type,i=o["x-tokenName"]||"access_token",l=r&&r[i],c=r&&r.token_type;if(t)if("apiKey"===a){var p="query"===o.in?"query":"headers";s[p]=s[p]||{},s[p][o.name]=n}else if("basic"===a)if(n.header)s.headers.authorization=n.header;else{var f,h=n.username||"",m=n.password||"";n.base64=jr(j()(f="".concat(h,":")).call(f,m)),s.headers.authorization="Basic ".concat(n.base64)}else if("oauth2"===a&&l){var g;c=c&&"bearer"!==c.toLowerCase()?c:"Bearer",s.headers.authorization=j()(g="".concat(c," ")).call(g,l)}}}))})),s}({request:t,securities:i,operation:a,spec:o}),t.body||t.form||u)if(s)t.headers["Content-Type"]=s;else if(Array.isArray(a.consumes)){var c=m()(a.consumes,1);t.headers["Content-Type"]=c[0]}else if(Array.isArray(o.consumes)){var p=m()(o.consumes,1);t.headers["Content-Type"]=p[0]}else a.parameters&&P()(r=a.parameters).call(r,(function(e){return"file"===e.type})).length?t.headers["Content-Type"]="multipart/form-data":a.parameters&&P()(n=a.parameters).call(n,(function(e){return"formData"===e.in})).length&&(t.headers["Content-Type"]="application/x-www-form-urlencoded");else if(s){var f,h,d=a.parameters&&P()(f=a.parameters).call(f,(function(e){return"body"===e.in})).length>0,g=a.parameters&&P()(h=a.parameters).call(h,(function(e){return"formData"===e.in})).length>0;(d||g)&&(t.headers["Content-Type"]=s)}return!l&&Array.isArray(a.produces)&&a.produces.length>0&&(t.headers.accept=a.produces.join(", ")),t}var Tr=["http","fetch","spec","operationId","pathName","method","parameters","securities"],Pr=function(e){return Array.isArray(e)?e:[]},Rr=Ct("OperationNotFoundError",(function(e,t,r){this.originalError=r,Ee()(this,t||{})})),Mr={buildRequest:Lr};function Dr(e){var t=e.http,r=e.fetch,n=e.spec,o=e.operationId,a=e.pathName,i=e.method,s=e.parameters,l=e.securities,u=dr()(e,Tr),c=t||r||Y;a&&i&&!o&&(o=(0,cr.nc)(a,i));var p=Mr.buildRequest(me()({spec:n,operationId:o,parameters:s,securities:l,http:c},u));return p.body&&(br(p.body)||Array.isArray(p.body))&&(p.body=_()(p.body)),c(p)}function Lr(e){var t,r,n=e.spec,o=e.operationId,i=e.responseContentType,s=e.scheme,l=e.requestInterceptor,u=e.responseInterceptor,c=e.contextUrl,p=e.userFetch,f=e.server,h=e.serverVariables,d=e.http,g=e.signal,v=e.parameters,y=e.parameterBuilders,b=(0,cr.z6)(n);y||(y=b?a:wr);var w={url:"",credentials:d&&d.withCredentials?"include":"same-origin",headers:{},cookies:{}};g&&(w.signal=g),l&&(w.requestInterceptor=l),u&&(w.responseInterceptor=u),p&&(w.userFetch=p);var E=(0,cr.$r)(n,o);if(!E)throw new Rr("Operation ".concat(o," not found"));var x,_=E.operation,S=void 0===_?{}:_,k=E.method,O=E.pathName;if(w.url+=(x={spec:n,scheme:s,contextUrl:c,server:f,serverVariables:h,pathName:O,method:k},(0,cr.z6)(x.spec)?function(e){var t=e.spec,r=e.pathName,n=e.method,o=e.server,a=e.contextUrl,i=e.serverVariables,s=void 0===i?{}:i,l=gr()(t,["paths",r,(n||"").toLowerCase(),"servers"])||gr()(t,["paths",r,"servers"])||gr()(t,["servers"]),u="",c=null;if(o&&l&&l.length){var p=A()(l).call(l,(function(e){return e.url}));p.indexOf(o)>-1&&(u=o,c=l[p.indexOf(o)])}if(!u&&l&&l.length){u=l[0].url;var f=m()(l,1);c=f[0]}return u.indexOf("{")>-1&&function(e){for(var t,r=[],n=/{([^}]+)}/g;t=n.exec(e);)r.push(t[1]);return r}(u).forEach((function(e){if(c.variables&&c.variables[e]){var t=c.variables[e],r=s[e]||t.default,n=new RegExp("{".concat(e,"}"),"g");u=u.replace(n,r)}})),function(){var e,t,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",o=r&&n?kt.parse(kt.resolve(n,r)):kt.parse(r),a=kt.parse(n),i=Br(o.protocol)||Br(a.protocol)||"",s=o.host||a.host,l=o.pathname||"";return"/"===(e=i&&s?j()(t="".concat(i,"://")).call(t,s+l):l)[e.length-1]?$()(e).call(e,0,-1):e}(u,a)}(x):function(e){var t,r,n=e.spec,o=e.scheme,a=e.contextUrl,i=void 0===a?"":a,s=kt.parse(i),l=Array.isArray(n.schemes)?n.schemes[0]:null,u=o||l||Br(s.protocol)||"http",c=n.host||s.host||"",p=n.basePath||"";return"/"===(t=u&&c?j()(r="".concat(u,"://")).call(r,c+p):p)[t.length-1]?$()(t).call(t,0,-1):t}(x)),!o)return delete w.cookies,w;w.url+=O,w.method="".concat(k).toUpperCase(),v=v||{};var I=n.paths[O]||{};i&&(w.headers.accept=i);var N=function(e){var t={};e.forEach((function(e){t[e.in]||(t[e.in]={}),t[e.in][e.name]=e}));var r=[];return C()(t).forEach((function(e){C()(t[e]).forEach((function(n){r.push(t[e][n])}))})),r}(j()(t=j()(r=[]).call(r,Pr(S.parameters))).call(t,Pr(I.parameters)));N.forEach((function(e){var t,r,o=y[e.in];if("body"===e.in&&e.schema&&e.schema.properties&&(t=v),void 0===(t=e&&e.name&&v[e.name]))t=e&&e.name&&v[j()(r="".concat(e.in,".")).call(r,e.name)];else if(function(e,t){return P()(t).call(t,(function(t){return t.name===e}))}(e.name,N).length>1){var a;console.warn(j()(a="Parameter '".concat(e.name,"' is ambiguous because the defined spec has more than one parameter with the name: '")).call(a,e.name,"' and the passed-in parameter values did not define an 'in' value."))}if(null!==t){if(void 0!==e.default&&void 0===t&&(t=e.default),void 0===t&&e.required&&!e.allowEmptyValue)throw new Error("Required parameter ".concat(e.name," is not provided"));if(b&&e.schema&&"object"===e.schema.type&&"string"==typeof t)try{t=JSON.parse(t)}catch(e){throw new Error("Could not parse object parameter value string as JSON")}o&&o({req:w,parameter:e,value:t,operation:S,spec:n})}}));var T=me()(me()({},e),{},{operation:S});if((w=b?Ir(T,w):Nr(T,w)).cookies&&C()(w.cookies).length){var R=C()(w.cookies).reduce((function(e,t){var r=w.cookies[t];return e+(e?"&":"")+vr.serialize(t,r)}),"");w.headers.Cookie=R}return w.cookies&&delete w.cookies,fe(w),w}var Br=function(e){return e?e.replace(/\W/g,""):null};function Fr(e,t){return zr.apply(this,arguments)}function zr(){return zr=s()(u().mark((function e(t,r){var n,o,a,i,s,l,c,p,f,h,d,m,g=arguments;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=g.length>2&&void 0!==g[2]?g[2]:{},o=n.returnEntireTree,a=n.baseDoc,i=n.requestInterceptor,s=n.responseInterceptor,l=n.parameterMacro,c=n.modelPropertyMacro,p=n.useCircularStructures,f={pathDiscriminator:r,baseDoc:a,requestInterceptor:i,responseInterceptor:s,parameterMacro:l,modelPropertyMacro:c,useCircularStructures:p},h=(0,cr.K1)({spec:t}),d=h.spec,e.next=6,fr(me()(me()({},f),{},{spec:d,allowMetaPatches:!0,skipNormalization:!0}));case 6:return m=e.sent,!o&&Array.isArray(r)&&r.length&&(m.spec=gr()(m.spec,r)||null),e.abrupt("return",m);case 9:case"end":return e.stop()}}),e)}))),zr.apply(this,arguments)}var Ur=r(34852);function qr(e){let{configs:t,getConfigs:r}=e;return{fn:{fetch:(n=Y,o=t.preFetch,a=t.postFetch,a=a||function(e){return e},o=o||function(e){return e},function(e){return"string"==typeof e&&(e={url:e}),Z.mergeInQueryOrForm(e),e=o(e),a(n(e))}),buildRequest:Lr,execute:Dr,resolve:fr,resolveSubtree:function(e,t,n){if(void 0===n){const e=r();n={modelPropertyMacro:e.modelPropertyMacro,parameterMacro:e.parameterMacro,requestInterceptor:e.requestInterceptor,responseInterceptor:e.responseInterceptor}}for(var o=arguments.length,a=new Array(o>3?o-3:0),i=3;i{"use strict";r.r(t),r.d(t,{default:()=>o});var n=r(90242);function o(){return{fn:{shallowEqualKeys:n.be}}}},48347:(e,t,r)=>{"use strict";r.r(t),r.d(t,{getDisplayName:()=>n});const n=e=>e.displayName||e.name||"Component"},73420:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>u});var n=r(35627),o=r.n(n),a=r(90242),i=r(55776),s=r(48347),l=r(60314);const u=e=>{let{getComponents:t,getStore:r,getSystem:n}=e;const u=(c=(0,i.getComponent)(n,r,t),(0,a.HP)(c,(function(){for(var e=arguments.length,t=new Array(e),r=0;r(0,l.Z)(e,(function(){for(var e=arguments.length,t=new Array(e),r=0;r{"use strict";r.r(t),r.d(t,{getComponent:()=>ne,render:()=>re,withMappedContainer:()=>te});var n=r(23101),o=r.n(n),a=r(28222),i=r.n(a),s=r(67294),l=r(73935),u=r(97779),c=s.createContext(null);var p=function(e){e()},f=function(){return p},h={notify:function(){}};var d=function(){function e(e,t){this.store=e,this.parentSub=t,this.unsubscribe=null,this.listeners=h,this.handleChangeWrapper=this.handleChangeWrapper.bind(this)}var t=e.prototype;return t.addNestedSub=function(e){return this.trySubscribe(),this.listeners.subscribe(e)},t.notifyNestedSubs=function(){this.listeners.notify()},t.handleChangeWrapper=function(){this.onStateChange&&this.onStateChange()},t.isSubscribed=function(){return Boolean(this.unsubscribe)},t.trySubscribe=function(){this.unsubscribe||(this.unsubscribe=this.parentSub?this.parentSub.addNestedSub(this.handleChangeWrapper):this.store.subscribe(this.handleChangeWrapper),this.listeners=function(){var e=f(),t=null,r=null;return{clear:function(){t=null,r=null},notify:function(){e((function(){for(var e=t;e;)e.callback(),e=e.next}))},get:function(){for(var e=[],r=t;r;)e.push(r),r=r.next;return e},subscribe:function(e){var n=!0,o=r={callback:e,next:null,prev:r};return o.prev?o.prev.next=o:t=o,function(){n&&null!==t&&(n=!1,o.next?o.next.prev=o.prev:r=o.prev,o.prev?o.prev.next=o.next:t=o.next)}}}}())},t.tryUnsubscribe=function(){this.unsubscribe&&(this.unsubscribe(),this.unsubscribe=null,this.listeners.clear(),this.listeners=h)},e}(),m="undefined"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement?s.useLayoutEffect:s.useEffect;const g=function(e){var t=e.store,r=e.context,n=e.children,o=(0,s.useMemo)((function(){var e=new d(t);return e.onStateChange=e.notifyNestedSubs,{store:t,subscription:e}}),[t]),a=(0,s.useMemo)((function(){return t.getState()}),[t]);m((function(){var e=o.subscription;return e.trySubscribe(),a!==t.getState()&&e.notifyNestedSubs(),function(){e.tryUnsubscribe(),e.onStateChange=null}}),[o,a]);var i=r||c;return s.createElement(i.Provider,{value:o},n)};var v=r(87462),y=r(63366),b=r(8679),w=r.n(b),E=r(72973),x=[],_=[null,null];function S(e,t){var r=e[1];return[t.payload,r+1]}function A(e,t,r){m((function(){return e.apply(void 0,t)}),r)}function k(e,t,r,n,o,a,i){e.current=n,t.current=o,r.current=!1,a.current&&(a.current=null,i())}function C(e,t,r,n,o,a,i,s,l,u){if(e){var c=!1,p=null,f=function(){if(!c){var e,r,f=t.getState();try{e=n(f,o.current)}catch(e){r=e,p=e}r||(p=null),e===a.current?i.current||l():(a.current=e,s.current=e,i.current=!0,u({type:"STORE_UPDATED",payload:{error:r}}))}};r.onStateChange=f,r.trySubscribe(),f();return function(){if(c=!0,r.tryUnsubscribe(),r.onStateChange=null,p)throw p}}}var O=function(){return[null,0]};function j(e,t){void 0===t&&(t={});var r=t,n=r.getDisplayName,o=void 0===n?function(e){return"ConnectAdvanced("+e+")"}:n,a=r.methodName,i=void 0===a?"connectAdvanced":a,l=r.renderCountProp,u=void 0===l?void 0:l,p=r.shouldHandleStateChanges,f=void 0===p||p,h=r.storeKey,m=void 0===h?"store":h,g=(r.withRef,r.forwardRef),b=void 0!==g&&g,j=r.context,I=void 0===j?c:j,N=(0,y.Z)(r,["getDisplayName","methodName","renderCountProp","shouldHandleStateChanges","storeKey","withRef","forwardRef","context"]),T=I;return function(t){var r=t.displayName||t.name||"Component",n=o(r),a=(0,v.Z)({},N,{getDisplayName:o,methodName:i,renderCountProp:u,shouldHandleStateChanges:f,storeKey:m,displayName:n,wrappedComponentName:r,WrappedComponent:t}),l=N.pure;var c=l?s.useMemo:function(e){return e()};function p(r){var n=(0,s.useMemo)((function(){var e=r.reactReduxForwardedRef,t=(0,y.Z)(r,["reactReduxForwardedRef"]);return[r.context,e,t]}),[r]),o=n[0],i=n[1],l=n[2],u=(0,s.useMemo)((function(){return o&&o.Consumer&&(0,E.isContextConsumer)(s.createElement(o.Consumer,null))?o:T}),[o,T]),p=(0,s.useContext)(u),h=Boolean(r.store)&&Boolean(r.store.getState)&&Boolean(r.store.dispatch);Boolean(p)&&Boolean(p.store);var m=h?r.store:p.store,g=(0,s.useMemo)((function(){return function(t){return e(t.dispatch,a)}(m)}),[m]),b=(0,s.useMemo)((function(){if(!f)return _;var e=new d(m,h?null:p.subscription),t=e.notifyNestedSubs.bind(e);return[e,t]}),[m,h,p]),w=b[0],j=b[1],I=(0,s.useMemo)((function(){return h?p:(0,v.Z)({},p,{subscription:w})}),[h,p,w]),N=(0,s.useReducer)(S,x,O),P=N[0][0],R=N[1];if(P&&P.error)throw P.error;var M=(0,s.useRef)(),D=(0,s.useRef)(l),L=(0,s.useRef)(),B=(0,s.useRef)(!1),F=c((function(){return L.current&&l===D.current?L.current:g(m.getState(),l)}),[m,P,l]);A(k,[D,M,B,l,F,L,j]),A(C,[f,m,w,g,D,M,B,L,j,R],[m,w,g]);var z=(0,s.useMemo)((function(){return s.createElement(t,(0,v.Z)({},F,{ref:i}))}),[i,t,F]);return(0,s.useMemo)((function(){return f?s.createElement(u.Provider,{value:I},z):z}),[u,z,I])}var h=l?s.memo(p):p;if(h.WrappedComponent=t,h.displayName=p.displayName=n,b){var g=s.forwardRef((function(e,t){return s.createElement(h,(0,v.Z)({},e,{reactReduxForwardedRef:t}))}));return g.displayName=n,g.WrappedComponent=t,w()(g,t)}return w()(h,t)}}function I(e,t){return e===t?0!==e||0!==t||1/e==1/t:e!=e&&t!=t}function N(e,t){if(I(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var r=Object.keys(e),n=Object.keys(t);if(r.length!==n.length)return!1;for(var o=0;o=0;n--){var o=t[n](e);if(o)return o}return function(t,n){throw new Error("Invalid value of type "+typeof e+" for "+r+" argument when connecting component "+n.wrappedComponentName+".")}}function V(e,t){return e===t}function $(e){var t=void 0===e?{}:e,r=t.connectHOC,n=void 0===r?j:r,o=t.mapStateToPropsFactories,a=void 0===o?D:o,i=t.mapDispatchToPropsFactories,s=void 0===i?M:i,l=t.mergePropsFactories,u=void 0===l?B:l,c=t.selectorFactory,p=void 0===c?U:c;return function(e,t,r,o){void 0===o&&(o={});var i=o,l=i.pure,c=void 0===l||l,f=i.areStatesEqual,h=void 0===f?V:f,d=i.areOwnPropsEqual,m=void 0===d?N:d,g=i.areStatePropsEqual,b=void 0===g?N:g,w=i.areMergedPropsEqual,E=void 0===w?N:w,x=(0,y.Z)(i,["pure","areStatesEqual","areOwnPropsEqual","areStatePropsEqual","areMergedPropsEqual"]),_=q(e,a,"mapStateToProps"),S=q(t,s,"mapDispatchToProps"),A=q(r,u,"mergeProps");return n(p,(0,v.Z)({methodName:"connect",getDisplayName:function(e){return"Connect("+e+")"},shouldHandleStateChanges:Boolean(e),initMapStateToProps:_,initMapDispatchToProps:S,initMergeProps:A,pure:c,areStatesEqual:h,areOwnPropsEqual:m,areStatePropsEqual:b,areMergedPropsEqual:E},x))}}const W=$();var H;H=l.unstable_batchedUpdates,p=H;var J=r(57557),K=r.n(J),G=r(6557),Z=r.n(G);const Y=e=>t=>{const{fn:r}=e();class n extends s.Component{render(){return s.createElement(t,o()({},e(),this.props,this.context))}}return n.displayName=`WithSystem(${r.getDisplayName(t)})`,n},Q=(e,t)=>r=>{const{fn:n}=e();class a extends s.Component{render(){return s.createElement(g,{store:t},s.createElement(r,o()({},this.props,this.context)))}}return a.displayName=`WithRoot(${n.getDisplayName(r)})`,a},X=(e,t,r)=>(0,u.qC)(r?Q(e,r):Z(),W(((r,n)=>{var o;const a={...n,...e()},i=(null===(o=t.prototype)||void 0===o?void 0:o.mapStateToProps)||(e=>({state:e}));return i(r,a)})),Y(e))(t),ee=(e,t,r,n)=>{for(const o in t){const a=t[o];"function"==typeof a&&a(r[o],n[o],e())}},te=(e,t,r)=>(t,n)=>{const{fn:o}=e(),a=r(t,"root");class l extends s.Component{constructor(t,r){super(t,r),ee(e,n,t,{})}UNSAFE_componentWillReceiveProps(t){ee(e,n,t,this.props)}render(){const e=K()(this.props,n?i()(n):[]);return s.createElement(a,e)}}return l.displayName=`WithMappedContainer(${o.getDisplayName(a)})`,l},re=(e,t,r,n)=>o=>{const a=r(e,t,n)("App","root");l.render(s.createElement(a,null),o)},ne=(e,t,r)=>function(n,o){let a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if("string"!=typeof n)throw new TypeError("Need a string, to fetch a component. Was given a "+typeof n);const i=r(n);return i?o?"root"===o?X(e,i,t()):X(e,i):i:(a.failSilently||e().log.warn("Could not find component:",n),null)}},36581:(e,t,r)=>{"use strict";r.d(t,{d3:()=>T,C2:()=>Z});var n=r(28222),o=r.n(n),a=r(58118),i=r.n(a),s=r(63366);function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=4?[t[0],t[1],t[2],t[3],"".concat(t[0],".").concat(t[1]),"".concat(t[0],".").concat(t[2]),"".concat(t[0],".").concat(t[3]),"".concat(t[1],".").concat(t[0]),"".concat(t[1],".").concat(t[2]),"".concat(t[1],".").concat(t[3]),"".concat(t[2],".").concat(t[0]),"".concat(t[2],".").concat(t[1]),"".concat(t[2],".").concat(t[3]),"".concat(t[3],".").concat(t[0]),"".concat(t[3],".").concat(t[1]),"".concat(t[3],".").concat(t[2]),"".concat(t[0],".").concat(t[1],".").concat(t[2]),"".concat(t[0],".").concat(t[1],".").concat(t[3]),"".concat(t[0],".").concat(t[2],".").concat(t[1]),"".concat(t[0],".").concat(t[2],".").concat(t[3]),"".concat(t[0],".").concat(t[3],".").concat(t[1]),"".concat(t[0],".").concat(t[3],".").concat(t[2]),"".concat(t[1],".").concat(t[0],".").concat(t[2]),"".concat(t[1],".").concat(t[0],".").concat(t[3]),"".concat(t[1],".").concat(t[2],".").concat(t[0]),"".concat(t[1],".").concat(t[2],".").concat(t[3]),"".concat(t[1],".").concat(t[3],".").concat(t[0]),"".concat(t[1],".").concat(t[3],".").concat(t[2]),"".concat(t[2],".").concat(t[0],".").concat(t[1]),"".concat(t[2],".").concat(t[0],".").concat(t[3]),"".concat(t[2],".").concat(t[1],".").concat(t[0]),"".concat(t[2],".").concat(t[1],".").concat(t[3]),"".concat(t[2],".").concat(t[3],".").concat(t[0]),"".concat(t[2],".").concat(t[3],".").concat(t[1]),"".concat(t[3],".").concat(t[0],".").concat(t[1]),"".concat(t[3],".").concat(t[0],".").concat(t[2]),"".concat(t[3],".").concat(t[1],".").concat(t[0]),"".concat(t[3],".").concat(t[1],".").concat(t[2]),"".concat(t[3],".").concat(t[2],".").concat(t[0]),"".concat(t[3],".").concat(t[2],".").concat(t[1]),"".concat(t[0],".").concat(t[1],".").concat(t[2],".").concat(t[3]),"".concat(t[0],".").concat(t[1],".").concat(t[3],".").concat(t[2]),"".concat(t[0],".").concat(t[2],".").concat(t[1],".").concat(t[3]),"".concat(t[0],".").concat(t[2],".").concat(t[3],".").concat(t[1]),"".concat(t[0],".").concat(t[3],".").concat(t[1],".").concat(t[2]),"".concat(t[0],".").concat(t[3],".").concat(t[2],".").concat(t[1]),"".concat(t[1],".").concat(t[0],".").concat(t[2],".").concat(t[3]),"".concat(t[1],".").concat(t[0],".").concat(t[3],".").concat(t[2]),"".concat(t[1],".").concat(t[2],".").concat(t[0],".").concat(t[3]),"".concat(t[1],".").concat(t[2],".").concat(t[3],".").concat(t[0]),"".concat(t[1],".").concat(t[3],".").concat(t[0],".").concat(t[2]),"".concat(t[1],".").concat(t[3],".").concat(t[2],".").concat(t[0]),"".concat(t[2],".").concat(t[0],".").concat(t[1],".").concat(t[3]),"".concat(t[2],".").concat(t[0],".").concat(t[3],".").concat(t[1]),"".concat(t[2],".").concat(t[1],".").concat(t[0],".").concat(t[3]),"".concat(t[2],".").concat(t[1],".").concat(t[3],".").concat(t[0]),"".concat(t[2],".").concat(t[3],".").concat(t[0],".").concat(t[1]),"".concat(t[2],".").concat(t[3],".").concat(t[1],".").concat(t[0]),"".concat(t[3],".").concat(t[0],".").concat(t[1],".").concat(t[2]),"".concat(t[3],".").concat(t[0],".").concat(t[2],".").concat(t[1]),"".concat(t[3],".").concat(t[1],".").concat(t[0],".").concat(t[2]),"".concat(t[3],".").concat(t[1],".").concat(t[2],".").concat(t[0]),"".concat(t[3],".").concat(t[2],".").concat(t[0],".").concat(t[1]),"".concat(t[3],".").concat(t[2],".").concat(t[1],".").concat(t[0])]:void 0),d[n]}function g(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2?arguments[2]:void 0,n=e.filter((function(e){return"token"!==e})),o=m(n);return o.reduce((function(e,t){return p({},e,r[t])}),t)}function v(e){return e.join(" ")}function y(e){var t=e.node,r=e.stylesheet,n=e.style,o=void 0===n?{}:n,a=e.useInlineStyles,i=e.key,s=t.properties,l=t.type,u=t.tagName,c=t.value;if("text"===l)return c;if(u){var d,m=function(e,t){var r=0;return function(n){return r+=1,n.map((function(n,o){return y({node:n,stylesheet:e,useInlineStyles:t,key:"code-segment-".concat(r,"-").concat(o)})}))}}(r,a);if(a){var b=Object.keys(r).reduce((function(e,t){return t.split(".").forEach((function(t){e.includes(t)||e.push(t)})),e}),[]),w=s.className&&s.className.includes("token")?["token"]:[],E=s.className&&w.concat(s.className.filter((function(e){return!b.includes(e)})));d=p({},s,{className:v(E)||void 0,style:g(s.className,Object.assign({},s.style,o),r)})}else d=p({},s,{className:v(s.className)});var x=m(t.children);return f.createElement(u,(0,h.Z)({key:i},d),x)}}var b=/\n/g;function w(e){var t=e.codeString,r=e.codeStyle,n=e.containerStyle,o=void 0===n?{float:"left",paddingRight:"10px"}:n,a=e.numberStyle,i=void 0===a?{}:a,s=e.startingLineNumber;return f.createElement("code",{style:Object.assign({},r,o)},function(e){var t=e.lines,r=e.startingLineNumber,n=e.style;return t.map((function(e,t){var o=t+r;return f.createElement("span",{key:"line-".concat(t),className:"react-syntax-highlighter-line-number",style:"function"==typeof n?n(o):n},"".concat(o,"\n"))}))}({lines:t.replace(/\n$/,"").split("\n"),style:i,startingLineNumber:s}))}function E(e,t){return{type:"element",tagName:"span",properties:{key:"line-number--".concat(e),className:["comment","linenumber","react-syntax-highlighter-line-number"],style:t},children:[{type:"text",value:e}]}}function x(e,t,r){var n;return p({},{display:"inline-block",minWidth:(n=r,"".concat(n.toString().length,".25em")),paddingRight:"1em",textAlign:"right",userSelect:"none"},"function"==typeof e?e(t):e)}function _(e){var t=e.children,r=e.lineNumber,n=e.lineNumberStyle,o=e.largestLineNumber,a=e.showInlineLineNumbers,i=e.lineProps,s=void 0===i?{}:i,l=e.className,u=void 0===l?[]:l,c=e.showLineNumbers,f=e.wrapLongLines,h="function"==typeof s?s(r):s;if(h.className=u,r&&a){var d=x(n,r,o);t.unshift(E(r,d))}return f&c&&(h.style=p({},h.style,{display:"flex"})),{type:"element",tagName:"span",properties:h,children:t}}function S(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],n=0;n2&&void 0!==arguments[2]?arguments[2]:[];return _({children:e,lineNumber:t,lineNumberStyle:s,largestLineNumber:i,showInlineLineNumbers:o,lineProps:r,className:a,showLineNumbers:n,wrapLongLines:l})}function m(e,t){if(n&&t&&o){var r=x(s,t,i);e.unshift(E(t,r))}return e}function g(e,r){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];return t||n.length>0?d(e,r,n):m(e,r)}for(var v=function(){var e=c[h],t=e.children[0].value;if(t.match(b)){var r=t.split("\n");r.forEach((function(t,o){var i=n&&p.length+a,s={type:"text",value:"".concat(t,"\n")};if(0===o){var l=g(c.slice(f+1,h).concat(_({children:[s],className:e.properties.className})),i);p.push(l)}else if(o===r.length-1){if(c[h+1]&&c[h+1].children&&c[h+1].children[0]){var u=_({children:[{type:"text",value:"".concat(t)}],className:e.properties.className});c.splice(h+1,0,u)}else{var d=g([s],i,e.properties.className);p.push(d)}}else{var m=g([s],i,e.properties.className);p.push(m)}})),f=h}h++};h=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}(e,["language","children","style","customStyle","codeTagProps","useInlineStyles","showLineNumbers","showInlineLineNumbers","startingLineNumber","lineNumberContainerStyle","lineNumberStyle","wrapLines","wrapLongLines","lineProps","renderer","PreTag","CodeTag","code","astGenerator"]);U=U||O;var V=m?f.createElement(w,{containerStyle:E,codeStyle:u.style||{},numberStyle:_,startingLineNumber:b,codeString:z}):null,$=o.hljs||o['pre[class*="language-"]']||{backgroundColor:"#fff"},W=C(U)?"hljs":"prismjs",H=h?Object.assign({},q,{style:Object.assign({},$,i)}):Object.assign({},q,{className:q.className?"".concat(W," ").concat(q.className):W,style:Object.assign({},i)});if(!U)return f.createElement(D,H,V,f.createElement(B,u,z));(void 0===S&&R||N)&&(S=!0),R=R||k;var J=[{type:"text",value:z}],K=function(e){var t=e.astGenerator,r=e.language,n=e.code,o=e.defaultCodeValue;if(C(t)){var a=function(e,t){return-1!==e.listLanguages().indexOf(t)}(t,r);return"text"===r?{value:o,language:"text"}:a?t.highlight(r,n):t.highlightAuto(n)}try{return r&&"text"!==r?{value:t.highlight(n,r)}:{value:o}}catch(e){return{value:o}}}({astGenerator:U,language:t,code:z,defaultCodeValue:J});null===K.language&&(K.value=J);var G=A(K,S,P,m,v,b,K.value.length+b,_,N);return u.style=p({},u.style,N?{whiteSpace:"pre-wrap"}:{whiteSpace:"pre"}),f.createElement(D,H,f.createElement(B,u,!v&&V,R({rows:G,stylesheet:o,useInlineStyles:h})))});N.registerLanguage=I.registerLanguage;const T=N;var P=r(96344);const R=r.n(P)();var M=r(82026);const D=r.n(M)();var L=r(42157);const B=r.n(L)();var F=r(61519);const z=r.n(F)();var U=r(54587);const q=r.n(U)();var V=r(30786);const $=r.n(V)();var W=r(66336);const H=r.n(W)(),J={hljs:{display:"block",overflowX:"auto",padding:"0.5em",background:"#333",color:"white"},"hljs-name":{fontWeight:"bold"},"hljs-strong":{fontWeight:"bold"},"hljs-code":{fontStyle:"italic",color:"#888"},"hljs-emphasis":{fontStyle:"italic"},"hljs-tag":{color:"#62c8f3"},"hljs-variable":{color:"#ade5fc"},"hljs-template-variable":{color:"#ade5fc"},"hljs-selector-id":{color:"#ade5fc"},"hljs-selector-class":{color:"#ade5fc"},"hljs-string":{color:"#a2fca2"},"hljs-bullet":{color:"#d36363"},"hljs-type":{color:"#ffa"},"hljs-title":{color:"#ffa"},"hljs-section":{color:"#ffa"},"hljs-attribute":{color:"#ffa"},"hljs-quote":{color:"#ffa"},"hljs-built_in":{color:"#ffa"},"hljs-builtin-name":{color:"#ffa"},"hljs-number":{color:"#d36363"},"hljs-symbol":{color:"#d36363"},"hljs-keyword":{color:"#fcc28c"},"hljs-selector-tag":{color:"#fcc28c"},"hljs-literal":{color:"#fcc28c"},"hljs-comment":{color:"#888"},"hljs-deletion":{color:"#333",backgroundColor:"#fc9b9b"},"hljs-regexp":{color:"#c6b4f0"},"hljs-link":{color:"#c6b4f0"},"hljs-meta":{color:"#fc9b9b"},"hljs-addition":{backgroundColor:"#a2fca2",color:"#333"}};T.registerLanguage("json",D),T.registerLanguage("js",R),T.registerLanguage("xml",B),T.registerLanguage("yaml",q),T.registerLanguage("http",$),T.registerLanguage("bash",z),T.registerLanguage("powershell",H),T.registerLanguage("javascript",R);const K={agate:J,arta:{hljs:{display:"block",overflowX:"auto",padding:"0.5em",background:"#222",color:"#aaa"},"hljs-subst":{color:"#aaa"},"hljs-section":{color:"#fff",fontWeight:"bold"},"hljs-comment":{color:"#444"},"hljs-quote":{color:"#444"},"hljs-meta":{color:"#444"},"hljs-string":{color:"#ffcc33"},"hljs-symbol":{color:"#ffcc33"},"hljs-bullet":{color:"#ffcc33"},"hljs-regexp":{color:"#ffcc33"},"hljs-number":{color:"#00cc66"},"hljs-addition":{color:"#00cc66"},"hljs-built_in":{color:"#32aaee"},"hljs-builtin-name":{color:"#32aaee"},"hljs-literal":{color:"#32aaee"},"hljs-type":{color:"#32aaee"},"hljs-template-variable":{color:"#32aaee"},"hljs-attribute":{color:"#32aaee"},"hljs-link":{color:"#32aaee"},"hljs-keyword":{color:"#6644aa"},"hljs-selector-tag":{color:"#6644aa"},"hljs-name":{color:"#6644aa"},"hljs-selector-id":{color:"#6644aa"},"hljs-selector-class":{color:"#6644aa"},"hljs-title":{color:"#bb1166"},"hljs-variable":{color:"#bb1166"},"hljs-deletion":{color:"#bb1166"},"hljs-template-tag":{color:"#bb1166"},"hljs-doctag":{fontWeight:"bold"},"hljs-strong":{fontWeight:"bold"},"hljs-emphasis":{fontStyle:"italic"}},monokai:{hljs:{display:"block",overflowX:"auto",padding:"0.5em",background:"#272822",color:"#ddd"},"hljs-tag":{color:"#f92672"},"hljs-keyword":{color:"#f92672",fontWeight:"bold"},"hljs-selector-tag":{color:"#f92672",fontWeight:"bold"},"hljs-literal":{color:"#f92672",fontWeight:"bold"},"hljs-strong":{color:"#f92672"},"hljs-name":{color:"#f92672"},"hljs-code":{color:"#66d9ef"},"hljs-class .hljs-title":{color:"white"},"hljs-attribute":{color:"#bf79db"},"hljs-symbol":{color:"#bf79db"},"hljs-regexp":{color:"#bf79db"},"hljs-link":{color:"#bf79db"},"hljs-string":{color:"#a6e22e"},"hljs-bullet":{color:"#a6e22e"},"hljs-subst":{color:"#a6e22e"},"hljs-title":{color:"#a6e22e",fontWeight:"bold"},"hljs-section":{color:"#a6e22e",fontWeight:"bold"},"hljs-emphasis":{color:"#a6e22e"},"hljs-type":{color:"#a6e22e",fontWeight:"bold"},"hljs-built_in":{color:"#a6e22e"},"hljs-builtin-name":{color:"#a6e22e"},"hljs-selector-attr":{color:"#a6e22e"},"hljs-selector-pseudo":{color:"#a6e22e"},"hljs-addition":{color:"#a6e22e"},"hljs-variable":{color:"#a6e22e"},"hljs-template-tag":{color:"#a6e22e"},"hljs-template-variable":{color:"#a6e22e"},"hljs-comment":{color:"#75715e"},"hljs-quote":{color:"#75715e"},"hljs-deletion":{color:"#75715e"},"hljs-meta":{color:"#75715e"},"hljs-doctag":{fontWeight:"bold"},"hljs-selector-id":{fontWeight:"bold"}},nord:{hljs:{display:"block",overflowX:"auto",padding:"0.5em",background:"#2E3440",color:"#D8DEE9"},"hljs-subst":{color:"#D8DEE9"},"hljs-selector-tag":{color:"#81A1C1"},"hljs-selector-id":{color:"#8FBCBB",fontWeight:"bold"},"hljs-selector-class":{color:"#8FBCBB"},"hljs-selector-attr":{color:"#8FBCBB"},"hljs-selector-pseudo":{color:"#88C0D0"},"hljs-addition":{backgroundColor:"rgba(163, 190, 140, 0.5)"},"hljs-deletion":{backgroundColor:"rgba(191, 97, 106, 0.5)"},"hljs-built_in":{color:"#8FBCBB"},"hljs-type":{color:"#8FBCBB"},"hljs-class":{color:"#8FBCBB"},"hljs-function":{color:"#88C0D0"},"hljs-function > .hljs-title":{color:"#88C0D0"},"hljs-keyword":{color:"#81A1C1"},"hljs-literal":{color:"#81A1C1"},"hljs-symbol":{color:"#81A1C1"},"hljs-number":{color:"#B48EAD"},"hljs-regexp":{color:"#EBCB8B"},"hljs-string":{color:"#A3BE8C"},"hljs-title":{color:"#8FBCBB"},"hljs-params":{color:"#D8DEE9"},"hljs-bullet":{color:"#81A1C1"},"hljs-code":{color:"#8FBCBB"},"hljs-emphasis":{fontStyle:"italic"},"hljs-formula":{color:"#8FBCBB"},"hljs-strong":{fontWeight:"bold"},"hljs-link:hover":{textDecoration:"underline"},"hljs-quote":{color:"#4C566A"},"hljs-comment":{color:"#4C566A"},"hljs-doctag":{color:"#8FBCBB"},"hljs-meta":{color:"#5E81AC"},"hljs-meta-keyword":{color:"#5E81AC"},"hljs-meta-string":{color:"#A3BE8C"},"hljs-attr":{color:"#8FBCBB"},"hljs-attribute":{color:"#D8DEE9"},"hljs-builtin-name":{color:"#81A1C1"},"hljs-name":{color:"#81A1C1"},"hljs-section":{color:"#88C0D0"},"hljs-tag":{color:"#81A1C1"},"hljs-variable":{color:"#D8DEE9"},"hljs-template-variable":{color:"#D8DEE9"},"hljs-template-tag":{color:"#5E81AC"},"abnf .hljs-attribute":{color:"#88C0D0"},"abnf .hljs-symbol":{color:"#EBCB8B"},"apache .hljs-attribute":{color:"#88C0D0"},"apache .hljs-section":{color:"#81A1C1"},"arduino .hljs-built_in":{color:"#88C0D0"},"aspectj .hljs-meta":{color:"#D08770"},"aspectj > .hljs-title":{color:"#88C0D0"},"bnf .hljs-attribute":{color:"#8FBCBB"},"clojure .hljs-name":{color:"#88C0D0"},"clojure .hljs-symbol":{color:"#EBCB8B"},"coq .hljs-built_in":{color:"#88C0D0"},"cpp .hljs-meta-string":{color:"#8FBCBB"},"css .hljs-built_in":{color:"#88C0D0"},"css .hljs-keyword":{color:"#D08770"},"diff .hljs-meta":{color:"#8FBCBB"},"ebnf .hljs-attribute":{color:"#8FBCBB"},"glsl .hljs-built_in":{color:"#88C0D0"},"groovy .hljs-meta:not(:first-child)":{color:"#D08770"},"haxe .hljs-meta":{color:"#D08770"},"java .hljs-meta":{color:"#D08770"},"ldif .hljs-attribute":{color:"#8FBCBB"},"lisp .hljs-name":{color:"#88C0D0"},"lua .hljs-built_in":{color:"#88C0D0"},"moonscript .hljs-built_in":{color:"#88C0D0"},"nginx .hljs-attribute":{color:"#88C0D0"},"nginx .hljs-section":{color:"#5E81AC"},"pf .hljs-built_in":{color:"#88C0D0"},"processing .hljs-built_in":{color:"#88C0D0"},"scss .hljs-keyword":{color:"#81A1C1"},"stylus .hljs-keyword":{color:"#81A1C1"},"swift .hljs-meta":{color:"#D08770"},"vim .hljs-built_in":{color:"#88C0D0",fontStyle:"italic"},"yaml .hljs-meta":{color:"#D08770"}},obsidian:{hljs:{display:"block",overflowX:"auto",padding:"0.5em",background:"#282b2e",color:"#e0e2e4"},"hljs-keyword":{color:"#93c763",fontWeight:"bold"},"hljs-selector-tag":{color:"#93c763",fontWeight:"bold"},"hljs-literal":{color:"#93c763",fontWeight:"bold"},"hljs-selector-id":{color:"#93c763"},"hljs-number":{color:"#ffcd22"},"hljs-attribute":{color:"#668bb0"},"hljs-code":{color:"white"},"hljs-class .hljs-title":{color:"white"},"hljs-section":{color:"white",fontWeight:"bold"},"hljs-regexp":{color:"#d39745"},"hljs-link":{color:"#d39745"},"hljs-meta":{color:"#557182"},"hljs-tag":{color:"#8cbbad"},"hljs-name":{color:"#8cbbad",fontWeight:"bold"},"hljs-bullet":{color:"#8cbbad"},"hljs-subst":{color:"#8cbbad"},"hljs-emphasis":{color:"#8cbbad"},"hljs-type":{color:"#8cbbad",fontWeight:"bold"},"hljs-built_in":{color:"#8cbbad"},"hljs-selector-attr":{color:"#8cbbad"},"hljs-selector-pseudo":{color:"#8cbbad"},"hljs-addition":{color:"#8cbbad"},"hljs-variable":{color:"#8cbbad"},"hljs-template-tag":{color:"#8cbbad"},"hljs-template-variable":{color:"#8cbbad"},"hljs-string":{color:"#ec7600"},"hljs-symbol":{color:"#ec7600"},"hljs-comment":{color:"#818e96"},"hljs-quote":{color:"#818e96"},"hljs-deletion":{color:"#818e96"},"hljs-selector-class":{color:"#A082BD"},"hljs-doctag":{fontWeight:"bold"},"hljs-title":{fontWeight:"bold"},"hljs-strong":{fontWeight:"bold"}},"tomorrow-night":{"hljs-comment":{color:"#969896"},"hljs-quote":{color:"#969896"},"hljs-variable":{color:"#cc6666"},"hljs-template-variable":{color:"#cc6666"},"hljs-tag":{color:"#cc6666"},"hljs-name":{color:"#cc6666"},"hljs-selector-id":{color:"#cc6666"},"hljs-selector-class":{color:"#cc6666"},"hljs-regexp":{color:"#cc6666"},"hljs-deletion":{color:"#cc6666"},"hljs-number":{color:"#de935f"},"hljs-built_in":{color:"#de935f"},"hljs-builtin-name":{color:"#de935f"},"hljs-literal":{color:"#de935f"},"hljs-type":{color:"#de935f"},"hljs-params":{color:"#de935f"},"hljs-meta":{color:"#de935f"},"hljs-link":{color:"#de935f"},"hljs-attribute":{color:"#f0c674"},"hljs-string":{color:"#b5bd68"},"hljs-symbol":{color:"#b5bd68"},"hljs-bullet":{color:"#b5bd68"},"hljs-addition":{color:"#b5bd68"},"hljs-title":{color:"#81a2be"},"hljs-section":{color:"#81a2be"},"hljs-keyword":{color:"#b294bb"},"hljs-selector-tag":{color:"#b294bb"},hljs:{display:"block",overflowX:"auto",background:"#1d1f21",color:"#c5c8c6",padding:"0.5em"},"hljs-emphasis":{fontStyle:"italic"},"hljs-strong":{fontWeight:"bold"}}},G=o()(K),Z=e=>i()(G).call(G,e)?K[e]:(console.warn(`Request style '${e}' is not available, returning default instead`),J)},90242:(e,t,r)=>{"use strict";r.d(t,{mz:()=>pe,oG:()=>fe,AF:()=>he,LQ:()=>de,Kn:()=>me,Wl:()=>ge,kJ:()=>ve,HP:()=>ye,Ay:()=>be,Q2:()=>we,_5:()=>Ee,iQ:()=>xe,gp:()=>_e,DR:()=>Se,Zl:()=>Ae,Ik:()=>Ce,xi:()=>Pe,UG:()=>Re,r3:()=>Me,wh:()=>De,GZ:()=>Le,be:()=>Be,Nm:()=>Fe,hW:()=>ze,QG:()=>Ue,oJ:()=>qe,J6:()=>Ve,nX:()=>$e,po:()=>We,XV:()=>He,Pz:()=>Je,D$:()=>Ke,V9:()=>Ge,cz:()=>Ze,Uj:()=>Ye,Xb:()=>Qe,O2:()=>et});var n=r(58309),o=r.n(n),a=r(97606),i=r.n(a),s=r(74386),l=r.n(s),u=r(86),c=r.n(u),p=r(14418),f=r.n(p),h=r(28222),d=r.n(h),m=(r(11189),r(24282)),g=r.n(m),v=r(76986),y=r.n(v),b=r(2578),w=r.n(b),E=r(24278),x=r.n(E),_=(r(39022),r(92039)),S=r.n(_),A=(r(58118),r(35627)),k=r.n(A),C=r(11882),O=r.n(C),j=r(51679),I=r.n(j),N=r(27043),T=r.n(N),P=r(81607),R=r.n(P),M=r(43393),D=r.n(M),L=r(17967),B=r(68929),F=r.n(B),z=r(11700),U=r.n(z),q=r(88306),V=r.n(q),$=r(13311),W=r.n($),H=r(59704),J=r.n(H),K=r(77813),G=r.n(K),Z=r(23560),Y=r.n(Z),Q=r(57050),X=r(27504),ee=r(8269),te=r.n(ee),re=r(19069),ne=r(92282),oe=r.n(ne),ae=r(89072),ie=r.n(ae),se=r(1272),le=r(48764).Buffer;const ue="default",ce=e=>D().Iterable.isIterable(e);function pe(e){return me(e)?ce(e)?e.toJS():e:{}}function fe(e){var t,r;if(ce(e))return e;if(e instanceof X.Z.File)return e;if(!me(e))return e;if(o()(e))return i()(r=D().Seq(e)).call(r,fe).toList();if(Y()(l()(e))){var n;const t=function(e){if(!Y()(l()(e)))return e;const t={},r="_**[]",n={};for(let o of l()(e).call(e))if(t[o[0]]||n[o[0]]&&n[o[0]].containsMultiple){if(!n[o[0]]){n[o[0]]={containsMultiple:!0,length:1},t[`${o[0]}${r}${n[o[0]].length}`]=t[o[0]],delete t[o[0]]}n[o[0]].length+=1,t[`${o[0]}${r}${n[o[0]].length}`]=o[1]}else t[o[0]]=o[1];return t}(e);return i()(n=D().OrderedMap(t)).call(n,fe)}return i()(t=D().OrderedMap(e)).call(t,fe)}function he(e){return o()(e)?e:[e]}function de(e){return"function"==typeof e}function me(e){return!!e&&"object"==typeof e}function ge(e){return"function"==typeof e}function ve(e){return o()(e)}const ye=V();function be(e,t){var r;return g()(r=d()(e)).call(r,((r,n)=>(r[n]=t(e[n],n),r)),{})}function we(e,t){var r;return g()(r=d()(e)).call(r,((r,n)=>{let o=t(e[n],n);return o&&"object"==typeof o&&y()(r,o),r}),{})}function Ee(e){return t=>{let{dispatch:r,getState:n}=t;return t=>r=>"function"==typeof r?r(e()):t(r)}}function xe(e){var t;let r=e.keySeq();return r.contains(ue)?ue:w()(t=f()(r).call(r,(e=>"2"===(e+"")[0]))).call(t).first()}function _e(e,t){if(!D().Iterable.isIterable(e))return D().List();let r=e.getIn(o()(t)?t:[t]);return D().List.isList(r)?r:D().List()}function Se(e){let t,r=[/filename\*=[^']+'\w*'"([^"]+)";?/i,/filename\*=[^']+'\w*'([^;]+);?/i,/filename="([^;]*);?"/i,/filename=([^;]*);?/i];if(S()(r).call(r,(r=>(t=r.exec(e),null!==t))),null!==t&&t.length>1)try{return decodeURIComponent(t[1])}catch(e){console.error(e)}return null}function Ae(e){return t=e.replace(/\.[^./]*$/,""),U()(F()(t));var t}function ke(e,t,r,n,a){if(!t)return[];let s=[],l=t.get("nullable"),u=t.get("required"),p=t.get("maximum"),h=t.get("minimum"),d=t.get("type"),m=t.get("format"),g=t.get("maxLength"),v=t.get("minLength"),y=t.get("uniqueItems"),b=t.get("maxItems"),w=t.get("minItems"),E=t.get("pattern");const x=r||!0===u,_=null!=e;if(l&&null===e||!d||!(x||_&&"array"===d||!(!x&&!_)))return[];let A="string"===d&&e,k="array"===d&&o()(e)&&e.length,C="array"===d&&D().List.isList(e)&&e.count();const O=[A,k,C,"array"===d&&"string"==typeof e&&e,"file"===d&&e instanceof X.Z.File,"boolean"===d&&(e||!1===e),"number"===d&&(e||0===e),"integer"===d&&(e||0===e),"object"===d&&"object"==typeof e&&null!==e,"object"===d&&"string"==typeof e&&e],j=S()(O).call(O,(e=>!!e));if(x&&!j&&!n)return s.push("Required field is not provided"),s;if("object"===d&&(null===a||"application/json"===a)){let r=e;if("string"==typeof e)try{r=JSON.parse(e)}catch(e){return s.push("Parameter string value must be valid JSON"),s}var I;if(t&&t.has("required")&&ge(u.isList)&&u.isList()&&c()(u).call(u,(e=>{void 0===r[e]&&s.push({propKey:e,error:"Required property not found"})})),t&&t.has("properties"))c()(I=t.get("properties")).call(I,((e,t)=>{const o=ke(r[t],e,!1,n,a);s.push(...i()(o).call(o,(e=>({propKey:t,error:e}))))}))}if(E){let t=((e,t)=>{if(!new RegExp(t).test(e))return"Value must follow pattern "+t})(e,E);t&&s.push(t)}if(w&&"array"===d){let t=((e,t)=>{if(!e&&t>=1||e&&e.length{if(e&&e.length>t)return`Array must not contain more then ${t} item${1===t?"":"s"}`})(e,b);t&&s.push({needRemove:!0,error:t})}if(y&&"array"===d){let t=((e,t)=>{if(e&&("true"===t||!0===t)){const t=(0,M.fromJS)(e),r=t.toSet();if(e.length>r.size){let e=(0,M.Set)();if(c()(t).call(t,((r,n)=>{f()(t).call(t,(e=>ge(e.equals)?e.equals(r):e===r)).size>1&&(e=e.add(n))})),0!==e.size)return i()(e).call(e,(e=>({index:e,error:"No duplicates allowed."}))).toArray()}}})(e,y);t&&s.push(...t)}if(g||0===g){let t=((e,t)=>{if(e.length>t)return`Value must be no longer than ${t} character${1!==t?"s":""}`})(e,g);t&&s.push(t)}if(v){let t=((e,t)=>{if(e.length{if(e>t)return`Value must be less than ${t}`})(e,p);t&&s.push(t)}if(h||0===h){let t=((e,t)=>{if(e{if(isNaN(Date.parse(e)))return"Value must be a DateTime"})(e):"uuid"===m?(e=>{if(e=e.toString().toLowerCase(),!/^[{(]?[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}[)}]?$/.test(e))return"Value must be a Guid"})(e):(e=>{if(e&&"string"!=typeof e)return"Value must be a string"})(e),!t)return s;s.push(t)}else if("boolean"===d){let t=(e=>{if("true"!==e&&"false"!==e&&!0!==e&&!1!==e)return"Value must be a boolean"})(e);if(!t)return s;s.push(t)}else if("number"===d){let t=(e=>{if(!/^-?\d+(\.?\d+)?$/.test(e))return"Value must be a number"})(e);if(!t)return s;s.push(t)}else if("integer"===d){let t=(e=>{if(!/^-?\d+$/.test(e))return"Value must be an integer"})(e);if(!t)return s;s.push(t)}else if("array"===d){if(!k&&!C)return s;e&&c()(e).call(e,((e,r)=>{const o=ke(e,t.get("items"),!1,n,a);s.push(...i()(o).call(o,(e=>({index:r,error:e}))))}))}else if("file"===d){let t=(e=>{if(e&&!(e instanceof X.Z.File))return"Value must be a file"})(e);if(!t)return s;s.push(t)}return s}const Ce=function(e,t){let{isOAS3:r=!1,bypassRequiredCheck:n=!1}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=e.get("required"),{schema:a,parameterContentMediaType:i}=(0,re.Z)(e,{isOAS3:r});return ke(t,a,o,n,i)},Oe=(e,t,r)=>{if(e&&!e.xml&&(e.xml={}),e&&!e.xml.name){if(!e.$$ref&&(e.type||e.items||e.properties||e.additionalProperties))return'\n\x3c!-- XML example cannot be generated; root element name is undefined --\x3e';if(e.$$ref){let t=e.$$ref.match(/\S*\/(\S+)$/);e.xml.name=t[1]}}return(0,Q.memoizedCreateXMLExample)(e,t,r)},je=[{when:/json/,shouldStringifyTypes:["string"]}],Ie=["object"],Ne=(e,t,r,n)=>{const o=(0,Q.memoizedSampleFromSchema)(e,t,n),a=typeof o,i=g()(je).call(je,((e,t)=>t.when.test(r)?[...e,...t.shouldStringifyTypes]:e),Ie);return J()(i,(e=>e===a))?k()(o,null,2):o},Te=(e,t,r,n)=>{const o=Ne(e,t,r,n);let a;try{a=se.ZP.dump(se.ZP.load(o),{lineWidth:-1},{schema:se.A8}),"\n"===a[a.length-1]&&(a=x()(a).call(a,0,a.length-1))}catch(e){return console.error(e),"error: could not generate yaml example"}return a.replace(/\t/g," ")},Pe=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:void 0;return e&&ge(e.toJS)&&(e=e.toJS()),n&&ge(n.toJS)&&(n=n.toJS()),/xml/.test(t)?Oe(e,r,n):/(yaml|yml)/.test(t)?Te(e,r,t,n):Ne(e,r,t,n)},Re=()=>{let e={},t=X.Z.location.search;if(!t)return{};if(""!=t){let r=t.substr(1).split("&");for(let t in r)Object.prototype.hasOwnProperty.call(r,t)&&(t=r[t].split("="),e[decodeURIComponent(t[0])]=t[1]&&decodeURIComponent(t[1])||"")}return e},Me=e=>{let t;return t=e instanceof le?e:le.from(e.toString(),"utf-8"),t.toString("base64")},De={operationsSorter:{alpha:(e,t)=>e.get("path").localeCompare(t.get("path")),method:(e,t)=>e.get("method").localeCompare(t.get("method"))},tagsSorter:{alpha:(e,t)=>e.localeCompare(t)}},Le=e=>{let t=[];for(let r in e){let n=e[r];void 0!==n&&""!==n&&t.push([r,"=",encodeURIComponent(n).replace(/%20/g,"+")].join(""))}return t.join("&")},Be=(e,t,r)=>!!W()(r,(r=>G()(e[r],t[r])));function Fe(e){return"string"!=typeof e||""===e?"":(0,L.N)(e)}function ze(e){return!(!e||O()(e).call(e,"localhost")>=0||O()(e).call(e,"127.0.0.1")>=0||"none"===e)}function Ue(e){if(!D().OrderedMap.isOrderedMap(e))return null;if(!e.size)return null;const t=I()(e).call(e,((e,t)=>T()(t).call(t,"2")&&d()(e.get("content")||{}).length>0)),r=e.get("default")||D().OrderedMap(),n=(r.get("content")||D().OrderedMap()).keySeq().toJS().length?r:null;return t||n}const qe=e=>"string"==typeof e||e instanceof String?R()(e).call(e).replace(/\s/g,"%20"):"",Ve=e=>te()(qe(e).replace(/%20/g,"_")),$e=e=>f()(e).call(e,((e,t)=>/^x-/.test(t))),We=e=>f()(e).call(e,((e,t)=>/^pattern|maxLength|minLength|maximum|minimum/.test(t)));function He(e,t){var r;let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:()=>!0;if("object"!=typeof e||o()(e)||null===e||!t)return e;const a=y()({},e);return c()(r=d()(a)).call(r,(e=>{e===t&&n(a[e],e)?delete a[e]:a[e]=He(a[e],t,n)})),a}function Je(e){if("string"==typeof e)return e;if(e&&e.toJS&&(e=e.toJS()),"object"==typeof e&&null!==e)try{return k()(e,null,2)}catch(t){return String(e)}return null==e?"":e.toString()}function Ke(e){return"number"==typeof e?e.toString():e}function Ge(e){let{returnAll:t=!1,allowHashes:r=!0}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!D().Map.isMap(e))throw new Error("paramToIdentifier: received a non-Im.Map parameter as input");const n=e.get("name"),o=e.get("in");let a=[];return e&&e.hashCode&&o&&n&&r&&a.push(`${o}.${n}.hash-${e.hashCode()}`),o&&n&&a.push(`${o}.${n}`),a.push(n),t?a:a[0]||""}function Ze(e,t){var r;const n=Ge(e,{returnAll:!0});return f()(r=i()(n).call(n,(e=>t[e]))).call(r,(e=>void 0!==e))[0]}function Ye(){return Xe(oe()(32).toString("base64"))}function Qe(e){return Xe(ie()("sha256").update(e).digest("base64"))}function Xe(e){return e.replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}const et=e=>!e||!(!ce(e)||!e.isEmpty())},2518:(e,t,r)=>{"use strict";function n(e){return function(e){try{return!!JSON.parse(e)}catch(e){return null}}(e)?"json":null}r.d(t,{O:()=>n})},27504:(e,t,r)=>{"use strict";r.d(t,{Z:()=>n});const n=function(){var e={location:{},history:{},open:()=>{},close:()=>{},File:function(){}};if("undefined"==typeof window)return e;try{e=window;for(var t of["File","Blob","FormData"])t in window&&(e[t]=window[t])}catch(e){console.error(e)}return e}()},19069:(e,t,r)=>{"use strict";r.d(t,{Z:()=>c});var n=r(14418),o=r.n(n),a=r(58118),i=r.n(a),s=r(43393),l=r.n(s);const u=l().Set.of("type","format","items","default","maximum","exclusiveMaximum","minimum","exclusiveMinimum","maxLength","minLength","pattern","maxItems","minItems","uniqueItems","enum","multipleOf");function c(e){let{isOAS3:t}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!l().Map.isMap(e))return{schema:l().Map(),parameterContentMediaType:null};if(!t)return"body"===e.get("in")?{schema:e.get("schema",l().Map()),parameterContentMediaType:null}:{schema:o()(e).call(e,((e,t)=>i()(u).call(u,t))),parameterContentMediaType:null};if(e.get("content")){const t=e.get("content",l().Map({})).keySeq().first();return{schema:e.getIn(["content",t,"schema"],l().Map()),parameterContentMediaType:t}}return{schema:e.get("schema",l().Map()),parameterContentMediaType:null}}},60314:(e,t,r)=>{"use strict";r.d(t,{Z:()=>x});var n=r(58309),o=r.n(n),a=r(2250),i=r.n(a),s=r(25110),l=r.n(s),u=r(8712),c=r.n(u),p=r(51679),f=r.n(p),h=r(12373),d=r.n(h),m=r(18492),g=r.n(m),v=r(88306),y=r.n(v);const b=e=>t=>o()(e)&&o()(t)&&e.length===t.length&&i()(e).call(e,((e,r)=>e===t[r])),w=function(){for(var e=arguments.length,t=new Array(e),r=0;r1&&void 0!==arguments[1]?arguments[1]:w;const{Cache:r}=y();y().Cache=E;const n=y()(e,t);return y().Cache=r,n}},79742:(e,t)=>{"use strict";t.byteLength=function(e){var t=l(e),r=t[0],n=t[1];return 3*(r+n)/4-n},t.toByteArray=function(e){var t,r,a=l(e),i=a[0],s=a[1],u=new o(function(e,t,r){return 3*(t+r)/4-r}(0,i,s)),c=0,p=s>0?i-4:i;for(r=0;r>16&255,u[c++]=t>>8&255,u[c++]=255&t;2===s&&(t=n[e.charCodeAt(r)]<<2|n[e.charCodeAt(r+1)]>>4,u[c++]=255&t);1===s&&(t=n[e.charCodeAt(r)]<<10|n[e.charCodeAt(r+1)]<<4|n[e.charCodeAt(r+2)]>>2,u[c++]=t>>8&255,u[c++]=255&t);return u},t.fromByteArray=function(e){for(var t,n=e.length,o=n%3,a=[],i=16383,s=0,l=n-o;sl?l:s+i));1===o?(t=e[n-1],a.push(r[t>>2]+r[t<<4&63]+"==")):2===o&&(t=(e[n-2]<<8)+e[n-1],a.push(r[t>>10]+r[t>>4&63]+r[t<<2&63]+"="));return a.join("")};for(var r=[],n=[],o="undefined"!=typeof Uint8Array?Uint8Array:Array,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",i=0,s=a.length;i0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");return-1===r&&(r=t),[r,r===t?0:4-r%4]}function u(e,t,n){for(var o,a,i=[],s=t;s>18&63]+r[a>>12&63]+r[a>>6&63]+r[63&a]);return i.join("")}n["-".charCodeAt(0)]=62,n["_".charCodeAt(0)]=63},48764:(e,t,r)=>{"use strict";const n=r(79742),o=r(80645),a="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;t.Buffer=l,t.SlowBuffer=function(e){+e!=e&&(e=0);return l.alloc(+e)},t.INSPECT_MAX_BYTES=50;const i=2147483647;function s(e){if(e>i)throw new RangeError('The value "'+e+'" is invalid for option "size"');const t=new Uint8Array(e);return Object.setPrototypeOf(t,l.prototype),t}function l(e,t,r){if("number"==typeof e){if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return p(e)}return u(e,t,r)}function u(e,t,r){if("string"==typeof e)return function(e,t){"string"==typeof t&&""!==t||(t="utf8");if(!l.isEncoding(t))throw new TypeError("Unknown encoding: "+t);const r=0|m(e,t);let n=s(r);const o=n.write(e,t);o!==r&&(n=n.slice(0,o));return n}(e,t);if(ArrayBuffer.isView(e))return function(e){if(G(e,Uint8Array)){const t=new Uint8Array(e);return h(t.buffer,t.byteOffset,t.byteLength)}return f(e)}(e);if(null==e)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(G(e,ArrayBuffer)||e&&G(e.buffer,ArrayBuffer))return h(e,t,r);if("undefined"!=typeof SharedArrayBuffer&&(G(e,SharedArrayBuffer)||e&&G(e.buffer,SharedArrayBuffer)))return h(e,t,r);if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type number');const n=e.valueOf&&e.valueOf();if(null!=n&&n!==e)return l.from(n,t,r);const o=function(e){if(l.isBuffer(e)){const t=0|d(e.length),r=s(t);return 0===r.length||e.copy(r,0,0,t),r}if(void 0!==e.length)return"number"!=typeof e.length||Z(e.length)?s(0):f(e);if("Buffer"===e.type&&Array.isArray(e.data))return f(e.data)}(e);if(o)return o;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return l.from(e[Symbol.toPrimitive]("string"),t,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function c(e){if("number"!=typeof e)throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function p(e){return c(e),s(e<0?0:0|d(e))}function f(e){const t=e.length<0?0:0|d(e.length),r=s(t);for(let n=0;n=i)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+i.toString(16)+" bytes");return 0|e}function m(e,t){if(l.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||G(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);const r=e.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===r)return 0;let o=!1;for(;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return H(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return J(e).length;default:if(o)return n?-1:H(e).length;t=(""+t).toLowerCase(),o=!0}}function g(e,t,r){let n=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return I(this,t,r);case"utf8":case"utf-8":return k(this,t,r);case"ascii":return O(this,t,r);case"latin1":case"binary":return j(this,t,r);case"base64":return A(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return N(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}function v(e,t,r){const n=e[t];e[t]=e[r],e[r]=n}function y(e,t,r,n,o){if(0===e.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),Z(r=+r)&&(r=o?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(o)return-1;r=e.length-1}else if(r<0){if(!o)return-1;r=0}if("string"==typeof t&&(t=l.from(t,n)),l.isBuffer(t))return 0===t.length?-1:b(e,t,r,n,o);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):b(e,[t],r,n,o);throw new TypeError("val must be string, number or Buffer")}function b(e,t,r,n,o){let a,i=1,s=e.length,l=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(e.length<2||t.length<2)return-1;i=2,s/=2,l/=2,r/=2}function u(e,t){return 1===i?e[t]:e.readUInt16BE(t*i)}if(o){let n=-1;for(a=r;as&&(r=s-l),a=r;a>=0;a--){let r=!0;for(let n=0;no&&(n=o):n=o;const a=t.length;let i;for(n>a/2&&(n=a/2),i=0;i>8,o=r%256,a.push(o),a.push(n);return a}(t,e.length-r),e,r,n)}function A(e,t,r){return 0===t&&r===e.length?n.fromByteArray(e):n.fromByteArray(e.slice(t,r))}function k(e,t,r){r=Math.min(e.length,r);const n=[];let o=t;for(;o239?4:t>223?3:t>191?2:1;if(o+i<=r){let r,n,s,l;switch(i){case 1:t<128&&(a=t);break;case 2:r=e[o+1],128==(192&r)&&(l=(31&t)<<6|63&r,l>127&&(a=l));break;case 3:r=e[o+1],n=e[o+2],128==(192&r)&&128==(192&n)&&(l=(15&t)<<12|(63&r)<<6|63&n,l>2047&&(l<55296||l>57343)&&(a=l));break;case 4:r=e[o+1],n=e[o+2],s=e[o+3],128==(192&r)&&128==(192&n)&&128==(192&s)&&(l=(15&t)<<18|(63&r)<<12|(63&n)<<6|63&s,l>65535&&l<1114112&&(a=l))}}null===a?(a=65533,i=1):a>65535&&(a-=65536,n.push(a>>>10&1023|55296),a=56320|1023&a),n.push(a),o+=i}return function(e){const t=e.length;if(t<=C)return String.fromCharCode.apply(String,e);let r="",n=0;for(;nn.length?(l.isBuffer(t)||(t=l.from(t)),t.copy(n,o)):Uint8Array.prototype.set.call(n,t,o);else{if(!l.isBuffer(t))throw new TypeError('"list" argument must be an Array of Buffers');t.copy(n,o)}o+=t.length}return n},l.byteLength=m,l.prototype._isBuffer=!0,l.prototype.swap16=function(){const e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let t=0;tr&&(e+=" ... "),""},a&&(l.prototype[a]=l.prototype.inspect),l.prototype.compare=function(e,t,r,n,o){if(G(e,Uint8Array)&&(e=l.from(e,e.offset,e.byteLength)),!l.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===n&&(n=0),void 0===o&&(o=this.length),t<0||r>e.length||n<0||o>this.length)throw new RangeError("out of range index");if(n>=o&&t>=r)return 0;if(n>=o)return-1;if(t>=r)return 1;if(this===e)return 0;let a=(o>>>=0)-(n>>>=0),i=(r>>>=0)-(t>>>=0);const s=Math.min(a,i),u=this.slice(n,o),c=e.slice(t,r);for(let e=0;e>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n="utf8")):(n=r,r=void 0)}const o=this.length-t;if((void 0===r||r>o)&&(r=o),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");let a=!1;for(;;)switch(n){case"hex":return w(this,e,t,r);case"utf8":case"utf-8":return E(this,e,t,r);case"ascii":case"latin1":case"binary":return x(this,e,t,r);case"base64":return _(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return S(this,e,t,r);default:if(a)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),a=!0}},l.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};const C=4096;function O(e,t,r){let n="";r=Math.min(e.length,r);for(let o=t;on)&&(r=n);let o="";for(let n=t;nr)throw new RangeError("Trying to access beyond buffer length")}function P(e,t,r,n,o,a){if(!l.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>o||te.length)throw new RangeError("Index out of range")}function R(e,t,r,n,o){q(t,n,o,e,r,7);let a=Number(t&BigInt(4294967295));e[r++]=a,a>>=8,e[r++]=a,a>>=8,e[r++]=a,a>>=8,e[r++]=a;let i=Number(t>>BigInt(32)&BigInt(4294967295));return e[r++]=i,i>>=8,e[r++]=i,i>>=8,e[r++]=i,i>>=8,e[r++]=i,r}function M(e,t,r,n,o){q(t,n,o,e,r,7);let a=Number(t&BigInt(4294967295));e[r+7]=a,a>>=8,e[r+6]=a,a>>=8,e[r+5]=a,a>>=8,e[r+4]=a;let i=Number(t>>BigInt(32)&BigInt(4294967295));return e[r+3]=i,i>>=8,e[r+2]=i,i>>=8,e[r+1]=i,i>>=8,e[r]=i,r+8}function D(e,t,r,n,o,a){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function L(e,t,r,n,a){return t=+t,r>>>=0,a||D(e,0,r,4),o.write(e,t,r,n,23,4),r+4}function B(e,t,r,n,a){return t=+t,r>>>=0,a||D(e,0,r,8),o.write(e,t,r,n,52,8),r+8}l.prototype.slice=function(e,t){const r=this.length;(e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=void 0===t?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t>>=0,t>>>=0,r||T(e,t,this.length);let n=this[e],o=1,a=0;for(;++a>>=0,t>>>=0,r||T(e,t,this.length);let n=this[e+--t],o=1;for(;t>0&&(o*=256);)n+=this[e+--t]*o;return n},l.prototype.readUint8=l.prototype.readUInt8=function(e,t){return e>>>=0,t||T(e,1,this.length),this[e]},l.prototype.readUint16LE=l.prototype.readUInt16LE=function(e,t){return e>>>=0,t||T(e,2,this.length),this[e]|this[e+1]<<8},l.prototype.readUint16BE=l.prototype.readUInt16BE=function(e,t){return e>>>=0,t||T(e,2,this.length),this[e]<<8|this[e+1]},l.prototype.readUint32LE=l.prototype.readUInt32LE=function(e,t){return e>>>=0,t||T(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},l.prototype.readUint32BE=l.prototype.readUInt32BE=function(e,t){return e>>>=0,t||T(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},l.prototype.readBigUInt64LE=Q((function(e){V(e>>>=0,"offset");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||$(e,this.length-8);const n=t+256*this[++e]+65536*this[++e]+this[++e]*2**24,o=this[++e]+256*this[++e]+65536*this[++e]+r*2**24;return BigInt(n)+(BigInt(o)<>>=0,"offset");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||$(e,this.length-8);const n=t*2**24+65536*this[++e]+256*this[++e]+this[++e],o=this[++e]*2**24+65536*this[++e]+256*this[++e]+r;return(BigInt(n)<>>=0,t>>>=0,r||T(e,t,this.length);let n=this[e],o=1,a=0;for(;++a=o&&(n-=Math.pow(2,8*t)),n},l.prototype.readIntBE=function(e,t,r){e>>>=0,t>>>=0,r||T(e,t,this.length);let n=t,o=1,a=this[e+--n];for(;n>0&&(o*=256);)a+=this[e+--n]*o;return o*=128,a>=o&&(a-=Math.pow(2,8*t)),a},l.prototype.readInt8=function(e,t){return e>>>=0,t||T(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},l.prototype.readInt16LE=function(e,t){e>>>=0,t||T(e,2,this.length);const r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},l.prototype.readInt16BE=function(e,t){e>>>=0,t||T(e,2,this.length);const r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},l.prototype.readInt32LE=function(e,t){return e>>>=0,t||T(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},l.prototype.readInt32BE=function(e,t){return e>>>=0,t||T(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},l.prototype.readBigInt64LE=Q((function(e){V(e>>>=0,"offset");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||$(e,this.length-8);const n=this[e+4]+256*this[e+5]+65536*this[e+6]+(r<<24);return(BigInt(n)<>>=0,"offset");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||$(e,this.length-8);const n=(t<<24)+65536*this[++e]+256*this[++e]+this[++e];return(BigInt(n)<>>=0,t||T(e,4,this.length),o.read(this,e,!0,23,4)},l.prototype.readFloatBE=function(e,t){return e>>>=0,t||T(e,4,this.length),o.read(this,e,!1,23,4)},l.prototype.readDoubleLE=function(e,t){return e>>>=0,t||T(e,8,this.length),o.read(this,e,!0,52,8)},l.prototype.readDoubleBE=function(e,t){return e>>>=0,t||T(e,8,this.length),o.read(this,e,!1,52,8)},l.prototype.writeUintLE=l.prototype.writeUIntLE=function(e,t,r,n){if(e=+e,t>>>=0,r>>>=0,!n){P(this,e,t,r,Math.pow(2,8*r)-1,0)}let o=1,a=0;for(this[t]=255&e;++a>>=0,r>>>=0,!n){P(this,e,t,r,Math.pow(2,8*r)-1,0)}let o=r-1,a=1;for(this[t+o]=255&e;--o>=0&&(a*=256);)this[t+o]=e/a&255;return t+r},l.prototype.writeUint8=l.prototype.writeUInt8=function(e,t,r){return e=+e,t>>>=0,r||P(this,e,t,1,255,0),this[t]=255&e,t+1},l.prototype.writeUint16LE=l.prototype.writeUInt16LE=function(e,t,r){return e=+e,t>>>=0,r||P(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},l.prototype.writeUint16BE=l.prototype.writeUInt16BE=function(e,t,r){return e=+e,t>>>=0,r||P(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},l.prototype.writeUint32LE=l.prototype.writeUInt32LE=function(e,t,r){return e=+e,t>>>=0,r||P(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},l.prototype.writeUint32BE=l.prototype.writeUInt32BE=function(e,t,r){return e=+e,t>>>=0,r||P(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},l.prototype.writeBigUInt64LE=Q((function(e,t=0){return R(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))})),l.prototype.writeBigUInt64BE=Q((function(e,t=0){return M(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))})),l.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t>>>=0,!n){const n=Math.pow(2,8*r-1);P(this,e,t,r,n-1,-n)}let o=0,a=1,i=0;for(this[t]=255&e;++o>0)-i&255;return t+r},l.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t>>>=0,!n){const n=Math.pow(2,8*r-1);P(this,e,t,r,n-1,-n)}let o=r-1,a=1,i=0;for(this[t+o]=255&e;--o>=0&&(a*=256);)e<0&&0===i&&0!==this[t+o+1]&&(i=1),this[t+o]=(e/a>>0)-i&255;return t+r},l.prototype.writeInt8=function(e,t,r){return e=+e,t>>>=0,r||P(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},l.prototype.writeInt16LE=function(e,t,r){return e=+e,t>>>=0,r||P(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},l.prototype.writeInt16BE=function(e,t,r){return e=+e,t>>>=0,r||P(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},l.prototype.writeInt32LE=function(e,t,r){return e=+e,t>>>=0,r||P(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},l.prototype.writeInt32BE=function(e,t,r){return e=+e,t>>>=0,r||P(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},l.prototype.writeBigInt64LE=Q((function(e,t=0){return R(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),l.prototype.writeBigInt64BE=Q((function(e,t=0){return M(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),l.prototype.writeFloatLE=function(e,t,r){return L(this,e,t,!0,r)},l.prototype.writeFloatBE=function(e,t,r){return L(this,e,t,!1,r)},l.prototype.writeDoubleLE=function(e,t,r){return B(this,e,t,!0,r)},l.prototype.writeDoubleBE=function(e,t,r){return B(this,e,t,!1,r)},l.prototype.copy=function(e,t,r,n){if(!l.isBuffer(e))throw new TypeError("argument should be a Buffer");if(r||(r=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),"number"==typeof e)for(o=t;o=n+4;r-=3)t=`_${e.slice(r-3,r)}${t}`;return`${e.slice(0,r)}${t}`}function q(e,t,r,n,o,a){if(e>r||e3?0===t||t===BigInt(0)?`>= 0${n} and < 2${n} ** ${8*(a+1)}${n}`:`>= -(2${n} ** ${8*(a+1)-1}${n}) and < 2 ** ${8*(a+1)-1}${n}`:`>= ${t}${n} and <= ${r}${n}`,new F.ERR_OUT_OF_RANGE("value",o,e)}!function(e,t,r){V(t,"offset"),void 0!==e[t]&&void 0!==e[t+r]||$(t,e.length-(r+1))}(n,o,a)}function V(e,t){if("number"!=typeof e)throw new F.ERR_INVALID_ARG_TYPE(t,"number",e)}function $(e,t,r){if(Math.floor(e)!==e)throw V(e,r),new F.ERR_OUT_OF_RANGE(r||"offset","an integer",e);if(t<0)throw new F.ERR_BUFFER_OUT_OF_BOUNDS;throw new F.ERR_OUT_OF_RANGE(r||"offset",`>= ${r?1:0} and <= ${t}`,e)}z("ERR_BUFFER_OUT_OF_BOUNDS",(function(e){return e?`${e} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"}),RangeError),z("ERR_INVALID_ARG_TYPE",(function(e,t){return`The "${e}" argument must be of type number. Received type ${typeof t}`}),TypeError),z("ERR_OUT_OF_RANGE",(function(e,t,r){let n=`The value of "${e}" is out of range.`,o=r;return Number.isInteger(r)&&Math.abs(r)>2**32?o=U(String(r)):"bigint"==typeof r&&(o=String(r),(r>BigInt(2)**BigInt(32)||r<-(BigInt(2)**BigInt(32)))&&(o=U(o)),o+="n"),n+=` It must be ${t}. Received ${o}`,n}),RangeError);const W=/[^+/0-9A-Za-z-_]/g;function H(e,t){let r;t=t||1/0;const n=e.length;let o=null;const a=[];for(let i=0;i55295&&r<57344){if(!o){if(r>56319){(t-=3)>-1&&a.push(239,191,189);continue}if(i+1===n){(t-=3)>-1&&a.push(239,191,189);continue}o=r;continue}if(r<56320){(t-=3)>-1&&a.push(239,191,189),o=r;continue}r=65536+(o-55296<<10|r-56320)}else o&&(t-=3)>-1&&a.push(239,191,189);if(o=null,r<128){if((t-=1)<0)break;a.push(r)}else if(r<2048){if((t-=2)<0)break;a.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;a.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;a.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return a}function J(e){return n.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(W,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function K(e,t,r,n){let o;for(o=0;o=t.length||o>=e.length);++o)t[o+r]=e[o];return o}function G(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function Z(e){return e!=e}const Y=function(){const e="0123456789abcdef",t=new Array(256);for(let r=0;r<16;++r){const n=16*r;for(let o=0;o<16;++o)t[n+o]=e[r]+e[o]}return t}();function Q(e){return"undefined"==typeof BigInt?X:e}function X(){throw new Error("BigInt not supported")}},21924:(e,t,r)=>{"use strict";var n=r(40210),o=r(55559),a=o(n("String.prototype.indexOf"));e.exports=function(e,t){var r=n(e,!!t);return"function"==typeof r&&a(e,".prototype.")>-1?o(r):r}},55559:(e,t,r)=>{"use strict";var n=r(58612),o=r(40210),a=o("%Function.prototype.apply%"),i=o("%Function.prototype.call%"),s=o("%Reflect.apply%",!0)||n.call(i,a),l=o("%Object.getOwnPropertyDescriptor%",!0),u=o("%Object.defineProperty%",!0),c=o("%Math.max%");if(u)try{u({},"a",{value:1})}catch(e){u=null}e.exports=function(e){var t=s(n,i,arguments);if(l&&u){var r=l(t,"length");r.configurable&&u(t,"length",{value:1+c(0,e.length-(arguments.length-1))})}return t};var p=function(){return s(n,a,arguments)};u?u(e.exports,"apply",{value:p}):e.exports.apply=p},94184:(e,t)=>{var r;!function(){"use strict";var n={}.hasOwnProperty;function o(){for(var e=[],t=0;t{"use strict";var n=r(11742),o={"text/plain":"Text","text/html":"Url",default:"Text"};e.exports=function(e,t){var r,a,i,s,l,u,c=!1;t||(t={}),r=t.debug||!1;try{if(i=n(),s=document.createRange(),l=document.getSelection(),(u=document.createElement("span")).textContent=e,u.style.all="unset",u.style.position="fixed",u.style.top=0,u.style.clip="rect(0, 0, 0, 0)",u.style.whiteSpace="pre",u.style.webkitUserSelect="text",u.style.MozUserSelect="text",u.style.msUserSelect="text",u.style.userSelect="text",u.addEventListener("copy",(function(n){if(n.stopPropagation(),t.format)if(n.preventDefault(),void 0===n.clipboardData){r&&console.warn("unable to use e.clipboardData"),r&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var a=o[t.format]||o.default;window.clipboardData.setData(a,e)}else n.clipboardData.clearData(),n.clipboardData.setData(t.format,e);t.onCopy&&(n.preventDefault(),t.onCopy(n.clipboardData))})),document.body.appendChild(u),s.selectNodeContents(u),l.addRange(s),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");c=!0}catch(n){r&&console.error("unable to copy using execCommand: ",n),r&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(t.format||"text",e),t.onCopy&&t.onCopy(window.clipboardData),c=!0}catch(n){r&&console.error("unable to copy using clipboardData: ",n),r&&console.error("falling back to prompt"),a=function(e){var t=(/mac os x/i.test(navigator.userAgent)?"⌘":"Ctrl")+"+C";return e.replace(/#{\s*key\s*}/g,t)}("message"in t?t.message:"Copy to clipboard: #{key}, Enter"),window.prompt(a,e)}}finally{l&&("function"==typeof l.removeRange?l.removeRange(s):l.removeAllRanges()),u&&document.body.removeChild(u),i()}return c}},95299:(e,t,r)=>{var n=r(24848);e.exports=n},83450:(e,t,r)=>{var n=r(83363);e.exports=n},66820:(e,t,r)=>{var n=r(56243);e.exports=n},5023:(e,t,r)=>{var n=r(72369);e.exports=n},90093:(e,t,r)=>{var n=r(28196);e.exports=n},3688:(e,t,r)=>{var n=r(11955);e.exports=n},83838:(e,t,r)=>{var n=r(46279);e.exports=n},15684:(e,t,r)=>{var n=r(19373);e.exports=n},99826:(e,t,r)=>{var n=r(28427);e.exports=n},84234:(e,t,r)=>{var n=r(82073);e.exports=n},65362:(e,t,r)=>{var n=r(63383);e.exports=n},32271:(e,t,r)=>{var n=r(14471);e.exports=n},91254:(e,t,r)=>{var n=r(57396);e.exports=n},43536:(e,t,r)=>{var n=r(41910);e.exports=n},37331:(e,t,r)=>{var n=r(79427);e.exports=n},68522:(e,t,r)=>{var n=r(62857);e.exports=n},73151:(e,t,r)=>{var n=r(9534);e.exports=n},99565:(e,t,r)=>{var n=r(96507);e.exports=n},45012:(e,t,r)=>{var n=r(23059);e.exports=n},78690:(e,t,r)=>{var n=r(16670);e.exports=n},25626:(e,t,r)=>{var n=r(27460);e.exports=n},80281:(e,t,r)=>{var n=r(92547);e.exports=n},40031:(e,t,r)=>{var n=r(46509);e.exports=n},54493:(e,t,r)=>{r(77971),r(53242);var n=r(54058);e.exports=n.Array.from},24034:(e,t,r)=>{r(92737);var n=r(54058);e.exports=n.Array.isArray},15367:(e,t,r)=>{r(85906);var n=r(35703);e.exports=n("Array").concat},12710:(e,t,r)=>{r(66274),r(55967);var n=r(35703);e.exports=n("Array").entries},51459:(e,t,r)=>{r(48851);var n=r(35703);e.exports=n("Array").every},6172:(e,t,r)=>{r(80290);var n=r(35703);e.exports=n("Array").fill},62383:(e,t,r)=>{r(21501);var n=r(35703);e.exports=n("Array").filter},60009:(e,t,r)=>{r(44929);var n=r(35703);e.exports=n("Array").findIndex},17671:(e,t,r)=>{r(80833);var n=r(35703);e.exports=n("Array").find},99324:(e,t,r)=>{r(2437);var n=r(35703);e.exports=n("Array").forEach},80991:(e,t,r)=>{r(97690);var n=r(35703);e.exports=n("Array").includes},8700:(e,t,r)=>{r(99076);var n=r(35703);e.exports=n("Array").indexOf},95909:(e,t,r)=>{r(66274),r(55967);var n=r(35703);e.exports=n("Array").keys},6442:(e,t,r)=>{r(75915);var n=r(35703);e.exports=n("Array").lastIndexOf},23866:(e,t,r)=>{r(68787);var n=r(35703);e.exports=n("Array").map},52999:(e,t,r)=>{r(81876);var n=r(35703);e.exports=n("Array").reduce},91876:(e,t,r)=>{r(11490);var n=r(35703);e.exports=n("Array").reverse},24900:(e,t,r)=>{r(60186);var n=r(35703);e.exports=n("Array").slice},3824:(e,t,r)=>{r(36026);var n=r(35703);e.exports=n("Array").some},2948:(e,t,r)=>{r(4115);var n=r(35703);e.exports=n("Array").sort},78209:(e,t,r)=>{r(98611);var n=r(35703);e.exports=n("Array").splice},14423:(e,t,r)=>{r(66274),r(55967);var n=r(35703);e.exports=n("Array").values},81103:(e,t,r)=>{r(95160);var n=r(54058);e.exports=n.Date.now},27700:(e,t,r)=>{r(73381);var n=r(35703);e.exports=n("Function").bind},13830:(e,t,r)=>{r(66274),r(77971);var n=r(22902);e.exports=n},91031:(e,t,r)=>{r(52595),e.exports=r(21899)},16246:(e,t,r)=>{var n=r(7046),o=r(27700),a=Function.prototype;e.exports=function(e){var t=e.bind;return e===a||n(a,e)&&t===a.bind?o:t}},56043:(e,t,r)=>{var n=r(7046),o=r(15367),a=Array.prototype;e.exports=function(e){var t=e.concat;return e===a||n(a,e)&&t===a.concat?o:t}},13160:(e,t,r)=>{var n=r(7046),o=r(51459),a=Array.prototype;e.exports=function(e){var t=e.every;return e===a||n(a,e)&&t===a.every?o:t}},80446:(e,t,r)=>{var n=r(7046),o=r(6172),a=Array.prototype;e.exports=function(e){var t=e.fill;return e===a||n(a,e)&&t===a.fill?o:t}},2480:(e,t,r)=>{var n=r(7046),o=r(62383),a=Array.prototype;e.exports=function(e){var t=e.filter;return e===a||n(a,e)&&t===a.filter?o:t}},7147:(e,t,r)=>{var n=r(7046),o=r(60009),a=Array.prototype;e.exports=function(e){var t=e.findIndex;return e===a||n(a,e)&&t===a.findIndex?o:t}},32236:(e,t,r)=>{var n=r(7046),o=r(17671),a=Array.prototype;e.exports=function(e){var t=e.find;return e===a||n(a,e)&&t===a.find?o:t}},58557:(e,t,r)=>{var n=r(7046),o=r(80991),a=r(21631),i=Array.prototype,s=String.prototype;e.exports=function(e){var t=e.includes;return e===i||n(i,e)&&t===i.includes?o:"string"==typeof e||e===s||n(s,e)&&t===s.includes?a:t}},34570:(e,t,r)=>{var n=r(7046),o=r(8700),a=Array.prototype;e.exports=function(e){var t=e.indexOf;return e===a||n(a,e)&&t===a.indexOf?o:t}},57564:(e,t,r)=>{var n=r(7046),o=r(6442),a=Array.prototype;e.exports=function(e){var t=e.lastIndexOf;return e===a||n(a,e)&&t===a.lastIndexOf?o:t}},88287:(e,t,r)=>{var n=r(7046),o=r(23866),a=Array.prototype;e.exports=function(e){var t=e.map;return e===a||n(a,e)&&t===a.map?o:t}},68025:(e,t,r)=>{var n=r(7046),o=r(52999),a=Array.prototype;e.exports=function(e){var t=e.reduce;return e===a||n(a,e)&&t===a.reduce?o:t}},59257:(e,t,r)=>{var n=r(7046),o=r(80454),a=String.prototype;e.exports=function(e){var t=e.repeat;return"string"==typeof e||e===a||n(a,e)&&t===a.repeat?o:t}},91060:(e,t,r)=>{var n=r(7046),o=r(91876),a=Array.prototype;e.exports=function(e){var t=e.reverse;return e===a||n(a,e)&&t===a.reverse?o:t}},69601:(e,t,r)=>{var n=r(7046),o=r(24900),a=Array.prototype;e.exports=function(e){var t=e.slice;return e===a||n(a,e)&&t===a.slice?o:t}},28299:(e,t,r)=>{var n=r(7046),o=r(3824),a=Array.prototype;e.exports=function(e){var t=e.some;return e===a||n(a,e)&&t===a.some?o:t}},69355:(e,t,r)=>{var n=r(7046),o=r(2948),a=Array.prototype;e.exports=function(e){var t=e.sort;return e===a||n(a,e)&&t===a.sort?o:t}},18339:(e,t,r)=>{var n=r(7046),o=r(78209),a=Array.prototype;e.exports=function(e){var t=e.splice;return e===a||n(a,e)&&t===a.splice?o:t}},71611:(e,t,r)=>{var n=r(7046),o=r(3269),a=String.prototype;e.exports=function(e){var t=e.startsWith;return"string"==typeof e||e===a||n(a,e)&&t===a.startsWith?o:t}},62774:(e,t,r)=>{var n=r(7046),o=r(13348),a=String.prototype;e.exports=function(e){var t=e.trim;return"string"==typeof e||e===a||n(a,e)&&t===a.trim?o:t}},84426:(e,t,r)=>{r(32619);var n=r(54058),o=r(79730);n.JSON||(n.JSON={stringify:JSON.stringify}),e.exports=function(e,t,r){return o(n.JSON.stringify,null,arguments)}},91018:(e,t,r)=>{r(66274),r(37501),r(55967),r(77971);var n=r(54058);e.exports=n.Map},45999:(e,t,r)=>{r(49221);var n=r(54058);e.exports=n.Object.assign},35254:(e,t,r)=>{r(53882);var n=r(54058).Object;e.exports=function(e,t){return n.create(e,t)}},7702:(e,t,r)=>{r(74979);var n=r(54058).Object,o=e.exports=function(e,t){return n.defineProperties(e,t)};n.defineProperties.sham&&(o.sham=!0)},48171:(e,t,r)=>{r(86450);var n=r(54058).Object,o=e.exports=function(e,t,r){return n.defineProperty(e,t,r)};n.defineProperty.sham&&(o.sham=!0)},73081:(e,t,r)=>{r(94366);var n=r(54058);e.exports=n.Object.entries},286:(e,t,r)=>{r(46924);var n=r(54058).Object,o=e.exports=function(e,t){return n.getOwnPropertyDescriptor(e,t)};n.getOwnPropertyDescriptor.sham&&(o.sham=!0)},92766:(e,t,r)=>{r(88482);var n=r(54058);e.exports=n.Object.getOwnPropertyDescriptors},30498:(e,t,r)=>{r(35824);var n=r(54058);e.exports=n.Object.getOwnPropertySymbols},13966:(e,t,r)=>{r(17405);var n=r(54058);e.exports=n.Object.getPrototypeOf},48494:(e,t,r)=>{r(21724);var n=r(54058);e.exports=n.Object.keys},3065:(e,t,r)=>{r(90108);var n=r(54058);e.exports=n.Object.setPrototypeOf},98430:(e,t,r)=>{r(26614);var n=r(54058);e.exports=n.Object.values},52956:(e,t,r)=>{r(47627),r(66274),r(55967),r(98881),r(4560),r(91302),r(44349),r(77971);var n=r(54058);e.exports=n.Promise},21631:(e,t,r)=>{r(11035);var n=r(35703);e.exports=n("String").includes},80454:(e,t,r)=>{r(60986);var n=r(35703);e.exports=n("String").repeat},3269:(e,t,r)=>{r(94761);var n=r(35703);e.exports=n("String").startsWith},13348:(e,t,r)=>{r(57398);var n=r(35703);e.exports=n("String").trim},57473:(e,t,r)=>{r(85906),r(55967),r(35824),r(8555),r(52615),r(21732),r(35903),r(1825),r(28394),r(45915),r(61766),r(62737),r(89911),r(74315),r(63131),r(64714),r(70659),r(69120),r(79413),r(1502);var n=r(54058);e.exports=n.Symbol},24227:(e,t,r)=>{r(66274),r(55967),r(77971),r(1825);var n=r(11477);e.exports=n.f("iterator")},32304:(e,t,r)=>{r(66274),r(55967),r(54334);var n=r(54058);e.exports=n.WeakMap},27385:(e,t,r)=>{var n=r(95299);e.exports=n},81522:(e,t,r)=>{var n=r(83450);e.exports=n},32209:(e,t,r)=>{var n=r(66820);e.exports=n},30888:(e,t,r)=>{r(9668);var n=r(5023);e.exports=n},14122:(e,t,r)=>{var n=r(90093);e.exports=n},44442:(e,t,r)=>{var n=r(3688);e.exports=n},57152:(e,t,r)=>{var n=r(83838);e.exports=n},69447:(e,t,r)=>{var n=r(15684);e.exports=n},17579:(e,t,r)=>{var n=r(99826);e.exports=n},81493:(e,t,r)=>{var n=r(84234);e.exports=n},60269:(e,t,r)=>{var n=r(65362);e.exports=n},76094:(e,t,r)=>{var n=r(32271);e.exports=n},70573:(e,t,r)=>{var n=r(91254);e.exports=n},73685:(e,t,r)=>{var n=r(43536);e.exports=n},27533:(e,t,r)=>{var n=r(37331);e.exports=n},39057:(e,t,r)=>{var n=r(68522);e.exports=n},84710:(e,t,r)=>{var n=r(73151);e.exports=n},74303:(e,t,r)=>{var n=r(99565);e.exports=n},93799:(e,t,r)=>{var n=r(45012);e.exports=n},55122:(e,t,r)=>{var n=r(78690);e.exports=n},29531:(e,t,r)=>{var n=r(25626);r(89731),r(55708),r(30014),r(88731),e.exports=n},86600:(e,t,r)=>{var n=r(80281);r(28783),r(43975),r(65799),r(45414),r(46774),r(80620),r(36172),e.exports=n},9759:(e,t,r)=>{var n=r(40031);e.exports=n},24883:(e,t,r)=>{var n=r(21899),o=r(57475),a=r(69826),i=n.TypeError;e.exports=function(e){if(o(e))return e;throw i(a(e)+" is not a function")}},174:(e,t,r)=>{var n=r(21899),o=r(24284),a=r(69826),i=n.TypeError;e.exports=function(e){if(o(e))return e;throw i(a(e)+" is not a constructor")}},11851:(e,t,r)=>{var n=r(21899),o=r(57475),a=n.String,i=n.TypeError;e.exports=function(e){if("object"==typeof e||o(e))return e;throw i("Can't set "+a(e)+" as a prototype")}},18479:e=>{e.exports=function(){}},5743:(e,t,r)=>{var n=r(21899),o=r(7046),a=n.TypeError;e.exports=function(e,t){if(o(t,e))return e;throw a("Incorrect invocation")}},96059:(e,t,r)=>{var n=r(21899),o=r(10941),a=n.String,i=n.TypeError;e.exports=function(e){if(o(e))return e;throw i(a(e)+" is not an object")}},97135:(e,t,r)=>{var n=r(95981);e.exports=n((function(){if("function"==typeof ArrayBuffer){var e=new ArrayBuffer(8);Object.isExtensible(e)&&Object.defineProperty(e,"a",{value:8})}}))},91860:(e,t,r)=>{"use strict";var n=r(89678),o=r(59413),a=r(10623);e.exports=function(e){for(var t=n(this),r=a(t),i=arguments.length,s=o(i>1?arguments[1]:void 0,r),l=i>2?arguments[2]:void 0,u=void 0===l?r:o(l,r);u>s;)t[s++]=e;return t}},56837:(e,t,r)=>{"use strict";var n=r(3610).forEach,o=r(34194)("forEach");e.exports=o?[].forEach:function(e){return n(this,e,arguments.length>1?arguments[1]:void 0)}},11354:(e,t,r)=>{"use strict";var n=r(21899),o=r(86843),a=r(78834),i=r(89678),s=r(75196),l=r(6782),u=r(24284),c=r(10623),p=r(55449),f=r(53476),h=r(22902),d=n.Array;e.exports=function(e){var t=i(e),r=u(this),n=arguments.length,m=n>1?arguments[1]:void 0,g=void 0!==m;g&&(m=o(m,n>2?arguments[2]:void 0));var v,y,b,w,E,x,_=h(t),S=0;if(!_||this==d&&l(_))for(v=c(t),y=r?new this(v):d(v);v>S;S++)x=g?m(t[S],S):t[S],p(y,S,x);else for(E=(w=f(t,_)).next,y=r?new this:[];!(b=a(E,w)).done;S++)x=g?s(w,m,[b.value,S],!0):b.value,p(y,S,x);return y.length=S,y}},31692:(e,t,r)=>{var n=r(74529),o=r(59413),a=r(10623),i=function(e){return function(t,r,i){var s,l=n(t),u=a(l),c=o(i,u);if(e&&r!=r){for(;u>c;)if((s=l[c++])!=s)return!0}else for(;u>c;c++)if((e||c in l)&&l[c]===r)return e||c||0;return!e&&-1}};e.exports={includes:i(!0),indexOf:i(!1)}},3610:(e,t,r)=>{var n=r(86843),o=r(95329),a=r(37026),i=r(89678),s=r(10623),l=r(64692),u=o([].push),c=function(e){var t=1==e,r=2==e,o=3==e,c=4==e,p=6==e,f=7==e,h=5==e||p;return function(d,m,g,v){for(var y,b,w=i(d),E=a(w),x=n(m,g),_=s(E),S=0,A=v||l,k=t?A(d,_):r||f?A(d,0):void 0;_>S;S++)if((h||S in E)&&(b=x(y=E[S],S,w),e))if(t)k[S]=b;else if(b)switch(e){case 3:return!0;case 5:return y;case 6:return S;case 2:u(k,y)}else switch(e){case 4:return!1;case 7:u(k,y)}return p?-1:o||c?c:k}};e.exports={forEach:c(0),map:c(1),filter:c(2),some:c(3),every:c(4),find:c(5),findIndex:c(6),filterReject:c(7)}},67145:(e,t,r)=>{"use strict";var n=r(79730),o=r(74529),a=r(62435),i=r(10623),s=r(34194),l=Math.min,u=[].lastIndexOf,c=!!u&&1/[1].lastIndexOf(1,-0)<0,p=s("lastIndexOf"),f=c||!p;e.exports=f?function(e){if(c)return n(u,this,arguments)||0;var t=o(this),r=i(t),s=r-1;for(arguments.length>1&&(s=l(s,a(arguments[1]))),s<0&&(s=r+s);s>=0;s--)if(s in t&&t[s]===e)return s||0;return-1}:u},50568:(e,t,r)=>{var n=r(95981),o=r(99813),a=r(53385),i=o("species");e.exports=function(e){return a>=51||!n((function(){var t=[];return(t.constructor={})[i]=function(){return{foo:1}},1!==t[e](Boolean).foo}))}},34194:(e,t,r)=>{"use strict";var n=r(95981);e.exports=function(e,t){var r=[][e];return!!r&&n((function(){r.call(null,t||function(){throw 1},1)}))}},46499:(e,t,r)=>{var n=r(21899),o=r(24883),a=r(89678),i=r(37026),s=r(10623),l=n.TypeError,u=function(e){return function(t,r,n,u){o(r);var c=a(t),p=i(c),f=s(c),h=e?f-1:0,d=e?-1:1;if(n<2)for(;;){if(h in p){u=p[h],h+=d;break}if(h+=d,e?h<0:f<=h)throw l("Reduce of empty array with no initial value")}for(;e?h>=0:f>h;h+=d)h in p&&(u=r(u,p[h],h,c));return u}};e.exports={left:u(!1),right:u(!0)}},15790:(e,t,r)=>{var n=r(21899),o=r(59413),a=r(10623),i=r(55449),s=n.Array,l=Math.max;e.exports=function(e,t,r){for(var n=a(e),u=o(t,n),c=o(void 0===r?n:r,n),p=s(l(c-u,0)),f=0;u{var n=r(95329);e.exports=n([].slice)},61388:(e,t,r)=>{var n=r(15790),o=Math.floor,a=function(e,t){var r=e.length,l=o(r/2);return r<8?i(e,t):s(e,a(n(e,0,l),t),a(n(e,l),t),t)},i=function(e,t){for(var r,n,o=e.length,a=1;a0;)e[n]=e[--n];n!==a++&&(e[n]=r)}return e},s=function(e,t,r,n){for(var o=t.length,a=r.length,i=0,s=0;i{var n=r(21899),o=r(1052),a=r(24284),i=r(10941),s=r(99813)("species"),l=n.Array;e.exports=function(e){var t;return o(e)&&(t=e.constructor,(a(t)&&(t===l||o(t.prototype))||i(t)&&null===(t=t[s]))&&(t=void 0)),void 0===t?l:t}},64692:(e,t,r)=>{var n=r(5693);e.exports=function(e,t){return new(n(e))(0===t?0:t)}},75196:(e,t,r)=>{var n=r(96059),o=r(7609);e.exports=function(e,t,r,a){try{return a?t(n(r)[0],r[1]):t(r)}catch(t){o(e,"throw",t)}}},21385:(e,t,r)=>{var n=r(99813)("iterator"),o=!1;try{var a=0,i={next:function(){return{done:!!a++}},return:function(){o=!0}};i[n]=function(){return this},Array.from(i,(function(){throw 2}))}catch(e){}e.exports=function(e,t){if(!t&&!o)return!1;var r=!1;try{var a={};a[n]=function(){return{next:function(){return{done:r=!0}}}},e(a)}catch(e){}return r}},82532:(e,t,r)=>{var n=r(95329),o=n({}.toString),a=n("".slice);e.exports=function(e){return a(o(e),8,-1)}},9697:(e,t,r)=>{var n=r(21899),o=r(22885),a=r(57475),i=r(82532),s=r(99813)("toStringTag"),l=n.Object,u="Arguments"==i(function(){return arguments}());e.exports=o?i:function(e){var t,r,n;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(r=function(e,t){try{return e[t]}catch(e){}}(t=l(e),s))?r:u?i(t):"Object"==(n=i(t))&&a(t.callee)?"Arguments":n}},38694:(e,t,r)=>{var n=r(95329)("".replace),o=String(Error("zxcasd").stack),a=/\n\s*at [^:]*:[^\n]*/,i=a.test(o);e.exports=function(e,t){if(i&&"string"==typeof e)for(;t--;)e=n(e,a,"");return e}},85616:(e,t,r)=>{"use strict";var n=r(65988).f,o=r(29290),a=r(87524),i=r(86843),s=r(5743),l=r(93091),u=r(47771),c=r(94431),p=r(55746),f=r(21647).fastKey,h=r(45402),d=h.set,m=h.getterFor;e.exports={getConstructor:function(e,t,r,u){var c=e((function(e,n){s(e,h),d(e,{type:t,index:o(null),first:void 0,last:void 0,size:0}),p||(e.size=0),null!=n&&l(n,e[u],{that:e,AS_ENTRIES:r})})),h=c.prototype,g=m(t),v=function(e,t,r){var n,o,a=g(e),i=y(e,t);return i?i.value=r:(a.last=i={index:o=f(t,!0),key:t,value:r,previous:n=a.last,next:void 0,removed:!1},a.first||(a.first=i),n&&(n.next=i),p?a.size++:e.size++,"F"!==o&&(a.index[o]=i)),e},y=function(e,t){var r,n=g(e),o=f(t);if("F"!==o)return n.index[o];for(r=n.first;r;r=r.next)if(r.key==t)return r};return a(h,{clear:function(){for(var e=g(this),t=e.index,r=e.first;r;)r.removed=!0,r.previous&&(r.previous=r.previous.next=void 0),delete t[r.index],r=r.next;e.first=e.last=void 0,p?e.size=0:this.size=0},delete:function(e){var t=this,r=g(t),n=y(t,e);if(n){var o=n.next,a=n.previous;delete r.index[n.index],n.removed=!0,a&&(a.next=o),o&&(o.previous=a),r.first==n&&(r.first=o),r.last==n&&(r.last=a),p?r.size--:t.size--}return!!n},forEach:function(e){for(var t,r=g(this),n=i(e,arguments.length>1?arguments[1]:void 0);t=t?t.next:r.first;)for(n(t.value,t.key,this);t&&t.removed;)t=t.previous},has:function(e){return!!y(this,e)}}),a(h,r?{get:function(e){var t=y(this,e);return t&&t.value},set:function(e,t){return v(this,0===e?0:e,t)}}:{add:function(e){return v(this,e=0===e?0:e,e)}}),p&&n(h,"size",{get:function(){return g(this).size}}),c},setStrong:function(e,t,r){var n=t+" Iterator",o=m(t),a=m(n);u(e,t,(function(e,t){d(this,{type:n,target:e,state:o(e),kind:t,last:void 0})}),(function(){for(var e=a(this),t=e.kind,r=e.last;r&&r.removed;)r=r.previous;return e.target&&(e.last=r=r?r.next:e.state.first)?"keys"==t?{value:r.key,done:!1}:"values"==t?{value:r.value,done:!1}:{value:[r.key,r.value],done:!1}:(e.target=void 0,{value:void 0,done:!0})}),r?"entries":"values",!r,!0),c(t)}}},8850:(e,t,r)=>{"use strict";var n=r(95329),o=r(87524),a=r(21647).getWeakData,i=r(96059),s=r(10941),l=r(5743),u=r(93091),c=r(3610),p=r(90953),f=r(45402),h=f.set,d=f.getterFor,m=c.find,g=c.findIndex,v=n([].splice),y=0,b=function(e){return e.frozen||(e.frozen=new w)},w=function(){this.entries=[]},E=function(e,t){return m(e.entries,(function(e){return e[0]===t}))};w.prototype={get:function(e){var t=E(this,e);if(t)return t[1]},has:function(e){return!!E(this,e)},set:function(e,t){var r=E(this,e);r?r[1]=t:this.entries.push([e,t])},delete:function(e){var t=g(this.entries,(function(t){return t[0]===e}));return~t&&v(this.entries,t,1),!!~t}},e.exports={getConstructor:function(e,t,r,n){var c=e((function(e,o){l(e,f),h(e,{type:t,id:y++,frozen:void 0}),null!=o&&u(o,e[n],{that:e,AS_ENTRIES:r})})),f=c.prototype,m=d(t),g=function(e,t,r){var n=m(e),o=a(i(t),!0);return!0===o?b(n).set(t,r):o[n.id]=r,e};return o(f,{delete:function(e){var t=m(this);if(!s(e))return!1;var r=a(e);return!0===r?b(t).delete(e):r&&p(r,t.id)&&delete r[t.id]},has:function(e){var t=m(this);if(!s(e))return!1;var r=a(e);return!0===r?b(t).has(e):r&&p(r,t.id)}}),o(f,r?{get:function(e){var t=m(this);if(s(e)){var r=a(e);return!0===r?b(t).get(e):r?r[t.id]:void 0}},set:function(e,t){return g(this,e,t)}}:{add:function(e){return g(this,e,!0)}}),c}}},24683:(e,t,r)=>{"use strict";var n=r(76887),o=r(21899),a=r(21647),i=r(95981),s=r(32029),l=r(93091),u=r(5743),c=r(57475),p=r(10941),f=r(90904),h=r(65988).f,d=r(3610).forEach,m=r(55746),g=r(45402),v=g.set,y=g.getterFor;e.exports=function(e,t,r){var g,b=-1!==e.indexOf("Map"),w=-1!==e.indexOf("Weak"),E=b?"set":"add",x=o[e],_=x&&x.prototype,S={};if(m&&c(x)&&(w||_.forEach&&!i((function(){(new x).entries().next()})))){var A=(g=t((function(t,r){v(u(t,A),{type:e,collection:new x}),null!=r&&l(r,t[E],{that:t,AS_ENTRIES:b})}))).prototype,k=y(e);d(["add","clear","delete","forEach","get","has","set","keys","values","entries"],(function(e){var t="add"==e||"set"==e;!(e in _)||w&&"clear"==e||s(A,e,(function(r,n){var o=k(this).collection;if(!t&&w&&!p(r))return"get"==e&&void 0;var a=o[e](0===r?0:r,n);return t?this:a}))})),w||h(A,"size",{configurable:!0,get:function(){return k(this).collection.size}})}else g=r.getConstructor(t,e,b,E),a.enable();return f(g,e,!1,!0),S[e]=g,n({global:!0,forced:!0},S),w||r.setStrong(g,e,b),g}},23489:(e,t,r)=>{var n=r(90953),o=r(31136),a=r(49677),i=r(65988);e.exports=function(e,t,r){for(var s=o(t),l=i.f,u=a.f,c=0;c{var n=r(99813)("match");e.exports=function(e){var t=/./;try{"/./"[e](t)}catch(r){try{return t[n]=!1,"/./"[e](t)}catch(e){}}return!1}},64160:(e,t,r)=>{var n=r(95981);e.exports=!n((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype}))},31046:(e,t,r)=>{"use strict";var n=r(35143).IteratorPrototype,o=r(29290),a=r(31887),i=r(90904),s=r(12077),l=function(){return this};e.exports=function(e,t,r,u){var c=t+" Iterator";return e.prototype=o(n,{next:a(+!u,r)}),i(e,c,!1,!0),s[c]=l,e}},32029:(e,t,r)=>{var n=r(55746),o=r(65988),a=r(31887);e.exports=n?function(e,t,r){return o.f(e,t,a(1,r))}:function(e,t,r){return e[t]=r,e}},31887:e=>{e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},55449:(e,t,r)=>{"use strict";var n=r(83894),o=r(65988),a=r(31887);e.exports=function(e,t,r){var i=n(t);i in e?o.f(e,i,a(0,r)):e[i]=r}},47771:(e,t,r)=>{"use strict";var n=r(76887),o=r(78834),a=r(82529),i=r(79417),s=r(57475),l=r(31046),u=r(249),c=r(88929),p=r(90904),f=r(32029),h=r(99754),d=r(99813),m=r(12077),g=r(35143),v=i.PROPER,y=i.CONFIGURABLE,b=g.IteratorPrototype,w=g.BUGGY_SAFARI_ITERATORS,E=d("iterator"),x="keys",_="values",S="entries",A=function(){return this};e.exports=function(e,t,r,i,d,g,k){l(r,t,i);var C,O,j,I=function(e){if(e===d&&M)return M;if(!w&&e in P)return P[e];switch(e){case x:case _:case S:return function(){return new r(this,e)}}return function(){return new r(this)}},N=t+" Iterator",T=!1,P=e.prototype,R=P[E]||P["@@iterator"]||d&&P[d],M=!w&&R||I(d),D="Array"==t&&P.entries||R;if(D&&(C=u(D.call(new e)))!==Object.prototype&&C.next&&(a||u(C)===b||(c?c(C,b):s(C[E])||h(C,E,A)),p(C,N,!0,!0),a&&(m[N]=A)),v&&d==_&&R&&R.name!==_&&(!a&&y?f(P,"name",_):(T=!0,M=function(){return o(R,this)})),d)if(O={values:I(_),keys:g?M:I(x),entries:I(S)},k)for(j in O)(w||T||!(j in P))&&h(P,j,O[j]);else n({target:t,proto:!0,forced:w||T},O);return a&&!k||P[E]===M||h(P,E,M,{name:d}),m[t]=M,O}},66349:(e,t,r)=>{var n=r(54058),o=r(90953),a=r(11477),i=r(65988).f;e.exports=function(e){var t=n.Symbol||(n.Symbol={});o(t,e)||i(t,e,{value:a.f(e)})}},55746:(e,t,r)=>{var n=r(95981);e.exports=!n((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},61333:(e,t,r)=>{var n=r(21899),o=r(10941),a=n.document,i=o(a)&&o(a.createElement);e.exports=function(e){return i?a.createElement(e):{}}},63281:e=>{e.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},34342:(e,t,r)=>{var n=r(2861).match(/firefox\/(\d+)/i);e.exports=!!n&&+n[1]},23321:e=>{e.exports="object"==typeof window},81046:(e,t,r)=>{var n=r(2861);e.exports=/MSIE|Trident/.test(n)},4470:(e,t,r)=>{var n=r(2861),o=r(21899);e.exports=/ipad|iphone|ipod/i.test(n)&&void 0!==o.Pebble},22749:(e,t,r)=>{var n=r(2861);e.exports=/(?:ipad|iphone|ipod).*applewebkit/i.test(n)},6049:(e,t,r)=>{var n=r(82532),o=r(21899);e.exports="process"==n(o.process)},58045:(e,t,r)=>{var n=r(2861);e.exports=/web0s(?!.*chrome)/i.test(n)},2861:(e,t,r)=>{var n=r(626);e.exports=n("navigator","userAgent")||""},53385:(e,t,r)=>{var n,o,a=r(21899),i=r(2861),s=a.process,l=a.Deno,u=s&&s.versions||l&&l.version,c=u&&u.v8;c&&(o=(n=c.split("."))[0]>0&&n[0]<4?1:+(n[0]+n[1])),!o&&i&&(!(n=i.match(/Edge\/(\d+)/))||n[1]>=74)&&(n=i.match(/Chrome\/(\d+)/))&&(o=+n[1]),e.exports=o},18938:(e,t,r)=>{var n=r(2861).match(/AppleWebKit\/(\d+)\./);e.exports=!!n&&+n[1]},35703:(e,t,r)=>{var n=r(54058);e.exports=function(e){return n[e+"Prototype"]}},56759:e=>{e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},18780:(e,t,r)=>{var n=r(95981),o=r(31887);e.exports=!n((function(){var e=Error("a");return!("stack"in e)||(Object.defineProperty(e,"stack",o(1,7)),7!==e.stack)}))},76887:(e,t,r)=>{"use strict";var n=r(21899),o=r(79730),a=r(95329),i=r(57475),s=r(49677).f,l=r(37252),u=r(54058),c=r(86843),p=r(32029),f=r(90953),h=function(e){var t=function(r,n,a){if(this instanceof t){switch(arguments.length){case 0:return new e;case 1:return new e(r);case 2:return new e(r,n)}return new e(r,n,a)}return o(e,this,arguments)};return t.prototype=e.prototype,t};e.exports=function(e,t){var r,o,d,m,g,v,y,b,w=e.target,E=e.global,x=e.stat,_=e.proto,S=E?n:x?n[w]:(n[w]||{}).prototype,A=E?u:u[w]||p(u,w,{})[w],k=A.prototype;for(d in t)r=!l(E?d:w+(x?".":"#")+d,e.forced)&&S&&f(S,d),g=A[d],r&&(v=e.noTargetGet?(b=s(S,d))&&b.value:S[d]),m=r&&v?v:t[d],r&&typeof g==typeof m||(y=e.bind&&r?c(m,n):e.wrap&&r?h(m):_&&i(m)?a(m):m,(e.sham||m&&m.sham||g&&g.sham)&&p(y,"sham",!0),p(A,d,y),_&&(f(u,o=w+"Prototype")||p(u,o,{}),p(u[o],d,m),e.real&&k&&!k[d]&&p(k,d,m)))}},95981:e=>{e.exports=function(e){try{return!!e()}catch(e){return!0}}},45602:(e,t,r)=>{var n=r(95981);e.exports=!n((function(){return Object.isExtensible(Object.preventExtensions({}))}))},79730:(e,t,r)=>{var n=r(18285),o=Function.prototype,a=o.apply,i=o.call;e.exports="object"==typeof Reflect&&Reflect.apply||(n?i.bind(a):function(){return i.apply(a,arguments)})},86843:(e,t,r)=>{var n=r(95329),o=r(24883),a=r(18285),i=n(n.bind);e.exports=function(e,t){return o(e),void 0===t?e:a?i(e,t):function(){return e.apply(t,arguments)}}},18285:(e,t,r)=>{var n=r(95981);e.exports=!n((function(){var e=function(){}.bind();return"function"!=typeof e||e.hasOwnProperty("prototype")}))},98308:(e,t,r)=>{"use strict";var n=r(21899),o=r(95329),a=r(24883),i=r(10941),s=r(90953),l=r(93765),u=r(18285),c=n.Function,p=o([].concat),f=o([].join),h={},d=function(e,t,r){if(!s(h,t)){for(var n=[],o=0;o{var n=r(18285),o=Function.prototype.call;e.exports=n?o.bind(o):function(){return o.apply(o,arguments)}},79417:(e,t,r)=>{var n=r(55746),o=r(90953),a=Function.prototype,i=n&&Object.getOwnPropertyDescriptor,s=o(a,"name"),l=s&&"something"===function(){}.name,u=s&&(!n||n&&i(a,"name").configurable);e.exports={EXISTS:s,PROPER:l,CONFIGURABLE:u}},95329:(e,t,r)=>{var n=r(18285),o=Function.prototype,a=o.bind,i=o.call,s=n&&a.bind(i,i);e.exports=n?function(e){return e&&s(e)}:function(e){return e&&function(){return i.apply(e,arguments)}}},626:(e,t,r)=>{var n=r(54058),o=r(21899),a=r(57475),i=function(e){return a(e)?e:void 0};e.exports=function(e,t){return arguments.length<2?i(n[e])||i(o[e]):n[e]&&n[e][t]||o[e]&&o[e][t]}},22902:(e,t,r)=>{var n=r(9697),o=r(14229),a=r(12077),i=r(99813)("iterator");e.exports=function(e){if(null!=e)return o(e,i)||o(e,"@@iterator")||a[n(e)]}},53476:(e,t,r)=>{var n=r(21899),o=r(78834),a=r(24883),i=r(96059),s=r(69826),l=r(22902),u=n.TypeError;e.exports=function(e,t){var r=arguments.length<2?l(e):t;if(a(r))return i(o(r,e));throw u(s(e)+" is not iterable")}},14229:(e,t,r)=>{var n=r(24883);e.exports=function(e,t){var r=e[t];return null==r?void 0:n(r)}},21899:(e,t,r)=>{var n=function(e){return e&&e.Math==Math&&e};e.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof r.g&&r.g)||function(){return this}()||Function("return this")()},90953:(e,t,r)=>{var n=r(95329),o=r(89678),a=n({}.hasOwnProperty);e.exports=Object.hasOwn||function(e,t){return a(o(e),t)}},27748:e=>{e.exports={}},34845:(e,t,r)=>{var n=r(21899);e.exports=function(e,t){var r=n.console;r&&r.error&&(1==arguments.length?r.error(e):r.error(e,t))}},15463:(e,t,r)=>{var n=r(626);e.exports=n("document","documentElement")},2840:(e,t,r)=>{var n=r(55746),o=r(95981),a=r(61333);e.exports=!n&&!o((function(){return 7!=Object.defineProperty(a("div"),"a",{get:function(){return 7}}).a}))},37026:(e,t,r)=>{var n=r(21899),o=r(95329),a=r(95981),i=r(82532),s=n.Object,l=o("".split);e.exports=a((function(){return!s("z").propertyIsEnumerable(0)}))?function(e){return"String"==i(e)?l(e,""):s(e)}:s},81302:(e,t,r)=>{var n=r(95329),o=r(57475),a=r(63030),i=n(Function.toString);o(a.inspectSource)||(a.inspectSource=function(e){return i(e)}),e.exports=a.inspectSource},53794:(e,t,r)=>{var n=r(10941),o=r(32029);e.exports=function(e,t){n(t)&&"cause"in t&&o(e,"cause",t.cause)}},21647:(e,t,r)=>{var n=r(76887),o=r(95329),a=r(27748),i=r(10941),s=r(90953),l=r(65988).f,u=r(10946),c=r(684),p=r(91584),f=r(99418),h=r(45602),d=!1,m=f("meta"),g=0,v=function(e){l(e,m,{value:{objectID:"O"+g++,weakData:{}}})},y=e.exports={enable:function(){y.enable=function(){},d=!0;var e=u.f,t=o([].splice),r={};r[m]=1,e(r).length&&(u.f=function(r){for(var n=e(r),o=0,a=n.length;o{var n,o,a,i=r(38019),s=r(21899),l=r(95329),u=r(10941),c=r(32029),p=r(90953),f=r(63030),h=r(44262),d=r(27748),m="Object already initialized",g=s.TypeError,v=s.WeakMap;if(i||f.state){var y=f.state||(f.state=new v),b=l(y.get),w=l(y.has),E=l(y.set);n=function(e,t){if(w(y,e))throw new g(m);return t.facade=e,E(y,e,t),t},o=function(e){return b(y,e)||{}},a=function(e){return w(y,e)}}else{var x=h("state");d[x]=!0,n=function(e,t){if(p(e,x))throw new g(m);return t.facade=e,c(e,x,t),t},o=function(e){return p(e,x)?e[x]:{}},a=function(e){return p(e,x)}}e.exports={set:n,get:o,has:a,enforce:function(e){return a(e)?o(e):n(e,{})},getterFor:function(e){return function(t){var r;if(!u(t)||(r=o(t)).type!==e)throw g("Incompatible receiver, "+e+" required");return r}}}},6782:(e,t,r)=>{var n=r(99813),o=r(12077),a=n("iterator"),i=Array.prototype;e.exports=function(e){return void 0!==e&&(o.Array===e||i[a]===e)}},1052:(e,t,r)=>{var n=r(82532);e.exports=Array.isArray||function(e){return"Array"==n(e)}},57475:e=>{e.exports=function(e){return"function"==typeof e}},24284:(e,t,r)=>{var n=r(95329),o=r(95981),a=r(57475),i=r(9697),s=r(626),l=r(81302),u=function(){},c=[],p=s("Reflect","construct"),f=/^\s*(?:class|function)\b/,h=n(f.exec),d=!f.exec(u),m=function(e){if(!a(e))return!1;try{return p(u,c,e),!0}catch(e){return!1}},g=function(e){if(!a(e))return!1;switch(i(e)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return d||!!h(f,l(e))}catch(e){return!0}};g.sham=!0,e.exports=!p||o((function(){var e;return m(m.call)||!m(Object)||!m((function(){e=!0}))||e}))?g:m},37252:(e,t,r)=>{var n=r(95981),o=r(57475),a=/#|\.prototype\./,i=function(e,t){var r=l[s(e)];return r==c||r!=u&&(o(t)?n(t):!!t)},s=i.normalize=function(e){return String(e).replace(a,".").toLowerCase()},l=i.data={},u=i.NATIVE="N",c=i.POLYFILL="P";e.exports=i},10941:(e,t,r)=>{var n=r(57475);e.exports=function(e){return"object"==typeof e?null!==e:n(e)}},82529:e=>{e.exports=!0},60685:(e,t,r)=>{var n=r(10941),o=r(82532),a=r(99813)("match");e.exports=function(e){var t;return n(e)&&(void 0!==(t=e[a])?!!t:"RegExp"==o(e))}},56664:(e,t,r)=>{var n=r(21899),o=r(626),a=r(57475),i=r(7046),s=r(32302),l=n.Object;e.exports=s?function(e){return"symbol"==typeof e}:function(e){var t=o("Symbol");return a(t)&&i(t.prototype,l(e))}},93091:(e,t,r)=>{var n=r(21899),o=r(86843),a=r(78834),i=r(96059),s=r(69826),l=r(6782),u=r(10623),c=r(7046),p=r(53476),f=r(22902),h=r(7609),d=n.TypeError,m=function(e,t){this.stopped=e,this.result=t},g=m.prototype;e.exports=function(e,t,r){var n,v,y,b,w,E,x,_=r&&r.that,S=!(!r||!r.AS_ENTRIES),A=!(!r||!r.IS_ITERATOR),k=!(!r||!r.INTERRUPTED),C=o(t,_),O=function(e){return n&&h(n,"normal",e),new m(!0,e)},j=function(e){return S?(i(e),k?C(e[0],e[1],O):C(e[0],e[1])):k?C(e,O):C(e)};if(A)n=e;else{if(!(v=f(e)))throw d(s(e)+" is not iterable");if(l(v)){for(y=0,b=u(e);b>y;y++)if((w=j(e[y]))&&c(g,w))return w;return new m(!1)}n=p(e,v)}for(E=n.next;!(x=a(E,n)).done;){try{w=j(x.value)}catch(e){h(n,"throw",e)}if("object"==typeof w&&w&&c(g,w))return w}return new m(!1)}},7609:(e,t,r)=>{var n=r(78834),o=r(96059),a=r(14229);e.exports=function(e,t,r){var i,s;o(e);try{if(!(i=a(e,"return"))){if("throw"===t)throw r;return r}i=n(i,e)}catch(e){s=!0,i=e}if("throw"===t)throw r;if(s)throw i;return o(i),r}},35143:(e,t,r)=>{"use strict";var n,o,a,i=r(95981),s=r(57475),l=r(29290),u=r(249),c=r(99754),p=r(99813),f=r(82529),h=p("iterator"),d=!1;[].keys&&("next"in(a=[].keys())?(o=u(u(a)))!==Object.prototype&&(n=o):d=!0),null==n||i((function(){var e={};return n[h].call(e)!==e}))?n={}:f&&(n=l(n)),s(n[h])||c(n,h,(function(){return this})),e.exports={IteratorPrototype:n,BUGGY_SAFARI_ITERATORS:d}},12077:e=>{e.exports={}},10623:(e,t,r)=>{var n=r(43057);e.exports=function(e){return n(e.length)}},66132:(e,t,r)=>{var n,o,a,i,s,l,u,c,p=r(21899),f=r(86843),h=r(49677).f,d=r(42941).set,m=r(22749),g=r(4470),v=r(58045),y=r(6049),b=p.MutationObserver||p.WebKitMutationObserver,w=p.document,E=p.process,x=p.Promise,_=h(p,"queueMicrotask"),S=_&&_.value;S||(n=function(){var e,t;for(y&&(e=E.domain)&&e.exit();o;){t=o.fn,o=o.next;try{t()}catch(e){throw o?i():a=void 0,e}}a=void 0,e&&e.enter()},m||y||v||!b||!w?!g&&x&&x.resolve?((u=x.resolve(void 0)).constructor=x,c=f(u.then,u),i=function(){c(n)}):y?i=function(){E.nextTick(n)}:(d=f(d,p),i=function(){d(n)}):(s=!0,l=w.createTextNode(""),new b(n).observe(l,{characterData:!0}),i=function(){l.data=s=!s})),e.exports=S||function(e){var t={fn:e,next:void 0};a&&(a.next=t),o||(o=t,i()),a=t}},19297:(e,t,r)=>{var n=r(21899);e.exports=n.Promise},72497:(e,t,r)=>{var n=r(53385),o=r(95981);e.exports=!!Object.getOwnPropertySymbols&&!o((function(){var e=Symbol();return!String(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&n&&n<41}))},28468:(e,t,r)=>{var n=r(95981),o=r(99813),a=r(82529),i=o("iterator");e.exports=!n((function(){var e=new URL("b?a=1&b=2&c=3","http://a"),t=e.searchParams,r="";return e.pathname="c%20d",t.forEach((function(e,n){t.delete("b"),r+=n+e})),a&&!e.toJSON||!t.sort||"http://a/c%20d?a=1&c=3"!==e.href||"3"!==t.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!t[i]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("http://тест").host||"#%D0%B1"!==new URL("http://a#б").hash||"a1c3"!==r||"x"!==new URL("http://x",void 0).host}))},38019:(e,t,r)=>{var n=r(21899),o=r(57475),a=r(81302),i=n.WeakMap;e.exports=o(i)&&/native code/.test(a(i))},69520:(e,t,r)=>{"use strict";var n=r(24883),o=function(e){var t,r;this.promise=new e((function(e,n){if(void 0!==t||void 0!==r)throw TypeError("Bad Promise constructor");t=e,r=n})),this.resolve=n(t),this.reject=n(r)};e.exports.f=function(e){return new o(e)}},14649:(e,t,r)=>{var n=r(85803);e.exports=function(e,t){return void 0===e?arguments.length<2?"":t:n(e)}},70344:(e,t,r)=>{var n=r(21899),o=r(60685),a=n.TypeError;e.exports=function(e){if(o(e))throw a("The method doesn't accept regular expressions");return e}},24420:(e,t,r)=>{"use strict";var n=r(55746),o=r(95329),a=r(78834),i=r(95981),s=r(14771),l=r(87857),u=r(36760),c=r(89678),p=r(37026),f=Object.assign,h=Object.defineProperty,d=o([].concat);e.exports=!f||i((function(){if(n&&1!==f({b:1},f(h({},"a",{enumerable:!0,get:function(){h(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},r=Symbol(),o="abcdefghijklmnopqrst";return e[r]=7,o.split("").forEach((function(e){t[e]=e})),7!=f({},e)[r]||s(f({},t)).join("")!=o}))?function(e,t){for(var r=c(e),o=arguments.length,i=1,f=l.f,h=u.f;o>i;)for(var m,g=p(arguments[i++]),v=f?d(s(g),f(g)):s(g),y=v.length,b=0;y>b;)m=v[b++],n&&!a(h,g,m)||(r[m]=g[m]);return r}:f},29290:(e,t,r)=>{var n,o=r(96059),a=r(59938),i=r(56759),s=r(27748),l=r(15463),u=r(61333),c=r(44262),p=c("IE_PROTO"),f=function(){},h=function(e){return"