From 763294418f3764687e2ce87bf9f6c71eae238ccc Mon Sep 17 00:00:00 2001 From: Oscar Beaumont Date: Mon, 9 Oct 2023 18:19:22 +1100 Subject: [PATCH] Brendan idea (#231) * upgrade workspace * Drop core crate * Drop `Blob` * Good luck, you'll need it * use tauri async runtime * RouterBuilder & Router * router > executor * fn execute() cleanup * run_connection > ConnectionTask * batcher stream * batch stream + RequestFuture -> Task * cleanup * Move Tauri and httpz integration out of the core * actually drive streams * unify connection + task shutdowns * cleanup httpz * SinkAndStream * more unfold * Update Cargo.toml * cleanup * a * add rspc-core crate * use futures std instead of alloc --------- Co-authored-by: Brendan Allan --- Cargo.toml | 43 +- benches/benchmarks.rs | 2 +- crates/axum/Cargo.toml | 10 - crates/axum/src/lib.rs | 21 - crates/core/Cargo.toml | 3 +- crates/core/src/internal/mod.rs | 3 + crates/core/src/lib.rs | 6 +- crates/create-rspc-app/Cargo.toml | 12 +- crates/httpz/Cargo.toml | 26 + .../httpz => crates/httpz/src}/cookie_jar.rs | 0 .../httpz => crates/httpz/src}/extractors.rs | 2 +- .../httpz/src}/httpz_endpoint.rs | 116 +- .../httpz/mod.rs => crates/httpz/src/lib.rs | 0 .../httpz => crates/httpz/src}/request.rs | 0 .../httpz => crates/httpz/src}/websocket.rs | 11 +- crates/tauri/Cargo.toml | 15 + .../tauri.rs => crates/tauri/src/lib.rs | 134 +- docs/package.json | 22 +- examples/Cargo.toml | 17 +- examples/astro/package.json | 28 +- examples/astro/src/components/react/index.tsx | 17 + examples/axum/Cargo.toml | 10 +- examples/axum/src/main.rs | 78 +- examples/bindings.ts | 29 +- examples/nextjs/package.json | 12 +- examples/src/basic.rs | 4 +- examples/src/bin/cookies.rs | 5 +- examples/src/bin/global_context.rs | 5 +- examples/src/bin/middleware.rs | 9 +- examples/src/error_handling.rs | 4 +- examples/src/merging_routers.rs | 8 +- examples/src/subscriptions.rs | 4 +- examples/tauri/package.json | 4 +- examples/tauri/src-tauri/Cargo.toml | 3 +- examples/tauri/src-tauri/src/main.rs | 2 +- examples/vercel/Cargo.toml | 7 +- examples/vercel/api/rspc/[rspc].rs | 27 +- examples/vercel/package.json | 14 +- package.json | 2 +- packages/client/package.json | 8 +- packages/client/src/bindings.ts | 22 +- packages/query-core/package.json | 10 +- packages/react-query/package.json | 12 +- packages/solid-query/package.json | 12 +- packages/svelte-query/package.json | 8 +- packages/tauri/package.json | 6 +- packages/tauri/src/types.ts | 58 +- pnpm-lock.yaml | 3893 +++++++++-------- src/blob.rs | 2 - src/error.rs | 6 + src/integrations/mod.rs | 9 - src/internal/body/body.rs | 28 + src/internal/body/map.rs | 42 + src/internal/body/mod.rs | 7 + src/internal/{body.rs => body/once.rs} | 20 +- src/internal/exec/arc_ref.rs | 137 + src/internal/exec/async_runtime.rs | 29 +- src/internal/exec/connection.rs | 541 +-- src/internal/exec/execute.rs | 334 +- src/internal/exec/mod.rs | 8 +- src/internal/exec/request_future.rs | 57 + src/internal/exec/sink_and_stream.rs | 63 + src/internal/exec/stream_or_fut.rs | 205 - src/internal/exec/task.rs | 99 + src/internal/exec/types.rs | 43 +- src/internal/layer.rs | 1 + src/internal/procedure/dyn_procedure.rs | 15 - src/internal/procedure/mod.rs | 2 - src/internal/procedure/procedure.rs | 36 +- src/internal/procedure/procedure_store.rs | 79 +- src/internal/resolver/result.rs | 49 +- src/lib.rs | 14 +- src/{built_router.rs => router.rs} | 74 +- src/router/mod.rs | 5 - src/{router => router_builder}/error.rs | 6 +- src/router_builder/mod.rs | 5 + .../router_builder.rs} | 36 +- src/rspc.rs | 6 +- tests/exec2.rs | 37 + 79 files changed, 3388 insertions(+), 3351 deletions(-) delete mode 100644 crates/axum/Cargo.toml delete mode 100644 crates/axum/src/lib.rs create mode 100644 crates/core/src/internal/mod.rs create mode 100644 crates/httpz/Cargo.toml rename {src/integrations/httpz => crates/httpz/src}/cookie_jar.rs (100%) rename {src/integrations/httpz => crates/httpz/src}/extractors.rs (98%) rename {src/integrations/httpz => crates/httpz/src}/httpz_endpoint.rs (74%) rename src/integrations/httpz/mod.rs => crates/httpz/src/lib.rs (100%) rename {src/integrations/httpz => crates/httpz/src}/request.rs (100%) rename {src/integrations/httpz => crates/httpz/src}/websocket.rs (91%) create mode 100644 crates/tauri/Cargo.toml rename src/integrations/tauri.rs => crates/tauri/src/lib.rs (56%) delete mode 100644 src/blob.rs delete mode 100644 src/integrations/mod.rs create mode 100644 src/internal/body/body.rs create mode 100644 src/internal/body/map.rs create mode 100644 src/internal/body/mod.rs rename src/internal/{body.rs => body/once.rs} (64%) create mode 100644 src/internal/exec/arc_ref.rs create mode 100644 src/internal/exec/request_future.rs create mode 100644 src/internal/exec/sink_and_stream.rs delete mode 100644 src/internal/exec/stream_or_fut.rs create mode 100644 src/internal/exec/task.rs delete mode 100644 src/internal/procedure/dyn_procedure.rs rename src/{built_router.rs => router.rs} (76%) delete mode 100644 src/router/mod.rs rename src/{router => router_builder}/error.rs (95%) create mode 100644 src/router_builder/mod.rs rename src/{router/router.rs => router_builder/router_builder.rs} (72%) create mode 100644 tests/exec2.rs diff --git a/Cargo.toml b/Cargo.toml index e3ac4e9d..e5354fea 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -27,56 +27,41 @@ harness = false [features] default = ["typescript"] -tauri = ["dep:tauri", "tokio", "tauri/wry", "tauri-specta"] +typescript = ["specta/typescript"] tracing = ["dep:tracing"] -httpz = ["dep:httpz", "httpz/cookies", "tokio", "tokio/sync"] # TODO: Remove the requirement on tokio -# anyhow = ["dep:anyhow"] tokio = ["dep:tokio", "specta/tokio"] -typescript = ["specta/typescript", "tauri-specta/typescript"] # TODO: Use this in the actual codebase unstable = [] # APIs where one line of code can blow up your whole app -# Webservers -axum = ["httpz", "httpz/axum", "httpz/tokio-ws", "httpz/axum"] -# actix-web = ["httpz/actix-web"] -# poem = ["httpz/poem"] -# rocket = ["httpz/rocket"] -# warp = ["httpz/warp"] -# TODO: Following ones are exposed but not officially supported -lambda = ["httpz", "httpz/lambda", "httpz/ws", "httpz/axum"] -workers = ["httpz", "httpz/workers", "httpz/ws"] -vercel = ["httpz", "httpz/vercel", "httpz/ws", "axum"] - [dependencies] specta = { workspace = true } serde = { workspace = true } thiserror = { workspace = true } -futures = { version = "0.3.28", default-features = false } -pin-project-lite = "0.2.10" +futures = { version = "0.3.28", default-features = false, features = ["std", "async-await"] } # TODO: Drop for `futures_core` if possible +pin-project-lite = "0.2.13" +streamunordered = "0.5.3" + +#### TODO: Can all the following deps be moved out of the core crate ### # Optional serde_json = { version = "1", default-features = false } -# TODO: toml, yaml, formdata - -httpz = { version = "0.0.5", default-features = false, optional = true } -tauri = { version = "1.4.1", default-features = false, optional = true } -tauri-specta = { git = "https://github.com/oscartbeaumont/tauri-specta", rev = "1073c8da4e4fccbeebfb389b2f093ac711cd35df", default-features = false, optional = true } tracing = { version = "0.1.37", default-features = false, optional = true } -worker = { version = "0.0.17", default-features = false, optional = true } -# anyhow = { version = "1", default-features = false, optional = true } # TODO: Should we bring this back with the new typed error handling? tokio = { version = "1", default-features = false, features = ["rt", "time"], optional = true } -streamunordered = "0.5.2" + +# TODO: Does this negatively affect compile times? Should it be flipped? +# # Even though this `cfg` can never be enabled, it still forces cargo to keep `serde_derive` in lockstep with `serde`. +# [target.'cfg(any())'.dependencies] +# rspc_httpz = { version = "=1.0.185", path = "../serde_derive" } [dev-dependencies] # Tests async-stream = "0.3.5" -tokio = { version = "1.29.1", features = ["macros", "rt-multi-thread"] } +tokio = { version = "1.32.0", features = ["macros", "rt-multi-thread"] } tauri = { version = "1.4.1", features = ["api-all"] } # Benchmark criterion = { version = "0.5", features = ["async_tokio", "html_reports"] } -pprof = { version = "0.12.0", features = ["flamegraph", "criterion", "protobuf-codec", "frame-pointer"] } -# rspc_legacy = { package = "rspc", version = "0.1.3" } +pprof = { version = "0.13.0", features = ["flamegraph", "criterion", "protobuf-codec", "frame-pointer"] } [workspace] members = ["./crates/*", "./examples", "./examples/axum", "./examples/vercel", "./examples/tauri/src-tauri"] @@ -84,7 +69,7 @@ members = ["./crates/*", "./examples", "./examples/axum", "./examples/vercel", " [workspace.dependencies] specta = { version = "=2.0.0-rc.1", default-features = false, features = ["serde", "serde_json"] } serde = { version = "1", default-features = false, features = ["derive"] } -thiserror = { version = "1.0.43", default-features = false } +thiserror = { version = "1.0.49", default-features = false } [patch.crates-io] specta = { git = "https://github.com/oscartbeaumont/specta", rev = "5948d80f2551780eda2c7bf38450fc796c74cfbf" } diff --git a/benches/benchmarks.rs b/benches/benchmarks.rs index d910231c..cf244434 100644 --- a/benches/benchmarks.rs +++ b/benches/benchmarks.rs @@ -17,7 +17,7 @@ async fn benchmark_main(e: &Executor<()>) { }, &mut (None as Option), ) { - ExecutorResult::FutureResponse(fut) => fut.await, + ExecutorResult::Future(fut) => fut.await, ExecutorResult::Response(resp) => resp, ExecutorResult::None => unreachable!(), }; diff --git a/crates/axum/Cargo.toml b/crates/axum/Cargo.toml deleted file mode 100644 index 32789bf2..00000000 --- a/crates/axum/Cargo.toml +++ /dev/null @@ -1,10 +0,0 @@ -[package] -name = "rspc-axum" -version = "1.0.0-rc.6" -edition = "2021" -# TODO: Docs -publish = false - -[dependencies] -axum = "0.6.19" -rspc = { path = "../../" } diff --git a/crates/axum/src/lib.rs b/crates/axum/src/lib.rs deleted file mode 100644 index a5f1ebb8..00000000 --- a/crates/axum/src/lib.rs +++ /dev/null @@ -1,21 +0,0 @@ -//! Axum integration for rspc -#![allow(warnings)] // TODO: Remove once stabilized - -// TODO: Crate lints - -use std::{any::Any, sync::Arc}; - -use axum::{body::HttpBody, routing::any}; -use rspc::{BuiltRouter, Router}; - -/// TODO -pub fn endpoint( - router: Arc>, - ctx_fn: impl Any, -) -> axum::Router -where - B: HttpBody + Send + 'static, - S: Clone + Send + Sync + 'static, -{ - axum::Router::new().route("/:id", any(|| async move { "Hello, world!" })) -} diff --git a/crates/core/Cargo.toml b/crates/core/Cargo.toml index 4f3f687b..d40f1023 100644 --- a/crates/core/Cargo.toml +++ b/crates/core/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "rspc-core" -version = "0.0.1" +version = "1.0.0-rc.5" edition = "2021" -publish = false [dependencies] diff --git a/crates/core/src/internal/mod.rs b/crates/core/src/internal/mod.rs new file mode 100644 index 00000000..c6039fad --- /dev/null +++ b/crates/core/src/internal/mod.rs @@ -0,0 +1,3 @@ +//! rspc core internals +//! +//! Anything in the module does *NOT* follow semantic versioning and may change at any time. diff --git a/crates/core/src/lib.rs b/crates/core/src/lib.rs index 46330df3..2742b7ca 100644 --- a/crates/core/src/lib.rs +++ b/crates/core/src/lib.rs @@ -1 +1,5 @@ -//! TODO +//! Core traits and types for [rspc](https://docs.rs/rspc) +// TODO: move over lints + +#[doc(hidden)] +pub mod internal; diff --git a/crates/create-rspc-app/Cargo.toml b/crates/create-rspc-app/Cargo.toml index c0439afe..6571e6b4 100644 --- a/crates/create-rspc-app/Cargo.toml +++ b/crates/create-rspc-app/Cargo.toml @@ -17,13 +17,13 @@ requestty = "0.5.0" strum = { version = "0.25.0", features = ["derive"] } rustc_version = "0.4.0" ureq = { version = "2.7.1", features = ["json"] } -serde_json = "1.0.103" -ctrlc = "3.4.0" -thiserror = "1.0.43" +serde_json = "1.0.107" +ctrlc = "3.4.1" +thiserror = "1.0.49" walkdir = "2" [dev-dependencies] -tempfile = "3.6.0" -cargo = "0.71.0" -tokio = { version = "1.29.1", features = ["full", "process"] } +tempfile = "3.8.0" +cargo = "0.73.1" +tokio = { version = "1.32.0", features = ["full", "process"] } futures = "0.3.28" diff --git a/crates/httpz/Cargo.toml b/crates/httpz/Cargo.toml new file mode 100644 index 00000000..75095ac4 --- /dev/null +++ b/crates/httpz/Cargo.toml @@ -0,0 +1,26 @@ +[package] +name = "rspc-httpz" +version = "1.0.0-rc.5" +edition = "2021" + +[features] +# Webservers +axum = ["httpz/axum", "httpz/tokio-ws", "httpz/axum"] +# actix-web = ["httpz/actix-web"] +# poem = ["httpz/poem"] +# rocket = ["httpz/rocket"] +# warp = ["httpz/warp"] +# TODO: Following ones are exposed but not officially supported +lambda = ["httpz/lambda", "httpz/ws", "httpz/axum"] +workers = ["httpz/workers", "httpz/ws"] +vercel = ["httpz/vercel", "httpz/ws", "axum"] # TODO: Shouldn't rely on Axum + +[dependencies] +rspc = { version = "1.0.0-rc.5", path = "../../", default-features = false, features = ["tokio"] } # TODO: Shouldn't rely on Tokio +httpz = { version = "0.0.5", default-features = false, features = ["cookies"] } +tokio = { version = "1", default-features = false, features = ["sync"] } +serde_json = "1.0.107" +futures = "0.3.28" + +# TODO: Remove following +worker = { version = "0.0.17", default-features = false, optional = true } # TODO: update this package once httpz is updated diff --git a/src/integrations/httpz/cookie_jar.rs b/crates/httpz/src/cookie_jar.rs similarity index 100% rename from src/integrations/httpz/cookie_jar.rs rename to crates/httpz/src/cookie_jar.rs diff --git a/src/integrations/httpz/extractors.rs b/crates/httpz/src/extractors.rs similarity index 98% rename from src/integrations/httpz/extractors.rs rename to crates/httpz/src/extractors.rs index 346e6128..eaa64bd3 100644 --- a/src/integrations/httpz/extractors.rs +++ b/crates/httpz/src/extractors.rs @@ -1,7 +1,7 @@ //! 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::{CookieJar, Request}; -use crate::ExecError; +use rspc::ExecError; use std::marker::PhantomData; diff --git a/src/integrations/httpz/httpz_endpoint.rs b/crates/httpz/src/httpz_endpoint.rs similarity index 74% rename from src/integrations/httpz/httpz_endpoint.rs rename to crates/httpz/src/httpz_endpoint.rs index f4cf2846..353d6d87 100644 --- a/src/integrations/httpz/httpz_endpoint.rs +++ b/crates/httpz/src/httpz_endpoint.rs @@ -10,9 +10,9 @@ use std::{ sync::{Arc, Mutex}, }; -use crate::{ - internal::exec::{self, Executor, ExecutorResult, NoOpSubscriptionManager}, - BuiltRouter, +use rspc::{ + internal::exec::{self, Connection, ExecutorResult}, + Router, }; use super::{handle_websocket, CookieJar, TCtxFunc}; @@ -21,55 +21,45 @@ use super::{handle_websocket, CookieJar, TCtxFunc}; // TODO: Remove all panics lol // TODO: Cleanup the code and use more chaining -impl BuiltRouter +pub fn endpoint>( + router: Arc>, + ctx_fn: TCtxFn, +) -> Endpoint where TCtx: Clone + Send + Sync + 'static, { - pub fn endpoint>( - self: Arc, - ctx_fn: TCtxFn, - ) -> Endpoint { - let executor = Executor::new(self); - - // TODO: This should be able to call `ctn_fn` prior to the async boundary to avoid cloning it! - // TODO: Basically httpz would need to be able to return `Response | Future` basically how rspc executor works. - - 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 executor = executor.clone(); - let ctx_fn = ctx_fn.clone(); - - async move { - match (req.method(), &req.uri().path()[1..]) { - (&Method::GET, "ws") => { - handle_websocket(executor, ctx_fn, req).into_response() - } - (&Method::GET, _) => { - handle_http(executor, ctx_fn, req).await.into_response() - } - (&Method::POST, "_batch") => handle_http_batch(executor, ctx_fn, req) - .await - .into_response(), - (&Method::POST, _) => { - handle_http(executor, ctx_fn, req).await.into_response() - } - _ => Ok(Response::builder() - .status(StatusCode::METHOD_NOT_ALLOWED) - .body(vec![])?), + // TODO: This should be able to call `ctn_fn` prior to the async boundary to avoid cloning it! + // TODO: Basically httpz would need to be able to return `Response | Future` basically how rspc executor works. + + 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 = router.clone(); + let ctx_fn = ctx_fn.clone(); + + async move { + match (req.method(), &req.uri().path()[1..]) { + (&Method::GET, "ws") => handle_websocket(router, ctx_fn, req).into_response(), + (&Method::GET, _) => handle_http(router, ctx_fn, req).await.into_response(), + (&Method::POST, "_batch") => { + handle_http_batch(router, ctx_fn, req).await.into_response() } + (&Method::POST, _) => handle_http(router, ctx_fn, req).await.into_response(), + _ => Ok(Response::builder() + .status(StatusCode::METHOD_NOT_ALLOWED) + .body(vec![])?), } - }, - ) - } + } + }, + ) } #[allow(clippy::unwrap_used)] // TODO: Remove all panics lol async fn handle_http( - executor: Executor, + router: Arc>, ctx_fn: TCtxFn, req: httpz::Request, ) -> impl HttpResponse @@ -99,7 +89,7 @@ where .unwrap_or(Ok(None as Option)) .unwrap(); - exec::Request::Query { id: 0, path, input } + exec::Request::Query(exec::RequestData { id: 0, path, input }) } Method::POST => { let input = (!req.body().is_empty()) @@ -107,7 +97,7 @@ where .unwrap_or(Ok(None)) .unwrap(); - exec::Request::Mutation { id: 0, path, input } + exec::Request::Mutation(exec::RequestData { id: 0, path, input }) } _ => unreachable!(), }; @@ -133,10 +123,13 @@ where }; let response = - match executor.execute(ctx, request, &mut (None as Option)) { - ExecutorResult::FutureResponse(fut) => fut.await, - ExecutorResult::Response(response) => response, - ExecutorResult::None => unreachable!( + match router.execute(ctx, request, None) { + Some(res) => match res { + ExecutorResult::Future(fut) => fut.await, + ExecutorResult::Response(response) => response, + ExecutorResult::Task(task) => todo!(), + }, + None => unreachable!( "Executor will only return none for a 'stopSubscription' event which is impossible here" ), }.inner; @@ -176,7 +169,7 @@ where #[allow(clippy::unwrap_used)] // TODO: Remove this async fn handle_http_batch( - executor: Executor, + router: Arc>, ctx_fn: TCtxFn, req: httpz::Request, ) -> impl HttpResponse @@ -208,12 +201,23 @@ where }; let fut_responses = FuturesUnordered::new(); - let mut responses = executor.execute_batch( - &ctx, - requests, - &mut (None as Option), - |fut| fut_responses.push(fut), - ); + + let mut responses = Vec::with_capacity(requests.len()); + for req in requests { + let Some(res) = router.clone().execute(ctx.clone(), req, None) else { + continue; + }; + + match res { + ExecutorResult::Future(fut) => { + fut_responses.push(fut); + } + ExecutorResult::Response(resp) => { + responses.push(resp); + } + ExecutorResult::Task(task) => todo!(), + } + } let cookies = { match Arc::try_unwrap(cookie_jar) { diff --git a/src/integrations/httpz/mod.rs b/crates/httpz/src/lib.rs similarity index 100% rename from src/integrations/httpz/mod.rs rename to crates/httpz/src/lib.rs diff --git a/src/integrations/httpz/request.rs b/crates/httpz/src/request.rs similarity index 100% rename from src/integrations/httpz/request.rs rename to crates/httpz/src/request.rs diff --git a/src/integrations/httpz/websocket.rs b/crates/httpz/src/websocket.rs similarity index 91% rename from src/integrations/httpz/websocket.rs rename to crates/httpz/src/websocket.rs index 0fb31143..3465aef1 100644 --- a/src/integrations/httpz/websocket.rs +++ b/crates/httpz/src/websocket.rs @@ -1,4 +1,4 @@ -use std::pin::pin; +use std::{pin::pin, sync::Arc}; use futures::{SinkExt, StreamExt}; use httpz::{ @@ -7,12 +7,15 @@ use httpz::{ HttpResponse, }; -use crate::internal::exec::{ConnectionTask, Executor, IncomingMessage, Response, TokioRuntime}; +use rspc::{ + internal::exec::{run_connection, IncomingMessage, Response, TokioRuntime}, + Router, +}; use super::TCtxFunc; pub(crate) fn handle_websocket( - executor: Executor, + router: Arc>, ctx_fn: TCtxFn, req: httpz::Request, ) -> impl HttpResponse @@ -72,7 +75,7 @@ where }) }); - ConnectionTask::::new(ctx, executor, pin!(socket), None).await; + run_connection::(ctx, router, pin!(socket), None).await; }) .into_response() } diff --git a/crates/tauri/Cargo.toml b/crates/tauri/Cargo.toml new file mode 100644 index 00000000..f53c0c4b --- /dev/null +++ b/crates/tauri/Cargo.toml @@ -0,0 +1,15 @@ +[package] +name = "rspc-tauri" +version = "1.0.0-rc.5" +edition = "2021" + +[dependencies] # TODO: Typescript support should be optional +futures = "0.3.28" +rspc = { version = "1.0.0-rc.5", path = "../../", default-features = false, features = ["typescript", "tokio"] } +serde = { workspace = true, features = ["derive"] } +serde_json = "1.0.107" +tauri = { version = "1.4.1", default-features = false, features = ["wry"] } # TODO: Work without wry +tauri-specta = { git = "https://github.com/oscartbeaumont/tauri-specta", rev = "1073c8da4e4fccbeebfb389b2f093ac711cd35df", default-features = false, features = [ + "typescript", +] } +specta = { workspace = true } diff --git a/src/integrations/tauri.rs b/crates/tauri/src/lib.rs similarity index 56% rename from src/integrations/tauri.rs rename to crates/tauri/src/lib.rs index af8af8f4..95e00dd6 100644 --- a/src/integrations/tauri.rs +++ b/crates/tauri/src/lib.rs @@ -4,34 +4,36 @@ use std::{ collections::{hash_map::DefaultHasher, HashMap}, convert::Infallible, hash::{Hash, Hasher}, - pin::Pin, sync::{Arc, Mutex}, - task::{Context, Poll}, }; +use futures::{channel::mpsc, sink, StreamExt}; use tauri::{ plugin::{Builder, TauriPlugin}, Window, WindowEvent, }; use tauri_specta::Event; -use tokio::sync::mpsc; -use crate::{ +use rspc::{ internal::exec::{ - AsyncRuntime, ConnectionTask, Executor, IncomingMessage, Response, TokioRuntime, + run_connection, AsyncRuntime, IncomingMessage, Response, SinkAndStream, TokioRuntime, }, - BuiltRouter, + Router, }; #[derive(Clone, Debug, serde::Deserialize, specta::Type, tauri_specta::Event)] struct Msg(serde_json::Value); +#[derive(Clone, serde::Serialize, specta::Type, tauri_specta::Event)] +#[specta(inline)] +struct TransportResp(Vec); + struct WindowManager where TCtx: Send + Sync + 'static, TCtxFn: Fn(&Window) -> TCtx + Send + Sync + 'static, { - executor: Executor, + router: Arc>, ctx_fn: TCtxFn, windows: Mutex>>, } @@ -41,9 +43,9 @@ where TCtx: Clone + Send + Sync + 'static, TCtxFn: Fn(&Window) -> TCtx + Send + Sync + 'static, { - pub fn new(ctx_fn: TCtxFn, router: Arc>) -> Arc { + pub fn new(ctx_fn: TCtxFn, router: Arc>) -> Arc { Arc::new(Self { - executor: Executor::new(router), + router, ctx_fn, windows: Mutex::new(HashMap::new()), }) @@ -60,27 +62,42 @@ where // Shutdown all subscriptions for the previously loaded page is there was one // All the previous threads and stuff stays around though so we don't need to recreate it - shutdown_streams_tx.send(()).ok(); + shutdown_streams_tx.unbounded_send(()).ok(); } else { - let (clear_subscriptions_tx, mut clear_subscriptions_rx) = mpsc::unbounded_channel(); + let (clear_subscriptions_tx, clear_subscriptions_rx) = mpsc::unbounded(); windows.insert(window_hash, clear_subscriptions_tx); drop(windows); - let (tx, rx) = mpsc::unbounded_channel(); - R::spawn(ConnectionTask::::new( - (self.ctx_fn)(&window), - self.executor.clone(), - Socket { - recv: rx, - window: window.clone(), - }, - Some(Box::new(move |cx| clear_subscriptions_rx.poll_recv(cx))), - )); + let (tx, rx) = mpsc::unbounded(); Msg::listen(&window, move |event| { - tx.send(IncomingMessage::Msg(Ok(event.payload.0))).ok(); + tx.unbounded_send(IncomingMessage::Msg(Ok(event.payload.0))) + .ok(); + }); + + // passing in 'window' allows us to not clone it, with Unfold reusing the window from the previous iteration. + // less clones and happy lifetimes + let sink = sink::unfold(window.clone(), move |window, item| async move { + TransportResp(item) + .emit(&window) + .map_err(|_err| { + #[cfg(feature = "tracing")] + tracing::error!("failed to emit JSON-RPC response: {}", _err); + }) + .ok(); + + Ok::<_, Infallible>(window) }); + + tauri::async_runtime::spawn(run_connection::( + (self.ctx_fn)(&window), + self.router.clone(), + SinkAndStream::new(sink, rx.map(Ok)), + Some(clear_subscriptions_rx), + )); } + + window.on_window_event(self.clone().on_window_event_handler(window.clone())) } #[allow(clippy::unwrap_used)] // TODO: Stop using unwrap @@ -90,7 +107,18 @@ where let window_hash = hasher.finish(); if let Some(shutdown_streams_tx) = self.windows.lock().unwrap().get(&window_hash) { - shutdown_streams_tx.send(()).ok(); + shutdown_streams_tx.unbounded_send(()).ok(); + } + } + + pub fn on_window_event_handler( + self: Arc, + window: Window, + ) -> impl Fn(&WindowEvent) + Send + 'static { + move |event| { + if let WindowEvent::CloseRequested { .. } = event { + self.close_requested(&window); + } } } } @@ -118,7 +146,7 @@ mod test { } pub fn plugin( - router: Arc>, + router: Arc>, ctx_fn: impl Fn(&Window) -> TCtx + Send + Sync + 'static, ) -> TauriPlugin where @@ -136,64 +164,6 @@ where }) .on_page_load(move |window, _page| { manager.clone().on_page_load::(window.clone()); - - window.on_window_event({ - let window = window.clone(); - let manager = manager.clone(); - move |event| { - if let WindowEvent::CloseRequested { .. } = event { - manager.close_requested(&window); - } - } - }) }) .build() } - -struct Socket { - // TODO: Bounded channel? - recv: mpsc::UnboundedReceiver, - window: Window, -} - -#[derive(Clone, serde::Serialize, specta::Type, tauri_specta::Event)] -#[specta(inline)] -struct TransportResp(Vec); - -// TODO: Can we use utils in `futures` to remove this impl? -impl futures::Sink> for Socket { - type Error = Infallible; - - fn poll_ready(self: Pin<&mut Self>, _cx: &mut Context<'_>) -> Poll> { - Poll::Ready(Ok(())) - } - - fn start_send(self: std::pin::Pin<&mut Self>, item: Vec) -> Result<(), Self::Error> { - TransportResp(item) - .emit(&self.window) - .map_err(|_err| { - #[cfg(feature = "tracing")] - tracing::error!("failed to emit JSON-RPC response: {}", _err); - }) - .ok(); - - Ok(()) - } - - fn poll_flush(self: Pin<&mut Self>, _cx: &mut Context<'_>) -> Poll> { - Poll::Ready(Ok(())) - } - - fn poll_close(self: Pin<&mut Self>, _cx: &mut Context<'_>) -> Poll> { - Poll::Ready(Ok(())) - } -} - -// TODO: Can we use utils in `futures` to remove this impl? -impl futures::Stream for Socket { - type Item = Result; - - fn poll_next(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { - self.recv.poll_recv(cx).map(|v| v.map(Ok)) - } -} diff --git a/docs/package.json b/docs/package.json index 6b155fbd..09143345 100644 --- a/docs/package.json +++ b/docs/package.json @@ -8,23 +8,23 @@ "start": "next start" }, "dependencies": { - "@headlessui/react": "^1.7.15", + "@headlessui/react": "^1.7.17", "@heroicons/react": "^2.0.18", - "@vercel/og": "^0.5.8", - "next": "^13.4.10", - "nextra": "^2.10.0", - "nextra-theme-docs": "^2.10.0", + "@vercel/og": "^0.5.17", + "next": "^13.5.3", + "nextra": "^2.13.1", + "nextra-theme-docs": "^2.13.1", "react": "^18.2.0", "react-dom": "^18.2.0", "react-popper": "^2.3.0" }, "devDependencies": { - "@types/node": "20.4.2", - "@types/react": "^18.2.15", - "autoprefixer": "^10.4.14", - "postcss": "^8.4.26", + "@types/node": "20.7.1", + "@types/react": "^18.2.23", + "autoprefixer": "^10.4.16", + "postcss": "^8.4.30", "tailwindcss": "^3.3.3", - "tslib": "^2.6.0", - "typescript": "^5.1.6" + "tslib": "^2.6.2", + "typescript": "^5.2.2" } } diff --git a/examples/Cargo.toml b/examples/Cargo.toml index b39760f3..ba9a6884 100644 --- a/examples/Cargo.toml +++ b/examples/Cargo.toml @@ -5,16 +5,17 @@ edition = "2021" publish = false [dependencies] -rspc = { path = "../", features = ["axum"] } +rspc = { path = "../", features = [] } +rspc-httpz = { path = "../crates/httpz", features = ["axum"] } async-stream = "0.3.5" -axum = "0.6.19" -chrono = { version = "0.4.26", features = ["serde"] } -serde = { version = "1.0.171", features = ["derive"] } -time = "0.3.23" -tokio = { version = "1.29.1", features = ["rt-multi-thread", "macros", "time", "sync"], default-features = false } +axum = "0.6.20" +chrono = { version = "0.4.31", features = ["serde"] } +serde = { version = "1.0.188", features = ["derive"] } +time = "0.3.29" +tokio = { version = "1.32.0", features = ["rt-multi-thread", "macros", "time", "sync"], default-features = false } tower-cookies = "0.9.0" -tower-http = { version = "0.4.1", default-features = false, features = ["cors"] } +tower-http = { version = "0.4.4", default-features = false, features = ["cors"] } uuid = { version = "1.4.1", features = ["v4", "serde"] } -serde_json = "1.0.103" +serde_json = "1.0.107" specta = { workspace = true } thiserror = { workspace = true } diff --git a/examples/astro/package.json b/examples/astro/package.json index 03431852..be651b6b 100644 --- a/examples/astro/package.json +++ b/examples/astro/package.json @@ -10,14 +10,14 @@ "astro": "astro" }, "devDependencies": { - "@astrojs/react": "^3.0.0", - "@astrojs/solid-js": "^3.0.0", - "@astrojs/svelte": "^4.0.0", + "@astrojs/react": "^3.0.2", + "@astrojs/solid-js": "^3.0.1", + "@astrojs/svelte": "^4.0.2", "@astrojs/tailwind": "^5.0.0", - "@types/react": "^18.0.21", - "@types/react-dom": "^18.0.6", - "astro": "^3.0.7", - "tailwindcss": "^3.0.24" + "@types/react": "^18.2.23", + "@types/react-dom": "^18.2.8", + "astro": "^3.1.4", + "tailwindcss": "^3.3.3" }, "dependencies": { "@rspc/client": "workspace:*", @@ -25,12 +25,12 @@ "@rspc/solid-query": "workspace:*", "@rspc/svelte-query": "workspace:*", "@rspc/tauri": "workspace:^", - "@tanstack/react-query": "^4.33.0", - "@tanstack/solid-query": "^4.33.0", - "@tanstack/svelte-query": "^4.33.0", - "react": "^18.0.0", - "react-dom": "^18.0.0", - "solid-js": "^1.4.3", - "svelte": "^4.0.0" + "@tanstack/react-query": "^4.35.3", + "@tanstack/solid-query": "^4.35.3", + "@tanstack/svelte-query": "^4.35.3", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "solid-js": "^1.7.12", + "svelte": "^4.2.1" } } diff --git a/examples/astro/src/components/react/index.tsx b/examples/astro/src/components/react/index.tsx index 2580b1e5..e0b5a30c 100644 --- a/examples/astro/src/components/react/index.tsx +++ b/examples/astro/src/components/react/index.tsx @@ -145,6 +145,7 @@ export default function App() { + @@ -156,3 +157,19 @@ export default function App() { ); } + +function Demo() { + const a = rspc.useSubscription(["batchingTest"], { + onData(msg) { + console.log("A", msg); + }, + }); + + const b = rspc.useSubscription(["batchingTest"], { + onData(msg) { + console.log("B", msg); + }, + }); + + return null; +} diff --git a/examples/axum/Cargo.toml b/examples/axum/Cargo.toml index 38ed32b4..a4566379 100644 --- a/examples/axum/Cargo.toml +++ b/examples/axum/Cargo.toml @@ -5,12 +5,12 @@ edition = "2021" publish = false [dependencies] -rspc = { path = "../../", features = ["axum", "tracing", "unstable"] } -rspc-axum = { path = "../../crates/axum" } -tokio = { version = "1.29.1", features = ["full"] } +rspc = { path = "../../", features = ["tracing", "unstable"] } +rspc-httpz = { path = "../../crates/httpz", features = ["axum"] } +tokio = { version = "1.32.0", features = ["full"] } async-stream = "0.3.5" -axum = { version = "0.6.19", features = ["ws", "http2"] } -tower-http = { version = "0.4.1", default-features = false, features = ["cors"] } +axum = { version = "0.6.20", features = ["ws", "http2"] } +tower-http = { version = "0.4.4", default-features = false, features = ["cors"] } futures = "0.3.28" tracing = "0.1.37" tracing-subscriber = "0.3.17" diff --git a/examples/axum/src/main.rs b/examples/axum/src/main.rs index 8acbd6fe..0a46df18 100644 --- a/examples/axum/src/main.rs +++ b/examples/axum/src/main.rs @@ -10,10 +10,10 @@ use std::{ use async_stream::stream; use axum::routing::get; use futures::Stream; -use rspc::{integrations::httpz::Request, Blob, ExportConfig, Rspc}; +use rspc::{ExportConfig, Rspc}; use serde::Serialize; use specta::Type; -use tokio::{fs::File, io::BufReader, time::sleep}; +use tokio::{sync::broadcast, time::sleep}; use tower_http::cors::{Any, CorsLayer}; use tracing::info; @@ -113,7 +113,7 @@ async fn main() { pub struct HandleDrop { id: u16, - send: bool, + sent: bool, } impl Stream for HandleDrop { @@ -123,10 +123,10 @@ async fn main() { mut self: Pin<&mut Self>, _: &mut Context<'_>, ) -> Poll> { - if self.send { - Poll::Pending + if self.sent { + Poll::Ready(None) } else { - self.send = true; + self.sent = true; Poll::Ready(Some(self.id)) } } @@ -138,26 +138,48 @@ async fn main() { } } - HandleDrop { id, send: false } + HandleDrop { id, sent: false } } }), ) // TODO: This is an unstable feature and should be used with caution! - .procedure( - "serveFile", - R.query(|_, _: ()| async move { - let file = File::open("./demo.json").await.unwrap(); - - // TODO: What if type which is `futures::Stream` + `tokio::AsyncRead`??? - - Blob(BufReader::new(file)) - }), - ) + // .procedure( + // "serveFile", + // R.query(|_, _: ()| async move { + // let file = File::open("./demo.json").await.unwrap(); + // // TODO: What if type which is `futures::Stream` + `tokio::AsyncRead`??? + // Blob(BufReader::new(file)) + // }), + // ) .procedure( "customErr", R.error::() .query(|_, _args: ()| Err::<(), _>(MyCustomError::IAmBroke)), ) + .procedure("batchingTest", { + let (tx, _) = broadcast::channel(10); + + tokio::spawn({ + let tx = tx.clone(); + + async move { + let mut timer = tokio::time::interval(Duration::from_secs(1)); + loop { + timer.tick().await; + tx.send("ping".to_string()).ok(); + } + } + }); + + R.subscription(move |_, _: ()| { + let mut rx = tx.subscribe(); + stream! { + while let Ok(msg) = rx.recv().await { + yield msg; + } + } + }) + }) .build() .unwrap() .arced(); // This function is a shortcut to wrap the router in an `Arc`. @@ -178,18 +200,16 @@ async fn main() { .route("/", get(|| async { "Hello 'rspc'!" })) .nest( "/rspc", - router - .clone() - .endpoint(|req: Request| { - println!("Client requested operation '{}'", req.uri().path()); - Ctx { - x_demo_header: req - .headers() - .get("X-Demo-Header") - .map(|v| v.to_str().unwrap().to_string()), - } - }) - .axum(), + rspc_httpz::endpoint(router, |req: rspc_httpz::Request| { + println!("Client requested operation '{}'", req.uri().path()); + Ctx { + x_demo_header: req + .headers() + .get("X-Demo-Header") + .map(|v| v.to_str().unwrap().to_string()), + } + }) + .axum(), ) .layer(cors); diff --git a/examples/bindings.ts b/examples/bindings.ts index 3765463b..7576d7b6 100644 --- a/examples/bindings.ts +++ b/examples/bindings.ts @@ -1,29 +1,8 @@ // This file was generated by [rspc](https://github.com/oscartbeaumont/rspc). Do not edit this file manually. -export type Procedures = { - queries: - | { key: "X-Demo-Header"; input: never; result: string; error: Error } - | { key: "customErr"; input: never; result: null; error: MyCustomError } - | { key: "echo"; input: string; result: string; error: Error } - | { key: "error"; input: never; result: string; error: Error } - | { key: "serveFile"; input: never; result: null; error: Error } - | { key: "transformMe"; input: never; result: string; error: Error } - | { key: "version"; input: never; result: string; error: Infallible }; - mutations: - | { key: "error"; input: never; result: string; error: Error } - | { key: "sendMsg"; input: string; result: string; error: Error }; - subscriptions: - | { key: "errorPings"; input: never; result: string; error: Error } - | { key: "pings"; input: never; result: string; error: Error } - | { - key: "testSubscriptionShutdown"; - input: never; - result: number; - error: Error; - }; -}; +export type Procedures = { queries: { key: "X-Demo-Header"; input: never; result: string; error: Error } | { key: "customErr"; input: never; result: null; error: MyCustomError } | { key: "echo"; input: string; result: string; error: Error } | { key: "error"; input: never; result: string; error: Error } | { key: "transformMe"; input: never; result: string; error: Error } | { key: "version"; input: never; result: string; error: Infallible }; mutations: { key: "error"; input: never; result: string; error: Error } | { key: "sendMsg"; input: string; result: string; error: Error }; subscriptions: { key: "batchingTest"; input: never; result: string; error: Error } | { key: "errorPings"; input: never; result: string; error: Error } | { key: "pings"; input: never; result: string; error: Error } | { key: "testSubscriptionShutdown"; input: never; result: number; error: Error } } -export type Error = string; +export type Error = string -export type Infallible = never; +export type Infallible = never -export type MyCustomError = "IAmBroke"; +export type MyCustomError = "IAmBroke" diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index cf7a6232..5069d21f 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -7,15 +7,15 @@ "dependencies": { "@rspc/client": "workspace:*", "@rspc/react-query": "workspace:*", - "@tanstack/react-query": "^4.33.0", - "next": "^13.4.10", + "@tanstack/react-query": "^4.35.3", + "next": "^13.5.3", "react": "^18.2.0", "react-dom": "^18.2.0" }, "devDependencies": { - "@types/node": "^20.4.2", - "@types/react": "^18.2.15", - "@types/react-dom": "^18.2.7", - "typescript": "^5.1.6" + "@types/node": "^20.7.1", + "@types/react": "^18.2.23", + "@types/react-dom": "^18.2.8", + "typescript": "^5.2.2" } } diff --git a/examples/src/basic.rs b/examples/src/basic.rs index afbdcd72..556d6ee5 100644 --- a/examples/src/basic.rs +++ b/examples/src/basic.rs @@ -1,4 +1,4 @@ -use rspc::Router; +use rspc::RouterBuilder; use crate::R; @@ -8,7 +8,7 @@ struct Error(&'static str); // 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() -> Router<()> { +pub fn mount() -> RouterBuilder<()> { R.router() .procedure("version", R.query(|_, _: ()| Ok(env!("CARGO_PKG_VERSION")))) .procedure("echo", R.query(|_, v: String| Ok(v))) diff --git a/examples/src/bin/cookies.rs b/examples/src/bin/cookies.rs index 29878e2d..eef939fc 100644 --- a/examples/src/bin/cookies.rs +++ b/examples/src/bin/cookies.rs @@ -3,7 +3,7 @@ use std::{ops::Add, path::PathBuf}; use axum::routing::get; -use rspc::{integrations::httpz::Request, ExportConfig, Rspc}; +use rspc::{ExportConfig, Rspc}; use time::OffsetDateTime; use tower_cookies::{Cookie, CookieManagerLayer, Cookies}; use tower_http::cors::{Any, CorsLayer}; @@ -55,8 +55,7 @@ async fn main() { // 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| { + rspc_httpz::endpoint(router, |mut req: rspc_httpz::Request| { // TODO: This API is going to be replaced with a httpz cookie manager in the next release to deal with Axum's recent changes. let cookies = req .deprecated_extract::() diff --git a/examples/src/bin/global_context.rs b/examples/src/bin/global_context.rs index 791e843c..662c29d6 100644 --- a/examples/src/bin/global_context.rs +++ b/examples/src/bin/global_context.rs @@ -39,7 +39,10 @@ async fn main() { // `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 app = axum::Router::new().nest( + "/rspc", + rspc_httpz::endpoint(router, move || MyCtx { count }).axum(), + ); let addr = "[::]:4000".parse::().unwrap(); // This listens on IPv6 and IPv4 println!("listening on http://{}/rspc/hit", addr); diff --git a/examples/src/bin/middleware.rs b/examples/src/bin/middleware.rs index 74e702b5..8abba509 100644 --- a/examples/src/bin/middleware.rs +++ b/examples/src/bin/middleware.rs @@ -129,11 +129,10 @@ async fn main() { // 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(), + rspc_httpz::endpoint(router, || 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( diff --git a/examples/src/error_handling.rs b/examples/src/error_handling.rs index d6fc2d6f..d827f0fc 100644 --- a/examples/src/error_handling.rs +++ b/examples/src/error_handling.rs @@ -1,4 +1,4 @@ -use rspc::Router; +use rspc::RouterBuilder; use serde::Serialize; use specta::Type; @@ -16,7 +16,7 @@ pub enum MyCustomError { // We merge this router into the main router in `main.rs`. // This router shows how to do error handling -pub fn mount() -> Router<()> { +pub fn mount() -> RouterBuilder<()> { R.router() .procedure("ok", R.query(|_, _args: ()| Ok("Hello World"))) .procedure( diff --git a/examples/src/merging_routers.rs b/examples/src/merging_routers.rs index e9659f86..cb78ce4f 100644 --- a/examples/src/merging_routers.rs +++ b/examples/src/merging_routers.rs @@ -1,23 +1,23 @@ use async_stream::stream; -use rspc::Router; +use rspc::RouterBuilder; use crate::R; -fn mount_inner() -> Router<()> { +fn mount_inner() -> RouterBuilder<()> { R.router().procedure( "demo", R.query(|_ctx, _: ()| async move { Ok("Hello World") }), ) } -fn mount_inner2() -> Router<()> { +fn mount_inner2() -> RouterBuilder<()> { R.router().procedure( "demo", R.query(|_ctx, _: ()| async move { Ok("Hello World") }), ) } -fn mount() -> Router<()> { +fn mount() -> RouterBuilder<()> { R.router() .procedure( "demo", diff --git a/examples/src/subscriptions.rs b/examples/src/subscriptions.rs index e9eda14e..90d27ad9 100644 --- a/examples/src/subscriptions.rs +++ b/examples/src/subscriptions.rs @@ -1,14 +1,14 @@ use std::time::Duration; use async_stream::stream; -use rspc::{ErrorCode, Router}; +use rspc::{ErrorCode, RouterBuilder}; use tokio::time::sleep; use crate::R; // We merge this router into the main router in `main.rs`. // This router shows how to do subscriptions. -pub fn mount() -> Router<()> { +pub fn mount() -> RouterBuilder<()> { R.router().procedure( "pings", R.subscription(|_ctx, _args: ()| { diff --git a/examples/tauri/package.json b/examples/tauri/package.json index c4fc112a..547fa6d9 100644 --- a/examples/tauri/package.json +++ b/examples/tauri/package.json @@ -14,7 +14,7 @@ }, "devDependencies": { "@tauri-apps/cli": "^1.4.0", - "typescript": "^5.1.6", - "vite": "^4.4.4" + "typescript": "^5.2.2", + "vite": "^4.4.9" } } diff --git a/examples/tauri/src-tauri/Cargo.toml b/examples/tauri/src-tauri/Cargo.toml index 931dd156..e9efe111 100644 --- a/examples/tauri/src-tauri/Cargo.toml +++ b/examples/tauri/src-tauri/Cargo.toml @@ -11,7 +11,8 @@ tauri-build = { version = "1.4", features = [] } tauri = { version = "1.4", features = ["shell-open"] } serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" -rspc = { path = "../../../", features = ["tauri"] } +rspc = { path = "../../../", features = ["unstable"] } +rspc-tauri = { path = "../../../crates/tauri" } tokio = { version = "1", features = ["rt-multi-thread", "macros"] } async-stream = "0.3.5" futures = "0.3.28" diff --git a/examples/tauri/src-tauri/src/main.rs b/examples/tauri/src-tauri/src/main.rs index 70066e1c..7bcd1f3d 100644 --- a/examples/tauri/src-tauri/src/main.rs +++ b/examples/tauri/src-tauri/src/main.rs @@ -133,7 +133,7 @@ async fn main() { .arced(); // This function is a shortcut to wrap the router in an `Arc`. tauri::Builder::default() - .plugin(rspc::integrations::tauri::plugin(router, |_| Ctx { + .plugin(rspc_tauri::plugin(router, |_| Ctx { x_demo_header: None, })) .run(tauri::generate_context!()) diff --git a/examples/vercel/Cargo.toml b/examples/vercel/Cargo.toml index 534696ac..ff126535 100644 --- a/examples/vercel/Cargo.toml +++ b/examples/vercel/Cargo.toml @@ -6,9 +6,10 @@ publish = false [dependencies] tokio = { version = "1", features = ["macros", "time"] } -serde_json = { version = "1.0.103", features = ["raw_value"] } -rspc = { path = "../..", features = ["vercel"] } -vercel_runtime = { version = "^1.0.2" } +serde_json = { version = "1.0.107", features = ["raw_value"] } +rspc = { path = "../..", features = [] } +rspc-httpz = { path = "../../crates/httpz", features = ["vercel"] } +vercel_runtime = { version = "^1.1.0" } async-stream = "0.3.5" thiserror = { workspace = true } serde = { workspace = true } diff --git a/examples/vercel/api/rspc/[rspc].rs b/examples/vercel/api/rspc/[rspc].rs index 1f8706a2..89cb13f9 100644 --- a/examples/vercel/api/rspc/[rspc].rs +++ b/examples/vercel/api/rspc/[rspc].rs @@ -1,5 +1,5 @@ use async_stream::stream; -use rspc::{integrations::httpz::Request, ExportConfig, Rspc}; +use rspc::{ExportConfig, Rspc}; use std::{path::PathBuf, time::Duration}; use tokio::time::sleep; @@ -66,17 +66,16 @@ async fn main() { )) .unwrap(); - router - .endpoint(|req: Request| { - println!("Client requested operation '{}'", req.uri().path()); - Ctx { - x_demo_header: req - .headers() - .get("X-Demo-Header") - .map(|v| v.to_str().unwrap().to_string()), - } - }) - .vercel() - .await - .unwrap(); + rspc_httpz::endpoint(router, |req: rspc_httpz::Request| { + println!("Client requested operation '{}'", req.uri().path()); + Ctx { + x_demo_header: req + .headers() + .get("X-Demo-Header") + .map(|v| v.to_str().unwrap().to_string()), + } + }) + .vercel() + .await + .unwrap(); } diff --git a/examples/vercel/package.json b/examples/vercel/package.json index 954a7319..00c56ecf 100644 --- a/examples/vercel/package.json +++ b/examples/vercel/package.json @@ -8,16 +8,16 @@ "dependencies": { "@rspc/client": "workspace:*", "@rspc/react-query": "workspace:*", - "@tanstack/react-query": "^4.33.0", - "next": "^13.4.10", + "@tanstack/react-query": "^4.35.3", + "next": "^13.5.3", "react": "^18.2.0", "react-dom": "^18.2.0" }, "devDependencies": { - "@types/node": "^20.4.2", - "@types/react": "^18.2.15", - "@types/react-dom": "^18.2.7", - "concurrently": "^8.2.0", - "typescript": "^5.1.6" + "@types/node": "^20.7.1", + "@types/react": "^18.2.23", + "@types/react-dom": "^18.2.8", + "concurrently": "^8.2.1", + "typescript": "^5.2.2" } } diff --git a/package.json b/package.json index 670cb4b4..3a229a29 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,6 @@ "node": ">=16.0.0" }, "devDependencies": { - "typescript": "^5.1.6" + "typescript": "^5.2.2" } } diff --git a/packages/client/package.json b/packages/client/package.json index 0e99f808..27dce44a 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -24,9 +24,9 @@ "test": "vitest ./index.test.ts" }, "devDependencies": { - "tsup": "^7.1.0", - "typescript": "^5.1.6", - "vitest": "^0.33.0", - "ws": "^8.13.0" + "tsup": "^7.2.0", + "typescript": "^5.2.2", + "vitest": "^0.34.5", + "ws": "^8.14.2" } } diff --git a/packages/client/src/bindings.ts b/packages/client/src/bindings.ts index 58167bf0..85caaa45 100644 --- a/packages/client/src/bindings.ts +++ b/packages/client/src/bindings.ts @@ -7,22 +7,24 @@ export type ProceduresDef = { queries: ProcedureDef; mutations: ProcedureDef; subscriptions: ProcedureDef } /** - * A value that can be a successful result or an error. + * The type of a response from rspc. * * @internal */ -export type ResponseInner = { type: "value"; value: any } | { type: "error"; value: ProcedureError } | { type: "complete" } +export type Response = ({ type: "value"; value: any } | { type: "error"; value: ProcedureError } | { type: "complete" }) & { id: number } export type ProcedureError = { Exec: Error } | { Resolver: any } export type Error = { code: ErrorCode; message: string } /** - * The type of a response from rspc. + * The type of a request to rspc. * * @internal */ -export type Response = ({ type: "value"; value: any } | { type: "error"; value: ProcedureError } | { type: "complete" }) & { id: number } +export type Request = ({ method: "query" } & RequestData) | ({ method: "mutation" } & RequestData) | ({ method: "subscription" } & RequestData) | { method: "subscriptionStop"; id: number } + +export type RequestData = { id: number; path: string; input: any | null } /** * Represents a Typescript procedure file which is generated by the Rust code. @@ -33,13 +35,13 @@ export type Response = ({ type: "value"; value: any } | { type: "error"; value: export type ProcedureDef = { key: string; input: any; result: any; error: any } /** - * TODO + * A value that can be a successful result or an error. + * + * @internal */ -export type ErrorCode = "BadRequest" | "Unauthorized" | "Forbidden" | "NotFound" | "Timeout" | "Conflict" | "PreconditionFailed" | "PayloadTooLarge" | "MethodNotSupported" | "ClientClosedRequest" | "InternalServerError" +export type ResponseInner = { type: "value"; value: any } | { type: "error"; value: ProcedureError } | { type: "complete" } /** - * The type of a request to rspc. - * - * @internal + * TODO */ -export type Request = { method: "query"; id: number; path: string; input: any | null } | { method: "mutation"; id: number; path: string; input: any | null } | { method: "subscription"; id: number; path: string; input: any | null } | { method: "subscriptionStop"; id: number } \ No newline at end of file +export type ErrorCode = "BadRequest" | "Unauthorized" | "Forbidden" | "NotFound" | "Timeout" | "Conflict" | "PreconditionFailed" | "PayloadTooLarge" | "MethodNotSupported" | "ClientClosedRequest" | "InternalServerError" \ No newline at end of file diff --git a/packages/query-core/package.json b/packages/query-core/package.json index 73c361f7..4e082cb3 100644 --- a/packages/query-core/package.json +++ b/packages/query-core/package.json @@ -25,11 +25,11 @@ }, "devDependencies": { "@rspc/client": "workspace:*", - "@tanstack/query-core": "^4.33.0", - "tslib": "^2.6.0", - "tsup": "^7.1.0", - "typescript": "^5.1.6", - "vitest": "^0.33.0" + "@tanstack/query-core": "^4.35.3", + "tslib": "^2.6.2", + "tsup": "^7.2.0", + "typescript": "^5.2.2", + "vitest": "^0.34.5" }, "peerDependencies": { "@rspc/client": "workspace:*", diff --git a/packages/react-query/package.json b/packages/react-query/package.json index a6bf0c6e..5aa593f4 100644 --- a/packages/react-query/package.json +++ b/packages/react-query/package.json @@ -28,13 +28,13 @@ }, "devDependencies": { "@rspc/client": "workspace:*", - "@tanstack/react-query": "^4.33.0", - "@types/react": "^18.2.15", + "@tanstack/react-query": "^4.35.3", + "@types/react": "^18.2.23", "react": "^18.2.0", - "tslib": "^2.6.0", - "tsup": "^7.1.0", - "typescript": "^5.1.6", - "vitest": "^0.33.0" + "tslib": "^2.6.2", + "tsup": "^7.2.0", + "typescript": "^5.2.2", + "vitest": "^0.34.5" }, "peerDependencies": { "@rspc/client": "workspace:*", diff --git a/packages/solid-query/package.json b/packages/solid-query/package.json index e70e9ffc..a2b7bbc7 100644 --- a/packages/solid-query/package.json +++ b/packages/solid-query/package.json @@ -32,13 +32,13 @@ }, "devDependencies": { "@rspc/client": "workspace:*", - "@tanstack/solid-query": "^4.33.0", - "rollup": "^3.26.3", + "@tanstack/solid-query": "^4.35.3", + "rollup": "^3.29.4", "rollup-preset-solid": "^2.0.1", - "solid-js": "^1.7.8", - "tslib": "^2.6.0", - "typescript": "^5.1.6", - "vitest": "^0.33.0" + "solid-js": "^1.7.12", + "tslib": "^2.6.2", + "typescript": "^5.2.2", + "vitest": "^0.34.5" }, "peerDependencies": { "@rspc/client": "workspace:*", diff --git a/packages/svelte-query/package.json b/packages/svelte-query/package.json index adc3d198..f86975bb 100644 --- a/packages/svelte-query/package.json +++ b/packages/svelte-query/package.json @@ -32,10 +32,10 @@ "devDependencies": { "@rspc/client": "workspace:*", "@sveltejs/package": "^2.2.2", - "@tanstack/svelte-query": "^4.33.0", - "tslib": "^2.6.0", - "typescript": "^5.1.6", - "vitest": "^0.33.0" + "@tanstack/svelte-query": "^4.35.3", + "tslib": "^2.6.2", + "typescript": "^5.2.2", + "vitest": "^0.34.5" }, "peerDependencies": { "@rspc/client": "workspace:*", diff --git a/packages/tauri/package.json b/packages/tauri/package.json index 2e79a80d..06c57e9d 100644 --- a/packages/tauri/package.json +++ b/packages/tauri/package.json @@ -27,10 +27,10 @@ "@rspc/client": "workspace:*" }, "devDependencies": { - "tsup": "^7.1.0", "@tauri-apps/api": "^1.4.0", - "typescript": "^5.1.6", - "vitest": "^0.33.0" + "tsup": "^7.2.0", + "typescript": "^5.2.2", + "vitest": "^0.34.5" }, "peerDependencies": { "@tauri-apps/api": "^1.2.0" diff --git a/packages/tauri/src/types.ts b/packages/tauri/src/types.ts index 043253ee..f8c6cc4e 100644 --- a/packages/tauri/src/types.ts +++ b/packages/tauri/src/types.ts @@ -1,52 +1,36 @@ -// This file was generated by [tauri-specta](https://github.com/oscartbeaumont/tauri-specta). Do not edit this file manually. + // This file was generated by [tauri-specta](https://github.com/oscartbeaumont/tauri-specta). Do not edit this file manually. -export const commands = {}; +export const commands = { + +} export const events = __makeEvents__<{ - msg: Msg; - transportResp: Response[]; + msg: Msg, + transportResp: Response[] }>({ - msg: "plugin:rspc:msg", - transportResp: "plugin:rspc:transport-resp", -}); +msg: "plugin:rspc:msg", +transportResp: "plugin:rspc:transport-resp" +}) -/** - * A value that can be a successful result or an error. - * + /** + * The type of a response from rspc. + * * @internal */ -export type ResponseInner = - | { type: "value"; value: any } - | { type: "error"; value: ProcedureError } - | { type: "complete" }; -export type ProcedureError = { Exec: Error } | { Resolver: any }; -export type Error = { code: ErrorCode; message: string }; -export type Msg = any; +export type Response = ({ type: "value"; value: any } | { type: "error"; value: ProcedureError } | { type: "complete" }) & { id: number } +export type ProcedureError = { Exec: Error } | { Resolver: any } +export type Error = { code: ErrorCode; message: string } +export type Msg = any /** - * The type of a response from rspc. - * + * A value that can be a successful result or an error. + * * @internal */ -export type Response = ( - | { type: "value"; value: any } - | { type: "error"; value: ProcedureError } - | { type: "complete" } -) & { id: number }; +export type ResponseInner = { type: "value"; value: any } | { type: "error"; value: ProcedureError } | { type: "complete" } /** * TODO */ -export type ErrorCode = - | "BadRequest" - | "Unauthorized" - | "Forbidden" - | "NotFound" - | "Timeout" - | "Conflict" - | "PreconditionFailed" - | "PayloadTooLarge" - | "MethodNotSupported" - | "ClientClosedRequest" - | "InternalServerError"; +export type ErrorCode = "BadRequest" | "Unauthorized" | "Forbidden" | "NotFound" | "Timeout" | "Conflict" | "PreconditionFailed" | "PayloadTooLarge" | "MethodNotSupported" | "ClientClosedRequest" | "InternalServerError" import { invoke as TAURI_INVOKE } from "@tauri-apps/api"; import * as TAURI_API_EVENT from "@tauri-apps/api/event"; @@ -100,3 +84,5 @@ function __makeEvents__>( } ); } + + \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ae8f8c33..368a391a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,29 +9,29 @@ importers: .: devDependencies: typescript: - specifier: ^5.1.6 - version: 5.1.6 + specifier: ^5.2.2 + version: 5.2.2 docs: dependencies: '@headlessui/react': - specifier: ^1.7.15 - version: 1.7.15(react-dom@18.2.0)(react@18.2.0) + specifier: ^1.7.17 + version: 1.7.17(react-dom@18.2.0)(react@18.2.0) '@heroicons/react': specifier: ^2.0.18 version: 2.0.18(react@18.2.0) '@vercel/og': - specifier: ^0.5.8 - version: 0.5.8 + specifier: ^0.5.17 + version: 0.5.17 next: - specifier: ^13.4.10 - version: 13.4.10(react-dom@18.2.0)(react@18.2.0) + specifier: ^13.5.3 + version: 13.5.3(react-dom@18.2.0)(react@18.2.0) nextra: - specifier: ^2.10.0 - version: 2.10.0(next@13.4.10)(react-dom@18.2.0)(react@18.2.0) + specifier: ^2.13.1 + version: 2.13.1(next@13.5.3)(react-dom@18.2.0)(react@18.2.0) nextra-theme-docs: - specifier: ^2.10.0 - version: 2.10.0(next@13.4.10)(nextra@2.10.0)(react-dom@18.2.0)(react@18.2.0) + specifier: ^2.13.1 + version: 2.13.1(next@13.5.3)(nextra@2.13.1)(react-dom@18.2.0)(react@18.2.0) react: specifier: ^18.2.0 version: 18.2.0 @@ -43,26 +43,26 @@ importers: version: 2.3.0(@popperjs/core@2.11.8)(react-dom@18.2.0)(react@18.2.0) devDependencies: '@types/node': - specifier: 20.4.2 - version: 20.4.2 + specifier: 20.7.1 + version: 20.7.1 '@types/react': - specifier: ^18.2.15 - version: 18.2.15 + specifier: ^18.2.23 + version: 18.2.23 autoprefixer: - specifier: ^10.4.14 - version: 10.4.14(postcss@8.4.26) + specifier: ^10.4.16 + version: 10.4.16(postcss@8.4.30) postcss: - specifier: ^8.4.26 - version: 8.4.26 + specifier: ^8.4.30 + version: 8.4.30 tailwindcss: specifier: ^3.3.3 version: 3.3.3 tslib: - specifier: ^2.6.0 - version: 2.6.0 + specifier: ^2.6.2 + version: 2.6.2 typescript: - specifier: ^5.1.6 - version: 5.1.6 + specifier: ^5.2.2 + version: 5.2.2 examples/astro: dependencies: @@ -82,50 +82,50 @@ importers: specifier: workspace:^ version: link:../../packages/tauri '@tanstack/react-query': - specifier: ^4.33.0 - version: 4.33.0(react-dom@18.2.0)(react@18.2.0) + specifier: ^4.35.3 + version: 4.35.3(react-dom@18.2.0)(react@18.2.0) '@tanstack/solid-query': - specifier: ^4.33.0 - version: 4.33.0(solid-js@1.7.8) + specifier: ^4.35.3 + version: 4.35.3(solid-js@1.7.12) '@tanstack/svelte-query': - specifier: ^4.33.0 - version: 4.33.0(svelte@4.2.0) + specifier: ^4.35.3 + version: 4.35.3(svelte@4.2.1) react: - specifier: ^18.0.0 + specifier: ^18.2.0 version: 18.2.0 react-dom: - specifier: ^18.0.0 + specifier: ^18.2.0 version: 18.2.0(react@18.2.0) solid-js: - specifier: ^1.4.3 - version: 1.7.8 + specifier: ^1.7.12 + version: 1.7.12 svelte: - specifier: ^4.0.0 - version: 4.2.0 + specifier: ^4.2.1 + version: 4.2.1 devDependencies: '@astrojs/react': - specifier: ^3.0.0 - version: 3.0.0(@types/react-dom@18.2.7)(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0)(vite@4.4.9) + specifier: ^3.0.2 + version: 3.0.2(@types/react-dom@18.2.8)(@types/react@18.2.23)(react-dom@18.2.0)(react@18.2.0)(vite@4.4.9) '@astrojs/solid-js': - specifier: ^3.0.0 - version: 3.0.0(solid-js@1.7.8)(vite@4.4.9) + specifier: ^3.0.1 + version: 3.0.1(solid-js@1.7.12)(vite@4.4.9) '@astrojs/svelte': - specifier: ^4.0.0 - version: 4.0.0(astro@3.0.7)(svelte@4.2.0)(typescript@5.2.2)(vite@4.4.9) + specifier: ^4.0.2 + version: 4.0.2(astro@3.1.4)(svelte@4.2.1)(typescript@5.2.2)(vite@4.4.9) '@astrojs/tailwind': specifier: ^5.0.0 - version: 5.0.0(astro@3.0.7)(tailwindcss@3.3.3) + version: 5.0.0(astro@3.1.4)(tailwindcss@3.3.3) '@types/react': - specifier: ^18.0.21 - version: 18.2.15 + specifier: ^18.2.23 + version: 18.2.23 '@types/react-dom': - specifier: ^18.0.6 - version: 18.2.7 + specifier: ^18.2.8 + version: 18.2.8 astro: - specifier: ^3.0.7 - version: 3.0.7 + specifier: ^3.1.4 + version: 3.1.4 tailwindcss: - specifier: ^3.0.24 + specifier: ^3.3.3 version: 3.3.3 examples/nextjs: @@ -137,11 +137,11 @@ importers: specifier: workspace:* version: link:../../packages/react-query '@tanstack/react-query': - specifier: ^4.33.0 - version: 4.33.0(react-dom@18.2.0)(react@18.2.0) + specifier: ^4.35.3 + version: 4.35.3(react-dom@18.2.0)(react@18.2.0) next: - specifier: ^13.4.10 - version: 13.4.10(react-dom@18.2.0)(react@18.2.0) + specifier: ^13.5.3 + version: 13.5.3(react-dom@18.2.0)(react@18.2.0) react: specifier: ^18.2.0 version: 18.2.0 @@ -150,17 +150,17 @@ importers: version: 18.2.0(react@18.2.0) devDependencies: '@types/node': - specifier: ^20.4.2 - version: 20.4.2 + specifier: ^20.7.1 + version: 20.7.1 '@types/react': - specifier: ^18.2.15 - version: 18.2.15 + specifier: ^18.2.23 + version: 18.2.23 '@types/react-dom': - specifier: ^18.2.7 - version: 18.2.7 + specifier: ^18.2.8 + version: 18.2.8 typescript: - specifier: ^5.1.6 - version: 5.1.6 + specifier: ^5.2.2 + version: 5.2.2 examples/tauri: dependencies: @@ -172,11 +172,11 @@ importers: specifier: ^1.4.0 version: 1.4.0 typescript: - specifier: ^5.1.6 - version: 5.1.6 + specifier: ^5.2.2 + version: 5.2.2 vite: - specifier: ^4.4.4 - version: 4.4.4 + specifier: ^4.4.9 + version: 4.4.9(@types/node@20.7.1) examples/vercel: dependencies: @@ -187,11 +187,11 @@ importers: specifier: workspace:* version: link:../../packages/react-query '@tanstack/react-query': - specifier: ^4.33.0 - version: 4.33.0(react-dom@18.2.0)(react@18.2.0) + specifier: ^4.35.3 + version: 4.35.3(react-dom@18.2.0)(react@18.2.0) next: - specifier: ^13.4.10 - version: 13.4.10(react-dom@18.2.0)(react@18.2.0) + specifier: ^13.5.3 + version: 13.5.3(react-dom@18.2.0)(react@18.2.0) react: specifier: ^18.2.0 version: 18.2.0 @@ -200,35 +200,35 @@ importers: version: 18.2.0(react@18.2.0) devDependencies: '@types/node': - specifier: ^20.4.2 - version: 20.4.2 + specifier: ^20.7.1 + version: 20.7.1 '@types/react': - specifier: ^18.2.15 - version: 18.2.15 + specifier: ^18.2.23 + version: 18.2.23 '@types/react-dom': - specifier: ^18.2.7 - version: 18.2.7 + specifier: ^18.2.8 + version: 18.2.8 concurrently: - specifier: ^8.2.0 - version: 8.2.0 + specifier: ^8.2.1 + version: 8.2.1 typescript: - specifier: ^5.1.6 - version: 5.1.6 + specifier: ^5.2.2 + version: 5.2.2 packages/client: devDependencies: tsup: - specifier: ^7.1.0 - version: 7.1.0(typescript@5.1.6) + specifier: ^7.2.0 + version: 7.2.0(typescript@5.2.2) typescript: - specifier: ^5.1.6 - version: 5.1.6 + specifier: ^5.2.2 + version: 5.2.2 vitest: - specifier: ^0.33.0 - version: 0.33.0 + specifier: ^0.34.5 + version: 0.34.5 ws: - specifier: ^8.13.0 - version: 8.13.0 + specifier: ^8.14.2 + version: 8.14.2 packages/query-core: devDependencies: @@ -236,20 +236,20 @@ importers: specifier: workspace:* version: link:../client '@tanstack/query-core': - specifier: ^4.33.0 - version: 4.33.0 + specifier: ^4.35.3 + version: 4.35.3 tslib: - specifier: ^2.6.0 - version: 2.6.0 + specifier: ^2.6.2 + version: 2.6.2 tsup: - specifier: ^7.1.0 - version: 7.1.0(typescript@5.1.6) + specifier: ^7.2.0 + version: 7.2.0(typescript@5.2.2) typescript: - specifier: ^5.1.6 - version: 5.1.6 + specifier: ^5.2.2 + version: 5.2.2 vitest: - specifier: ^0.33.0 - version: 0.33.0 + specifier: ^0.34.5 + version: 0.34.5 packages/react-query: dependencies: @@ -261,26 +261,26 @@ importers: specifier: workspace:* version: link:../client '@tanstack/react-query': - specifier: ^4.33.0 - version: 4.33.0(react-dom@18.2.0)(react@18.2.0) + specifier: ^4.35.3 + version: 4.35.3(react-dom@18.2.0)(react@18.2.0) '@types/react': - specifier: ^18.2.15 - version: 18.2.15 + specifier: ^18.2.23 + version: 18.2.23 react: specifier: ^18.2.0 version: 18.2.0 tslib: - specifier: ^2.6.0 - version: 2.6.0 + specifier: ^2.6.2 + version: 2.6.2 tsup: - specifier: ^7.1.0 - version: 7.1.0(typescript@5.1.6) + specifier: ^7.2.0 + version: 7.2.0(typescript@5.2.2) typescript: - specifier: ^5.1.6 - version: 5.1.6 + specifier: ^5.2.2 + version: 5.2.2 vitest: - specifier: ^0.33.0 - version: 0.33.0 + specifier: ^0.34.5 + version: 0.34.5 packages/solid-query: dependencies: @@ -292,26 +292,26 @@ importers: specifier: workspace:* version: link:../client '@tanstack/solid-query': - specifier: ^4.33.0 - version: 4.33.0(solid-js@1.7.8) + specifier: ^4.35.3 + version: 4.35.3(solid-js@1.7.12) rollup: - specifier: ^3.26.3 - version: 3.26.3 + specifier: ^3.29.4 + version: 3.29.4 rollup-preset-solid: specifier: ^2.0.1 version: 2.0.1 solid-js: - specifier: ^1.7.8 - version: 1.7.8 + specifier: ^1.7.12 + version: 1.7.12 tslib: - specifier: ^2.6.0 - version: 2.6.0 + specifier: ^2.6.2 + version: 2.6.2 typescript: - specifier: ^5.1.6 - version: 5.1.6 + specifier: ^5.2.2 + version: 5.2.2 vitest: - specifier: ^0.33.0 - version: 0.33.0 + specifier: ^0.34.5 + version: 0.34.5 packages/svelte-query: dependencies: @@ -320,26 +320,26 @@ importers: version: link:../query-core svelte: specifier: '>=3 <5' - version: 4.2.0 + version: 4.2.1 devDependencies: '@rspc/client': specifier: workspace:* version: link:../client '@sveltejs/package': specifier: ^2.2.2 - version: 2.2.2(svelte@4.2.0)(typescript@5.1.6) + version: 2.2.2(svelte@4.2.1)(typescript@5.2.2) '@tanstack/svelte-query': - specifier: ^4.33.0 - version: 4.33.0(svelte@4.2.0) + specifier: ^4.35.3 + version: 4.35.3(svelte@4.2.1) tslib: - specifier: ^2.6.0 - version: 2.6.0 + specifier: ^2.6.2 + version: 2.6.2 typescript: - specifier: ^5.1.6 - version: 5.1.6 + specifier: ^5.2.2 + version: 5.2.2 vitest: - specifier: ^0.33.0 - version: 0.33.0 + specifier: ^0.34.5 + version: 0.34.5 packages/tauri: dependencies: @@ -351,14 +351,14 @@ importers: specifier: ^1.4.0 version: 1.4.0 tsup: - specifier: ^7.1.0 - version: 7.1.0(typescript@5.1.6) + specifier: ^7.2.0 + version: 7.2.0(typescript@5.2.2) typescript: - specifier: ^5.1.6 - version: 5.1.6 + specifier: ^5.2.2 + version: 5.2.2 vitest: - specifier: ^0.33.0 - version: 0.33.0 + specifier: ^0.34.5 + version: 0.34.5 packages/vscode: {} @@ -374,32 +374,33 @@ packages: engines: {node: '>=6.0.0'} dependencies: '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.18 + '@jridgewell/trace-mapping': 0.3.19 - /@astrojs/compiler@2.0.1: - resolution: {integrity: sha512-DfBR7Cf+tOgQ4n7TIgTtU5x5SEA/08DNshpEPcT+91A0KbBlmUOYMBM/O6qAaHkmVo1KIoXQYhAmfdTT1zx9PQ==} + /@astrojs/compiler@2.1.0: + resolution: {integrity: sha512-Mp+qrNhly+27bL/Zq8lGeUY+YrdoU0eDfIlAeGIPrzt0PnI/jGpvPUdCaugv4zbCrDkOUScFfcbeEiYumrdJnw==} dev: true /@astrojs/internal-helpers@0.2.0: resolution: {integrity: sha512-NQ4ppp1CM0HNkKbJNM4saVSfmUYzGlRalF6wx7F6T/MYHYSWGuojY89/oFTy4t8VlOGUCUijlsVNNeziWaUo5g==} dev: true - /@astrojs/markdown-remark@3.0.0(astro@3.0.7): - resolution: {integrity: sha512-s8I49Je4++ImgYAgwL32HgN8m6we2qz3RtBpN4AjObMODPwDylmzUHZksD8Toy31q/P59ED3MuwphqOGm9l03w==} + /@astrojs/markdown-remark@3.2.0(astro@3.1.4): + resolution: {integrity: sha512-jigyLfefUZPKgVmmraCkVpdUuFH1R3SrpgQO13axsgwLDBgkggaQpNR5Ag4O9PDualeBtbdt30aYSfvnBKx9Hg==} peerDependencies: - astro: ^3.0.0 + astro: ^3.1.0 dependencies: '@astrojs/prism': 3.0.0 - astro: 3.0.7 + astro: 3.1.4 github-slugger: 2.0.0 import-meta-resolve: 3.0.0 + mdast-util-definitions: 6.0.0 rehype-raw: 6.1.1 rehype-stringify: 9.0.4 remark-gfm: 3.0.1 remark-parse: 10.0.2 remark-rehype: 10.1.0 remark-smartypants: 2.0.0 - shiki: 0.14.3 + shiki: 0.14.4 unified: 10.1.2 unist-util-visit: 4.1.2 vfile: 5.3.7 @@ -414,8 +415,8 @@ packages: prismjs: 1.29.0 dev: true - /@astrojs/react@3.0.0(@types/react-dom@18.2.7)(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0)(vite@4.4.9): - resolution: {integrity: sha512-JOj0DF7gCmyrM2fem8LLXOh2sF9lX0zSkm6B0GpLeJ4u2lH5B8w9znBZuLy4AZZVktNqiLfexwlhWE99VC9ZpQ==} + /@astrojs/react@3.0.2(@types/react-dom@18.2.8)(@types/react@18.2.23)(react-dom@18.2.0)(react@18.2.0)(vite@4.4.9): + resolution: {integrity: sha512-aooNIuQxTg+IWGMZPuIEwBeBi4/TCPCMsr3714zuLjAjukVd5ZrX/bCNxJqDWU4HNwUm4XFU1OhcEvYOHa5uMQ==} engines: {node: '>=18.14.1'} peerDependencies: '@types/react': ^17.0.50 || ^18.0.21 @@ -423,65 +424,64 @@ packages: react: ^17.0.2 || ^18.0.0 react-dom: ^17.0.2 || ^18.0.0 dependencies: - '@astrojs/internal-helpers': 0.2.0 - '@types/react': 18.2.15 - '@types/react-dom': 18.2.7 - '@vitejs/plugin-react': 4.0.4(vite@4.4.9) + '@types/react': 18.2.23 + '@types/react-dom': 18.2.8 + '@vitejs/plugin-react': 4.1.0(vite@4.4.9) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - ultrahtml: 1.4.0 + ultrahtml: 1.5.2 transitivePeerDependencies: - supports-color - vite dev: true - /@astrojs/solid-js@3.0.0(solid-js@1.7.8)(vite@4.4.9): - resolution: {integrity: sha512-3uRYfi4cvDYHLDOBZ4Qh+UE6hwNg+qliZhxitN3JptmnDG/Lqx7emLwT2wrNPXd44cCukPkFkSzSZFBxt+CBew==} + /@astrojs/solid-js@3.0.1(solid-js@1.7.12)(vite@4.4.9): + resolution: {integrity: sha512-2powD8dA9WIH6E63ZWU+QRpI+9QmVsfmKk1VsQGvja0sxMcaGz/DJFpEFhHafK3sU4Htne7l5aAUnKVlA19iyw==} engines: {node: '>=18.14.1'} peerDependencies: solid-js: ^1.4.3 dependencies: - solid-js: 1.7.8 - vite-plugin-solid: 2.7.0(solid-js@1.7.8)(vite@4.4.9) + solid-js: 1.7.12 + vite-plugin-solid: 2.7.0(solid-js@1.7.12)(vite@4.4.9) transitivePeerDependencies: - supports-color - vite dev: true - /@astrojs/svelte@4.0.0(astro@3.0.7)(svelte@4.2.0)(typescript@5.2.2)(vite@4.4.9): - resolution: {integrity: sha512-HTn6p2U8GnbiDFxfyaUUCPLGW1P/RAEC0jeg4Zk0IGQd1szSvHwuZst99/k8oRoIytH5eLWSRuiYMI4j5vdA6w==} + /@astrojs/svelte@4.0.2(astro@3.1.4)(svelte@4.2.1)(typescript@5.2.2)(vite@4.4.9): + resolution: {integrity: sha512-XB9Sexq+iW5aUpctDk6zuKHbWIAuPlAnZKbfgaS9VOaOUtx1t12crP9YoKEVcTifXYgoRuWWfeEAm2I8pYlLIQ==} engines: {node: '>=18.14.1'} peerDependencies: - astro: ^3.0.0 + astro: ^3.0.11 svelte: ^3.55.0 || ^4.0.0 dependencies: - '@sveltejs/vite-plugin-svelte': 2.4.5(svelte@4.2.0)(vite@4.4.9) - astro: 3.0.7 - svelte: 4.2.0 - svelte2tsx: 0.6.21(svelte@4.2.0)(typescript@5.2.2) + '@sveltejs/vite-plugin-svelte': 2.4.6(svelte@4.2.1)(vite@4.4.9) + astro: 3.1.4 + svelte: 4.2.1 + svelte2tsx: 0.6.22(svelte@4.2.1)(typescript@5.2.2) transitivePeerDependencies: - supports-color - typescript - vite dev: true - /@astrojs/tailwind@5.0.0(astro@3.0.7)(tailwindcss@3.3.3): + /@astrojs/tailwind@5.0.0(astro@3.1.4)(tailwindcss@3.3.3): resolution: {integrity: sha512-bMZZNNm/SW+ijUKMQDhdiuNWDdR3CubEKUHb2Ran4Arx1ikWn/kKIkFDXUV+MUnsLa7s19x9VMRlARRyKbqMkQ==} peerDependencies: astro: ^3.0.0 tailwindcss: ^3.0.24 dependencies: - astro: 3.0.7 - autoprefixer: 10.4.15(postcss@8.4.29) - postcss: 8.4.29 - postcss-load-config: 4.0.1(postcss@8.4.29) + astro: 3.1.4 + autoprefixer: 10.4.16(postcss@8.4.30) + postcss: 8.4.30 + postcss-load-config: 4.0.1(postcss@8.4.30) tailwindcss: 3.3.3 transitivePeerDependencies: - ts-node dev: true - /@astrojs/telemetry@3.0.1: - resolution: {integrity: sha512-7zJMuikRDQ0LLLivteu0+y4pqdgznrChFiRrY3qmKlOEkLWD1T3u1a5M970lvpErP7Vgh4P298JBPjv8LTj+sw==} + /@astrojs/telemetry@3.0.2: + resolution: {integrity: sha512-ef+jqCkqopCzjGfsMsr+8p56Nj6F9ZzouWcWZt+dKsqbRccI3c8K3jfkLcdq4AyfFZtKBDB6N4ZuI68g33oiOg==} engines: {node: '>=18.14.1'} dependencies: ci-info: 3.8.0 @@ -489,8 +489,8 @@ packages: dlv: 1.1.3 dset: 3.1.2 is-docker: 3.0.0 - is-wsl: 3.0.0 - undici: 5.23.0 + is-wsl: 3.1.0 + undici: 5.25.2 which-pm-runs: 1.1.0 transitivePeerDependencies: - supports-color @@ -500,60 +500,30 @@ packages: resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/highlight': 7.22.13 + '@babel/highlight': 7.22.20 chalk: 2.4.2 dev: true - /@babel/code-frame@7.22.5: - resolution: {integrity: sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/highlight': 7.22.5 - dev: true - - /@babel/compat-data@7.22.9: - resolution: {integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==} + /@babel/compat-data@7.22.20: + resolution: {integrity: sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw==} engines: {node: '>=6.9.0'} dev: true - /@babel/core@7.22.11: - resolution: {integrity: sha512-lh7RJrtPdhibbxndr6/xx0w8+CVlY5FJZiaSz908Fpy+G0xkBFTvwLcKJFF4PJxVfGhVWNebikpWGnOoC71juQ==} + /@babel/core@7.23.0: + resolution: {integrity: sha512-97z/ju/Jy1rZmDxybphrBuI+jtJjFVoz7Mr9yUQVVVi+DNZE333uFQeMOqcCIy1x3WYBIbWftUSLmbNXNT7qFQ==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.1 '@babel/code-frame': 7.22.13 - '@babel/generator': 7.22.10 - '@babel/helper-compilation-targets': 7.22.10 - '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.11) - '@babel/helpers': 7.22.11 - '@babel/parser': 7.22.14 - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.11 - '@babel/types': 7.22.11 - convert-source-map: 1.9.0 - debug: 4.3.4 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/core@7.22.9: - resolution: {integrity: sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w==} - engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.22.5 - '@babel/generator': 7.22.9 - '@babel/helper-compilation-targets': 7.22.9(@babel/core@7.22.9) - '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.9) - '@babel/helpers': 7.22.6 - '@babel/parser': 7.22.7 - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.8 - '@babel/types': 7.22.5 - convert-source-map: 1.9.0 + '@babel/generator': 7.23.0 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.0) + '@babel/helpers': 7.23.1 + '@babel/parser': 7.23.0 + '@babel/template': 7.22.15 + '@babel/traverse': 7.23.0 + '@babel/types': 7.23.0 + convert-source-map: 2.0.0 debug: 4.3.4 gensync: 1.0.0-beta.2 json5: 2.2.3 @@ -562,23 +532,13 @@ packages: - supports-color dev: true - /@babel/generator@7.22.10: - resolution: {integrity: sha512-79KIf7YiWjjdZ81JnLujDRApWtl7BxTqWD88+FFdQEIOG8LJ0etDOM7CXuIgGJa55sGOwZVwuEsaLEm0PJ5/+A==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.11 - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.18 - jsesc: 2.5.2 - dev: true - - /@babel/generator@7.22.9: - resolution: {integrity: sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw==} + /@babel/generator@7.23.0: + resolution: {integrity: sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.23.0 '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.18 + '@jridgewell/trace-mapping': 0.3.19 jsesc: 2.5.2 dev: true @@ -586,178 +546,132 @@ packages: resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.5 - dev: true - - /@babel/helper-builder-binary-assignment-operator-visitor@7.22.5: - resolution: {integrity: sha512-m1EP3lVOPptR+2DwD125gziZNcmoNSHGmJROKoy87loWUQyJaVXDgpmruWqDARZSmtYQ+Dl25okU8+qhVzuykw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.23.0 dev: true - /@babel/helper-compilation-targets@7.22.10: - resolution: {integrity: sha512-JMSwHD4J7SLod0idLq5PKgI+6g/hLD/iuWBq08ZX49xE14VpVEojJ5rHWptpirV2j020MvypRLAXAO50igCJ5Q==} + /@babel/helper-builder-binary-assignment-operator-visitor@7.22.15: + resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/compat-data': 7.22.9 - '@babel/helper-validator-option': 7.22.5 - browserslist: 4.21.9 - lru-cache: 5.1.1 - semver: 6.3.1 + '@babel/types': 7.23.0 dev: true - /@babel/helper-compilation-targets@7.22.9(@babel/core@7.22.9): - resolution: {integrity: sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw==} + /@babel/helper-compilation-targets@7.22.15: + resolution: {integrity: sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==} engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 dependencies: - '@babel/compat-data': 7.22.9 - '@babel/core': 7.22.9 - '@babel/helper-validator-option': 7.22.5 - browserslist: 4.21.9 + '@babel/compat-data': 7.22.20 + '@babel/helper-validator-option': 7.22.15 + browserslist: 4.22.0 lru-cache: 5.1.1 semver: 6.3.1 dev: true - /@babel/helper-create-class-features-plugin@7.22.9(@babel/core@7.22.11): - resolution: {integrity: sha512-Pwyi89uO4YrGKxL/eNJ8lfEH55DnRloGPOseaA8NFNL6jAUnn+KccaISiFazCj5IolPPDjGSdzQzXVzODVRqUQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-function-name': 7.22.5 - '@babel/helper-member-expression-to-functions': 7.22.5 - '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.22.9(@babel/core@7.22.11) - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - semver: 6.3.1 - dev: true - - /@babel/helper-create-class-features-plugin@7.22.9(@babel/core@7.22.9): - resolution: {integrity: sha512-Pwyi89uO4YrGKxL/eNJ8lfEH55DnRloGPOseaA8NFNL6jAUnn+KccaISiFazCj5IolPPDjGSdzQzXVzODVRqUQ==} + /@babel/helper-create-class-features-plugin@7.22.15(@babel/core@7.23.0): + resolution: {integrity: sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.0 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-function-name': 7.22.5 - '@babel/helper-member-expression-to-functions': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-member-expression-to-functions': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.22.9(@babel/core@7.22.9) + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.0) '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 semver: 6.3.1 dev: true - /@babel/helper-create-regexp-features-plugin@7.22.9(@babel/core@7.22.9): - resolution: {integrity: sha512-+svjVa/tFwsNSG4NEy1h85+HQ5imbT92Q5/bgtS7P0GTQlP8WuFdqsiABmQouhiFGyV66oGxZFpeYHza1rNsKw==} + /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.23.0): + resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.0 '@babel/helper-annotate-as-pure': 7.22.5 regexpu-core: 5.3.2 semver: 6.3.1 dev: true - /@babel/helper-define-polyfill-provider@0.4.1(@babel/core@7.22.9): - resolution: {integrity: sha512-kX4oXixDxG197yhX+J3Wp+NpL2wuCFjWQAr6yX2jtCnflK9ulMI51ULFGIrWiX1jGfvAxdHp+XQCcP2bZGPs9A==} + /@babel/helper-define-polyfill-provider@0.4.2(@babel/core@7.23.0): + resolution: {integrity: sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==} peerDependencies: - '@babel/core': ^7.4.0-0 + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.22.9 - '@babel/helper-compilation-targets': 7.22.9(@babel/core@7.22.9) + '@babel/core': 7.23.0 + '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 debug: 4.3.4 lodash.debounce: 4.0.8 - resolve: 1.22.2 + resolve: 1.22.6 transitivePeerDependencies: - supports-color dev: true - /@babel/helper-environment-visitor@7.22.5: - resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} + /@babel/helper-environment-visitor@7.22.20: + resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-function-name@7.22.5: - resolution: {integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==} + /@babel/helper-function-name@7.23.0: + resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.22.5 - '@babel/types': 7.22.5 + '@babel/template': 7.22.15 + '@babel/types': 7.23.0 dev: true /@babel/helper-hoist-variables@7.22.5: resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.23.0 dev: true - /@babel/helper-member-expression-to-functions@7.22.5: - resolution: {integrity: sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ==} + /@babel/helper-member-expression-to-functions@7.23.0: + resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.23.0 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.22.5 - dev: true - - /@babel/helper-module-imports@7.22.5: - resolution: {integrity: sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.23.0 dev: true - /@babel/helper-module-transforms@7.22.9(@babel/core@7.22.11): - resolution: {integrity: sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==} + /@babel/helper-module-imports@7.22.15: + resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.11 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-module-imports': 7.22.5 - '@babel/helper-simple-access': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.5 + '@babel/types': 7.23.0 dev: true - /@babel/helper-module-transforms@7.22.9(@babel/core@7.22.9): - resolution: {integrity: sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==} + /@babel/helper-module-transforms@7.23.0(@babel/core@7.23.0): + resolution: {integrity: sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.9 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-module-imports': 7.22.5 + '@babel/core': 7.23.0 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.22.15 '@babel/helper-simple-access': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.5 + '@babel/helper-validator-identifier': 7.22.20 dev: true /@babel/helper-optimise-call-expression@7.22.5: resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.23.0 dev: true /@babel/helper-plugin-utils@7.22.5: @@ -765,39 +679,27 @@ packages: engines: {node: '>=6.9.0'} dev: true - /@babel/helper-remap-async-to-generator@7.22.9(@babel/core@7.22.9): - resolution: {integrity: sha512-8WWC4oR4Px+tr+Fp0X3RHDVfINGpF3ad1HIbrc8A77epiR6eMMc6jsgozkzT2uDiOOdoS9cLIQ+XD2XvI2WSmQ==} + /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.23.0): + resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.0 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-wrap-function': 7.22.9 - dev: true - - /@babel/helper-replace-supers@7.22.9(@babel/core@7.22.11): - resolution: {integrity: sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-member-expression-to-functions': 7.22.5 - '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-wrap-function': 7.22.20 dev: true - /@babel/helper-replace-supers@7.22.9(@babel/core@7.22.9): - resolution: {integrity: sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg==} + /@babel/helper-replace-supers@7.22.20(@babel/core@7.23.0): + resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.9 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-member-expression-to-functions': 7.22.5 + '@babel/core': 7.23.0 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-member-expression-to-functions': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 dev: true @@ -805,21 +707,21 @@ packages: resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.23.0 dev: true /@babel/helper-skip-transparent-expression-wrappers@7.22.5: resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.23.0 dev: true /@babel/helper-split-export-declaration@7.22.6: resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.23.0 dev: true /@babel/helper-string-parser@7.22.5: @@ -827,1148 +729,1020 @@ packages: engines: {node: '>=6.9.0'} dev: true - /@babel/helper-validator-identifier@7.22.5: - resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-validator-option@7.22.5: - resolution: {integrity: sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==} + /@babel/helper-validator-identifier@7.22.20: + resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-wrap-function@7.22.9: - resolution: {integrity: sha512-sZ+QzfauuUEfxSEjKFmi3qDSHgLsTPK/pEpoD/qonZKOtTPTLbf59oabPQ4rKekt9lFcj/hTZaOhWwFYrgjk+Q==} + /@babel/helper-validator-option@7.22.15: + resolution: {integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-function-name': 7.22.5 - '@babel/template': 7.22.5 - '@babel/types': 7.22.5 dev: true - /@babel/helpers@7.22.11: - resolution: {integrity: sha512-vyOXC8PBWaGc5h7GMsNx68OH33cypkEDJCHvYVVgVbbxJDROYVtexSk0gK5iCF1xNjRIN2s8ai7hwkWDq5szWg==} + /@babel/helper-wrap-function@7.22.20: + resolution: {integrity: sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.11 - '@babel/types': 7.22.11 - transitivePeerDependencies: - - supports-color + '@babel/helper-function-name': 7.23.0 + '@babel/template': 7.22.15 + '@babel/types': 7.23.0 dev: true - /@babel/helpers@7.22.6: - resolution: {integrity: sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==} + /@babel/helpers@7.23.1: + resolution: {integrity: sha512-chNpneuK18yW5Oxsr+t553UZzzAs3aZnFm4bxhebsNTeshrC95yA7l5yl7GBAG+JG1rF0F7zzD2EixK9mWSDoA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.8 - '@babel/types': 7.22.5 + '@babel/template': 7.22.15 + '@babel/traverse': 7.23.0 + '@babel/types': 7.23.0 transitivePeerDependencies: - supports-color dev: true - /@babel/highlight@7.22.13: - resolution: {integrity: sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.22.5 - chalk: 2.4.2 - js-tokens: 4.0.0 - dev: true - - /@babel/highlight@7.22.5: - resolution: {integrity: sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==} + /@babel/highlight@7.22.20: + resolution: {integrity: sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-validator-identifier': 7.22.5 + '@babel/helper-validator-identifier': 7.22.20 chalk: 2.4.2 js-tokens: 4.0.0 dev: true - /@babel/parser@7.22.14: - resolution: {integrity: sha512-1KucTHgOvaw/LzCVrEOAyXkr9rQlp0A1HiHRYnSUE9dmb8PvPW7o5sscg+5169r54n3vGlbx6GevTE/Iw/P3AQ==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.22.11 - dev: true - - /@babel/parser@7.22.7: - resolution: {integrity: sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==} + /@babel/parser@7.23.0: + resolution: {integrity: sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.23.0 dev: true - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.22.5(@babel/core@7.22.9): - resolution: {integrity: sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ==} + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.22.15(@babel/core@7.23.0): + resolution: {integrity: sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.22.5(@babel/core@7.22.9): - resolution: {integrity: sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g==} + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.22.15(@babel/core@7.23.0): + resolution: {integrity: sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-optional-chaining': 7.22.6(@babel/core@7.22.9) + '@babel/plugin-transform-optional-chaining': 7.23.0(@babel/core@7.23.0) dev: true - /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.22.9): + /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.0): resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 - dev: true - - /@babel/plugin-proposal-unicode-property-regex@7.18.6(@babel/core@7.22.9): - resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} - engines: {node: '>=4'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-unicode-property-regex instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.9 - '@babel/helper-create-regexp-features-plugin': 7.22.9(@babel/core@7.22.9) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.23.0 dev: true - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.22.9): + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.0): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.22.9): + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.0): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.22.9): + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.23.0): resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.22.9): + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.23.0): resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.22.9): + /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.23.0): resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-import-assertions@7.22.5(@babel/core@7.22.9): + /@babel/plugin-syntax-import-assertions@7.22.5(@babel/core@7.23.0): resolution: {integrity: sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-import-attributes@7.22.5(@babel/core@7.22.9): + /@babel/plugin-syntax-import-attributes@7.22.5(@babel/core@7.23.0): resolution: {integrity: sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.22.9): + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.0): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.22.9): + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.0): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.22.11): - resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 + '@babel/core': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.22.9): + /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.23.0): resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.22.9): + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.0): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.22.9): + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.0): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.22.9): + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.0): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.22.9): + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.0): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.22.9): + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.0): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.22.9): + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.0): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.22.9): + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.23.0): resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.22.9): + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.0): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.22.11): - resolution: {integrity: sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 + '@babel/core': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.22.9): + /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.23.0): resolution: {integrity: sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.22.9): + /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.23.0): resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.9 - '@babel/helper-create-regexp-features-plugin': 7.22.9(@babel/core@7.22.9) + '@babel/core': 7.23.0 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.0) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-arrow-functions@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-arrow-functions@7.22.5(@babel/core@7.23.0): resolution: {integrity: sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-async-generator-functions@7.22.7(@babel/core@7.22.9): - resolution: {integrity: sha512-7HmE7pk/Fmke45TODvxvkxRMV9RazV+ZZzhOL9AG8G29TLrr3jkjwF7uJfxZ30EoXpO+LJkq4oA8NjO2DTnEDg==} + /@babel/plugin-transform-async-generator-functions@7.22.15(@babel/core@7.23.0): + resolution: {integrity: sha512-jBm1Es25Y+tVoTi5rfd5t1KLmL8ogLKpXszboWOTTtGFGz2RKnQe2yn7HbZ+kb/B8N0FVSGQo874NSlOU1T4+w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 - '@babel/helper-environment-visitor': 7.22.5 + '@babel/core': 7.23.0 + '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.9(@babel/core@7.22.9) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.9) + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.0) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.0) dev: true - /@babel/plugin-transform-async-to-generator@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-async-to-generator@7.22.5(@babel/core@7.23.0): resolution: {integrity: sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 - '@babel/helper-module-imports': 7.22.5 + '@babel/core': 7.23.0 + '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.9(@babel/core@7.22.9) + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.0) dev: true - /@babel/plugin-transform-block-scoped-functions@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-block-scoped-functions@7.22.5(@babel/core@7.23.0): resolution: {integrity: sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-block-scoping@7.22.5(@babel/core@7.22.9): - resolution: {integrity: sha512-EcACl1i5fSQ6bt+YGuU/XGCeZKStLmyVGytWkpyhCLeQVA0eu6Wtiw92V+I1T/hnezUv7j74dA/Ro69gWcU+hg==} + /@babel/plugin-transform-block-scoping@7.23.0(@babel/core@7.23.0): + resolution: {integrity: sha512-cOsrbmIOXmf+5YbL99/S49Y3j46k/T16b9ml8bm9lP6N9US5iQ2yBK7gpui1pg0V/WMcXdkfKbTb7HXq9u+v4g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-class-properties@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-class-properties@7.22.5(@babel/core@7.23.0): resolution: {integrity: sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 - '@babel/helper-create-class-features-plugin': 7.22.9(@babel/core@7.22.9) + '@babel/core': 7.23.0 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.0) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-class-static-block@7.22.5(@babel/core@7.22.9): - resolution: {integrity: sha512-SPToJ5eYZLxlnp1UzdARpOGeC2GbHvr9d/UV0EukuVx8atktg194oe+C5BqQ8jRTkgLRVOPYeXRSBg1IlMoVRA==} + /@babel/plugin-transform-class-static-block@7.22.11(@babel/core@7.23.0): + resolution: {integrity: sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 dependencies: - '@babel/core': 7.22.9 - '@babel/helper-create-class-features-plugin': 7.22.9(@babel/core@7.22.9) + '@babel/core': 7.23.0 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.0) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.22.9) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.0) dev: true - /@babel/plugin-transform-classes@7.22.6(@babel/core@7.22.9): - resolution: {integrity: sha512-58EgM6nuPNG6Py4Z3zSuu0xWu2VfodiMi72Jt5Kj2FECmaYk1RrTXA45z6KBFsu9tRgwQDwIiY4FXTt+YsSFAQ==} + /@babel/plugin-transform-classes@7.22.15(@babel/core@7.23.0): + resolution: {integrity: sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.0 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-compilation-targets': 7.22.9(@babel/core@7.22.9) - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-function-name': 7.22.5 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.9(@babel/core@7.22.9) + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.0) '@babel/helper-split-export-declaration': 7.22.6 globals: 11.12.0 dev: true - /@babel/plugin-transform-computed-properties@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-computed-properties@7.22.5(@babel/core@7.23.0): resolution: {integrity: sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 - '@babel/template': 7.22.5 + '@babel/template': 7.22.15 dev: true - /@babel/plugin-transform-destructuring@7.22.5(@babel/core@7.22.9): - resolution: {integrity: sha512-GfqcFuGW8vnEqTUBM7UtPd5A4q797LTvvwKxXTgRsFjoqaJiEg9deBG6kWeQYkVEL569NpnmpC0Pkr/8BLKGnQ==} + /@babel/plugin-transform-destructuring@7.23.0(@babel/core@7.23.0): + resolution: {integrity: sha512-vaMdgNXFkYrB+8lbgniSYWHsgqK5gjaMNcc84bMIOMRLH0L9AqYq3hwMdvnyqj1OPqea8UtjPEuS/DCenah1wg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-dotall-regex@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-dotall-regex@7.22.5(@babel/core@7.23.0): resolution: {integrity: sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 - '@babel/helper-create-regexp-features-plugin': 7.22.9(@babel/core@7.22.9) + '@babel/core': 7.23.0 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.0) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-duplicate-keys@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-duplicate-keys@7.22.5(@babel/core@7.23.0): resolution: {integrity: sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-dynamic-import@7.22.5(@babel/core@7.22.9): - resolution: {integrity: sha512-0MC3ppTB1AMxd8fXjSrbPa7LT9hrImt+/fcj+Pg5YMD7UQyWp/02+JWpdnCymmsXwIx5Z+sYn1bwCn4ZJNvhqQ==} + /@babel/plugin-transform-dynamic-import@7.22.11(@babel/core@7.23.0): + resolution: {integrity: sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.9) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.0) dev: true - /@babel/plugin-transform-exponentiation-operator@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-exponentiation-operator@7.22.5(@babel/core@7.23.0): resolution: {integrity: sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.5 + '@babel/core': 7.23.0 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-export-namespace-from@7.22.5(@babel/core@7.22.9): - resolution: {integrity: sha512-X4hhm7FRnPgd4nDA4b/5V280xCx6oL7Oob5+9qVS5C13Zq4bh1qq7LU0GgRU6b5dBWBvhGaXYVB4AcN6+ol6vg==} + /@babel/plugin-transform-export-namespace-from@7.22.11(@babel/core@7.23.0): + resolution: {integrity: sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.9) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.0) dev: true - /@babel/plugin-transform-for-of@7.22.5(@babel/core@7.22.9): - resolution: {integrity: sha512-3kxQjX1dU9uudwSshyLeEipvrLjBCVthCgeTp6CzE/9JYrlAIaeekVxRpCWsDDfYTfRZRoCeZatCQvwo+wvK8A==} + /@babel/plugin-transform-for-of@7.22.15(@babel/core@7.23.0): + resolution: {integrity: sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-function-name@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-function-name@7.22.5(@babel/core@7.23.0): resolution: {integrity: sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 - '@babel/helper-compilation-targets': 7.22.9(@babel/core@7.22.9) - '@babel/helper-function-name': 7.22.5 + '@babel/core': 7.23.0 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-function-name': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-json-strings@7.22.5(@babel/core@7.22.9): - resolution: {integrity: sha512-DuCRB7fu8MyTLbEQd1ew3R85nx/88yMoqo2uPSjevMj3yoN7CDM8jkgrY0wmVxfJZyJ/B9fE1iq7EQppWQmR5A==} + /@babel/plugin-transform-json-strings@7.22.11(@babel/core@7.23.0): + resolution: {integrity: sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.9) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.0) dev: true - /@babel/plugin-transform-literals@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-literals@7.22.5(@babel/core@7.23.0): resolution: {integrity: sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-logical-assignment-operators@7.22.5(@babel/core@7.22.9): - resolution: {integrity: sha512-MQQOUW1KL8X0cDWfbwYP+TbVbZm16QmQXJQ+vndPtH/BoO0lOKpVoEDMI7+PskYxH+IiE0tS8xZye0qr1lGzSA==} + /@babel/plugin-transform-logical-assignment-operators@7.22.11(@babel/core@7.23.0): + resolution: {integrity: sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.9) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.0) dev: true - /@babel/plugin-transform-member-expression-literals@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-member-expression-literals@7.22.5(@babel/core@7.23.0): resolution: {integrity: sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-transform-modules-amd@7.22.5(@babel/core@7.22.9): - resolution: {integrity: sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.9 - '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.9) + '@babel/core': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-modules-commonjs@7.22.5(@babel/core@7.22.11): - resolution: {integrity: sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA==} + /@babel/plugin-transform-modules-amd@7.23.0(@babel/core@7.23.0): + resolution: {integrity: sha512-xWT5gefv2HGSm4QHtgc1sYPbseOyf+FFDo2JbpE25GWl5BqTGO9IMwTYJRoIdjsF85GE+VegHxSCUt5EvoYTAw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.11 - '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.11) + '@babel/core': 7.23.0 + '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.0) '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-simple-access': 7.22.5 dev: true - /@babel/plugin-transform-modules-commonjs@7.22.5(@babel/core@7.22.9): - resolution: {integrity: sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA==} + /@babel/plugin-transform-modules-commonjs@7.23.0(@babel/core@7.23.0): + resolution: {integrity: sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 - '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.9) + '@babel/core': 7.23.0 + '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.0) '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-simple-access': 7.22.5 dev: true - /@babel/plugin-transform-modules-systemjs@7.22.5(@babel/core@7.22.9): - resolution: {integrity: sha512-emtEpoaTMsOs6Tzz+nbmcePl6AKVtS1yC4YNAeMun9U8YCsgadPNxnOPQ8GhHFB2qdx+LZu9LgoC0Lthuu05DQ==} + /@babel/plugin-transform-modules-systemjs@7.23.0(@babel/core@7.23.0): + resolution: {integrity: sha512-qBej6ctXZD2f+DhlOC9yO47yEYgUh5CZNz/aBoH4j/3NOlRfJXJbY7xDQCqQVf9KbrqGzIWER1f23doHGrIHFg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.0 '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.9) + '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.0) '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-validator-identifier': 7.22.5 + '@babel/helper-validator-identifier': 7.22.20 dev: true - /@babel/plugin-transform-modules-umd@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-modules-umd@7.22.5(@babel/core@7.23.0): resolution: {integrity: sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 - '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.9) + '@babel/core': 7.23.0 + '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.0) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.23.0): resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.9 - '@babel/helper-create-regexp-features-plugin': 7.22.9(@babel/core@7.22.9) + '@babel/core': 7.23.0 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.0) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-new-target@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-new-target@7.22.5(@babel/core@7.23.0): resolution: {integrity: sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-nullish-coalescing-operator@7.22.5(@babel/core@7.22.9): - resolution: {integrity: sha512-6CF8g6z1dNYZ/VXok5uYkkBBICHZPiGEl7oDnAx2Mt1hlHVHOSIKWJaXHjQJA5VB43KZnXZDIexMchY4y2PGdA==} + /@babel/plugin-transform-nullish-coalescing-operator@7.22.11(@babel/core@7.23.0): + resolution: {integrity: sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.9) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.0) dev: true - /@babel/plugin-transform-numeric-separator@7.22.5(@babel/core@7.22.9): - resolution: {integrity: sha512-NbslED1/6M+sXiwwtcAB/nieypGw02Ejf4KtDeMkCEpP6gWFMX1wI9WKYua+4oBneCCEmulOkRpwywypVZzs/g==} + /@babel/plugin-transform-numeric-separator@7.22.11(@babel/core@7.23.0): + resolution: {integrity: sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.9) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.0) dev: true - /@babel/plugin-transform-object-rest-spread@7.22.5(@babel/core@7.22.9): - resolution: {integrity: sha512-Kk3lyDmEslH9DnvCDA1s1kkd3YWQITiBOHngOtDL9Pt6BZjzqb6hiOlb8VfjiiQJ2unmegBqZu0rx5RxJb5vmQ==} + /@babel/plugin-transform-object-rest-spread@7.22.15(@babel/core@7.23.0): + resolution: {integrity: sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.22.9 - '@babel/core': 7.22.9 - '@babel/helper-compilation-targets': 7.22.9(@babel/core@7.22.9) + '@babel/compat-data': 7.22.20 + '@babel/core': 7.23.0 + '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.9) - '@babel/plugin-transform-parameters': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.0) + '@babel/plugin-transform-parameters': 7.22.15(@babel/core@7.23.0) dev: true - /@babel/plugin-transform-object-super@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-object-super@7.22.5(@babel/core@7.23.0): resolution: {integrity: sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.9(@babel/core@7.22.9) + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.0) dev: true - /@babel/plugin-transform-optional-catch-binding@7.22.5(@babel/core@7.22.9): - resolution: {integrity: sha512-pH8orJahy+hzZje5b8e2QIlBWQvGpelS76C63Z+jhZKsmzfNaPQ+LaW6dcJ9bxTpo1mtXbgHwy765Ro3jftmUg==} + /@babel/plugin-transform-optional-catch-binding@7.22.11(@babel/core@7.23.0): + resolution: {integrity: sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.9) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.0) dev: true - /@babel/plugin-transform-optional-chaining@7.22.6(@babel/core@7.22.9): - resolution: {integrity: sha512-Vd5HiWml0mDVtcLHIoEU5sw6HOUW/Zk0acLs/SAeuLzkGNOPc9DB4nkUajemhCmTIz3eiaKREZn2hQQqF79YTg==} + /@babel/plugin-transform-optional-chaining@7.23.0(@babel/core@7.23.0): + resolution: {integrity: sha512-sBBGXbLJjxTzLBF5rFWaikMnOGOk/BmK6vVByIdEggZ7Vn6CvWXZyRkkLFK6WE0IF8jSliyOkUN6SScFgzCM0g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.9) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.0) dev: true - /@babel/plugin-transform-parameters@7.22.5(@babel/core@7.22.9): - resolution: {integrity: sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg==} + /@babel/plugin-transform-parameters@7.22.15(@babel/core@7.23.0): + resolution: {integrity: sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-private-methods@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-private-methods@7.22.5(@babel/core@7.23.0): resolution: {integrity: sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 - '@babel/helper-create-class-features-plugin': 7.22.9(@babel/core@7.22.9) + '@babel/core': 7.23.0 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.0) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-private-property-in-object@7.22.5(@babel/core@7.22.9): - resolution: {integrity: sha512-/9xnaTTJcVoBtSSmrVyhtSvO3kbqS2ODoh2juEU72c3aYonNF0OMGiaz2gjukyKM2wBBYJP38S4JiE0Wfb5VMQ==} + /@babel/plugin-transform-private-property-in-object@7.22.11(@babel/core@7.23.0): + resolution: {integrity: sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.0 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.9(@babel/core@7.22.9) + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.0) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.9) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.0) dev: true - /@babel/plugin-transform-property-literals@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-property-literals@7.22.5(@babel/core@7.23.0): resolution: {integrity: sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-react-jsx-self@7.22.5(@babel/core@7.22.11): + /@babel/plugin-transform-react-jsx-self@7.22.5(@babel/core@7.23.0): resolution: {integrity: sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.11 + '@babel/core': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-react-jsx-source@7.22.5(@babel/core@7.22.11): + /@babel/plugin-transform-react-jsx-source@7.22.5(@babel/core@7.23.0): resolution: {integrity: sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.11 + '@babel/core': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-react-jsx@7.22.5(@babel/core@7.22.11): - resolution: {integrity: sha512-rog5gZaVbUip5iWDMTYbVM15XQq+RkUKhET/IHR6oizR+JEoN6CAfTTuHcK4vwUyzca30qqHqEpzBOnaRMWYMA==} + /@babel/plugin-transform-react-jsx@7.22.15(@babel/core@7.23.0): + resolution: {integrity: sha512-oKckg2eZFa8771O/5vi7XeTvmM6+O9cxZu+kanTU7tD4sin5nO/G8jGJhq8Hvt2Z0kUoEDRayuZLaUlYl8QuGA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.11 + '@babel/core': 7.23.0 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-module-imports': 7.22.5 + '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.11) - '@babel/types': 7.22.11 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.23.0) + '@babel/types': 7.23.0 dev: true - /@babel/plugin-transform-regenerator@7.22.5(@babel/core@7.22.9): - resolution: {integrity: sha512-rR7KePOE7gfEtNTh9Qw+iO3Q/e4DEsoQ+hdvM6QUDH7JRJ5qxq5AA52ZzBWbI5i9lfNuvySgOGP8ZN7LAmaiPw==} + /@babel/plugin-transform-regenerator@7.22.10(@babel/core@7.23.0): + resolution: {integrity: sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 - regenerator-transform: 0.15.1 + regenerator-transform: 0.15.2 dev: true - /@babel/plugin-transform-reserved-words@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-reserved-words@7.22.5(@babel/core@7.23.0): resolution: {integrity: sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-shorthand-properties@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-shorthand-properties@7.22.5(@babel/core@7.23.0): resolution: {integrity: sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-spread@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-spread@7.22.5(@babel/core@7.23.0): resolution: {integrity: sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 dev: true - /@babel/plugin-transform-sticky-regex@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-sticky-regex@7.22.5(@babel/core@7.23.0): resolution: {integrity: sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-template-literals@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-template-literals@7.22.5(@babel/core@7.23.0): resolution: {integrity: sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-typeof-symbol@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-typeof-symbol@7.22.5(@babel/core@7.23.0): resolution: {integrity: sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-transform-typescript@7.22.9(@babel/core@7.22.11): - resolution: {integrity: sha512-BnVR1CpKiuD0iobHPaM1iLvcwPYN2uVFAqoLVSpEDKWuOikoCv5HbKLxclhKYUXlWkX86DoZGtqI4XhbOsyrMg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.9(@babel/core@7.22.11) + '@babel/core': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.22.11) dev: true - /@babel/plugin-transform-typescript@7.22.9(@babel/core@7.22.9): - resolution: {integrity: sha512-BnVR1CpKiuD0iobHPaM1iLvcwPYN2uVFAqoLVSpEDKWuOikoCv5HbKLxclhKYUXlWkX86DoZGtqI4XhbOsyrMg==} + /@babel/plugin-transform-typescript@7.22.15(@babel/core@7.23.0): + resolution: {integrity: sha512-1uirS0TnijxvQLnlv5wQBwOX3E1wCFX7ITv+9pBV2wKEk4K+M5tqDaoNXnTH8tjEIYHLO98MwiTWO04Ggz4XuA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.0 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.9(@babel/core@7.22.9) + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.0) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.23.0) dev: true - /@babel/plugin-transform-unicode-escapes@7.22.5(@babel/core@7.22.9): - resolution: {integrity: sha512-biEmVg1IYB/raUO5wT1tgfacCef15Fbzhkx493D3urBI++6hpJ+RFG4SrWMn0NEZLfvilqKf3QDrRVZHo08FYg==} + /@babel/plugin-transform-unicode-escapes@7.22.10(@babel/core@7.23.0): + resolution: {integrity: sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-unicode-property-regex@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-unicode-property-regex@7.22.5(@babel/core@7.23.0): resolution: {integrity: sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 - '@babel/helper-create-regexp-features-plugin': 7.22.9(@babel/core@7.22.9) + '@babel/core': 7.23.0 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.0) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-unicode-regex@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-unicode-regex@7.22.5(@babel/core@7.23.0): resolution: {integrity: sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 - '@babel/helper-create-regexp-features-plugin': 7.22.9(@babel/core@7.22.9) + '@babel/core': 7.23.0 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.0) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-unicode-sets-regex@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-unicode-sets-regex@7.22.5(@babel/core@7.23.0): resolution: {integrity: sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.9 - '@babel/helper-create-regexp-features-plugin': 7.22.9(@babel/core@7.22.9) + '@babel/core': 7.23.0 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.0) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/preset-env@7.22.9(@babel/core@7.22.9): - resolution: {integrity: sha512-wNi5H/Emkhll/bqPjsjQorSykrlfY5OWakd6AulLvMEytpKasMVUpVy8RL4qBIBs5Ac6/5i0/Rv0b/Fg6Eag/g==} + /@babel/preset-env@7.22.20(@babel/core@7.23.0): + resolution: {integrity: sha512-11MY04gGC4kSzlPHRfvVkNAZhUxOvm7DCJ37hPDnUENwe06npjIRAfInEMTGSb4LZK5ZgDFkv5hw0lGebHeTyg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.22.9 - '@babel/core': 7.22.9 - '@babel/helper-compilation-targets': 7.22.9(@babel/core@7.22.9) + '@babel/compat-data': 7.22.20 + '@babel/core': 7.23.0 + '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-validator-option': 7.22.5 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.22.9) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.9) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.9) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.22.9) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.9) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.9) - '@babel/plugin-syntax-import-assertions': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-syntax-import-attributes': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.9) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.9) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.9) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.9) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.9) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.9) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.9) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.9) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.9) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.9) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.22.9) - '@babel/plugin-transform-arrow-functions': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-async-generator-functions': 7.22.7(@babel/core@7.22.9) - '@babel/plugin-transform-async-to-generator': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-block-scoped-functions': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-block-scoping': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-class-properties': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-class-static-block': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-classes': 7.22.6(@babel/core@7.22.9) - '@babel/plugin-transform-computed-properties': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-destructuring': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-dotall-regex': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-duplicate-keys': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-dynamic-import': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-exponentiation-operator': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-export-namespace-from': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-for-of': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-function-name': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-json-strings': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-literals': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-logical-assignment-operators': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-member-expression-literals': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-modules-amd': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-modules-commonjs': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-modules-systemjs': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-modules-umd': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-new-target': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-nullish-coalescing-operator': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-numeric-separator': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-object-rest-spread': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-object-super': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-optional-catch-binding': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-optional-chaining': 7.22.6(@babel/core@7.22.9) - '@babel/plugin-transform-parameters': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-private-methods': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-private-property-in-object': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-property-literals': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-regenerator': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-reserved-words': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-shorthand-properties': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-spread': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-sticky-regex': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-template-literals': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-typeof-symbol': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-unicode-escapes': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-unicode-property-regex': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-unicode-regex': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-unicode-sets-regex': 7.22.5(@babel/core@7.22.9) - '@babel/preset-modules': 0.1.5(@babel/core@7.22.9) - '@babel/types': 7.22.5 - babel-plugin-polyfill-corejs2: 0.4.4(@babel/core@7.22.9) - babel-plugin-polyfill-corejs3: 0.8.2(@babel/core@7.22.9) - babel-plugin-polyfill-regenerator: 0.5.1(@babel/core@7.22.9) - core-js-compat: 3.31.1 + '@babel/helper-validator-option': 7.22.15 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.22.15(@babel/core@7.23.0) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.22.15(@babel/core@7.23.0) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.0) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.0) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.0) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.0) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.0) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.0) + '@babel/plugin-syntax-import-assertions': 7.22.5(@babel/core@7.23.0) + '@babel/plugin-syntax-import-attributes': 7.22.5(@babel/core@7.23.0) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.0) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.0) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.0) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.0) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.0) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.0) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.0) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.0) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.0) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.0) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.23.0) + '@babel/plugin-transform-arrow-functions': 7.22.5(@babel/core@7.23.0) + '@babel/plugin-transform-async-generator-functions': 7.22.15(@babel/core@7.23.0) + '@babel/plugin-transform-async-to-generator': 7.22.5(@babel/core@7.23.0) + '@babel/plugin-transform-block-scoped-functions': 7.22.5(@babel/core@7.23.0) + '@babel/plugin-transform-block-scoping': 7.23.0(@babel/core@7.23.0) + '@babel/plugin-transform-class-properties': 7.22.5(@babel/core@7.23.0) + '@babel/plugin-transform-class-static-block': 7.22.11(@babel/core@7.23.0) + '@babel/plugin-transform-classes': 7.22.15(@babel/core@7.23.0) + '@babel/plugin-transform-computed-properties': 7.22.5(@babel/core@7.23.0) + '@babel/plugin-transform-destructuring': 7.23.0(@babel/core@7.23.0) + '@babel/plugin-transform-dotall-regex': 7.22.5(@babel/core@7.23.0) + '@babel/plugin-transform-duplicate-keys': 7.22.5(@babel/core@7.23.0) + '@babel/plugin-transform-dynamic-import': 7.22.11(@babel/core@7.23.0) + '@babel/plugin-transform-exponentiation-operator': 7.22.5(@babel/core@7.23.0) + '@babel/plugin-transform-export-namespace-from': 7.22.11(@babel/core@7.23.0) + '@babel/plugin-transform-for-of': 7.22.15(@babel/core@7.23.0) + '@babel/plugin-transform-function-name': 7.22.5(@babel/core@7.23.0) + '@babel/plugin-transform-json-strings': 7.22.11(@babel/core@7.23.0) + '@babel/plugin-transform-literals': 7.22.5(@babel/core@7.23.0) + '@babel/plugin-transform-logical-assignment-operators': 7.22.11(@babel/core@7.23.0) + '@babel/plugin-transform-member-expression-literals': 7.22.5(@babel/core@7.23.0) + '@babel/plugin-transform-modules-amd': 7.23.0(@babel/core@7.23.0) + '@babel/plugin-transform-modules-commonjs': 7.23.0(@babel/core@7.23.0) + '@babel/plugin-transform-modules-systemjs': 7.23.0(@babel/core@7.23.0) + '@babel/plugin-transform-modules-umd': 7.22.5(@babel/core@7.23.0) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.23.0) + '@babel/plugin-transform-new-target': 7.22.5(@babel/core@7.23.0) + '@babel/plugin-transform-nullish-coalescing-operator': 7.22.11(@babel/core@7.23.0) + '@babel/plugin-transform-numeric-separator': 7.22.11(@babel/core@7.23.0) + '@babel/plugin-transform-object-rest-spread': 7.22.15(@babel/core@7.23.0) + '@babel/plugin-transform-object-super': 7.22.5(@babel/core@7.23.0) + '@babel/plugin-transform-optional-catch-binding': 7.22.11(@babel/core@7.23.0) + '@babel/plugin-transform-optional-chaining': 7.23.0(@babel/core@7.23.0) + '@babel/plugin-transform-parameters': 7.22.15(@babel/core@7.23.0) + '@babel/plugin-transform-private-methods': 7.22.5(@babel/core@7.23.0) + '@babel/plugin-transform-private-property-in-object': 7.22.11(@babel/core@7.23.0) + '@babel/plugin-transform-property-literals': 7.22.5(@babel/core@7.23.0) + '@babel/plugin-transform-regenerator': 7.22.10(@babel/core@7.23.0) + '@babel/plugin-transform-reserved-words': 7.22.5(@babel/core@7.23.0) + '@babel/plugin-transform-shorthand-properties': 7.22.5(@babel/core@7.23.0) + '@babel/plugin-transform-spread': 7.22.5(@babel/core@7.23.0) + '@babel/plugin-transform-sticky-regex': 7.22.5(@babel/core@7.23.0) + '@babel/plugin-transform-template-literals': 7.22.5(@babel/core@7.23.0) + '@babel/plugin-transform-typeof-symbol': 7.22.5(@babel/core@7.23.0) + '@babel/plugin-transform-unicode-escapes': 7.22.10(@babel/core@7.23.0) + '@babel/plugin-transform-unicode-property-regex': 7.22.5(@babel/core@7.23.0) + '@babel/plugin-transform-unicode-regex': 7.22.5(@babel/core@7.23.0) + '@babel/plugin-transform-unicode-sets-regex': 7.22.5(@babel/core@7.23.0) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.23.0) + '@babel/types': 7.23.0 + babel-plugin-polyfill-corejs2: 0.4.5(@babel/core@7.23.0) + babel-plugin-polyfill-corejs3: 0.8.4(@babel/core@7.23.0) + babel-plugin-polyfill-regenerator: 0.5.2(@babel/core@7.23.0) + core-js-compat: 3.32.2 semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true - /@babel/preset-modules@0.1.5(@babel/core@7.22.9): - resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} + /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.23.0): + resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.22.9) - '@babel/plugin-transform-dotall-regex': 7.22.5(@babel/core@7.22.9) - '@babel/types': 7.22.5 + '@babel/types': 7.23.0 esutils: 2.0.3 dev: true - /@babel/preset-typescript@7.22.5(@babel/core@7.22.11): - resolution: {integrity: sha512-YbPaal9LxztSGhmndR46FmAbkJ/1fAsw293tSU+I5E5h+cnJ3d4GTwyUgGYmOXJYdGA+uNePle4qbaRzj2NISQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-validator-option': 7.22.5 - '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.11) - '@babel/plugin-transform-modules-commonjs': 7.22.5(@babel/core@7.22.11) - '@babel/plugin-transform-typescript': 7.22.9(@babel/core@7.22.11) - dev: true - - /@babel/preset-typescript@7.22.5(@babel/core@7.22.9): - resolution: {integrity: sha512-YbPaal9LxztSGhmndR46FmAbkJ/1fAsw293tSU+I5E5h+cnJ3d4GTwyUgGYmOXJYdGA+uNePle4qbaRzj2NISQ==} + /@babel/preset-typescript@7.23.0(@babel/core@7.23.0): + resolution: {integrity: sha512-6P6VVa/NM/VlAYj5s2Aq/gdVg8FSENCg3wlZ6Qau9AcPaoF5LbN1nyGlR9DTRIw9PpxI94e+ReydsJHcjwAweg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-validator-option': 7.22.5 - '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-modules-commonjs': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-typescript': 7.22.9(@babel/core@7.22.9) + '@babel/helper-validator-option': 7.22.15 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.23.0) + '@babel/plugin-transform-modules-commonjs': 7.23.0(@babel/core@7.23.0) + '@babel/plugin-transform-typescript': 7.22.15(@babel/core@7.23.0) dev: true /@babel/regjsgen@0.8.0: resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} dev: true - /@babel/runtime@7.22.6: - resolution: {integrity: sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ==} - engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.13.11 - - /@babel/template@7.22.5: - resolution: {integrity: sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==} + /@babel/runtime@7.23.1: + resolution: {integrity: sha512-hC2v6p8ZSI/W0HUzh3V8C5g+NwSKzKPtJwSpTjwl0o297GP9+ZLQSkdvHz46CM3LqyoXxq+5G9komY+eSqSO0g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.22.5 - '@babel/parser': 7.22.7 - '@babel/types': 7.22.5 - dev: true + regenerator-runtime: 0.14.0 - /@babel/traverse@7.22.11: - resolution: {integrity: sha512-mzAenteTfomcB7mfPtyi+4oe5BZ6MXxWcn4CX+h4IRJ+OOGXBrWU6jDQavkQI9Vuc5P+donFabBfFCcmWka9lQ==} + /@babel/template@7.22.15: + resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.22.13 - '@babel/generator': 7.22.10 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-function-name': 7.22.5 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.22.14 - '@babel/types': 7.22.11 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color + '@babel/parser': 7.23.0 + '@babel/types': 7.23.0 dev: true - /@babel/traverse@7.22.8: - resolution: {integrity: sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw==} + /@babel/traverse@7.23.0: + resolution: {integrity: sha512-t/QaEvyIoIkwzpiZ7aoSKK8kObQYeF7T2v+dazAYCb8SXtp58zEVkWW7zAnju8FNKNdr4ScAOEDmMItbyOmEYw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.22.5 - '@babel/generator': 7.22.9 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-function-name': 7.22.5 + '@babel/code-frame': 7.22.13 + '@babel/generator': 7.23.0 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 '@babel/helper-hoist-variables': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.22.7 - '@babel/types': 7.22.5 + '@babel/parser': 7.23.0 + '@babel/types': 7.23.0 debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color dev: true - /@babel/types@7.22.11: - resolution: {integrity: sha512-siazHiGuZRz9aB9NpHy9GOs9xiQPKnMzgdr493iI1M67vRXpnEq8ZOOKzezC5q7zwuQ6sDhdSp4SD9ixKSqKZg==} + /@babel/types@7.23.0: + resolution: {integrity: sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-string-parser': 7.22.5 - '@babel/helper-validator-identifier': 7.22.5 + '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 dev: true - /@babel/types@7.22.5: - resolution: {integrity: sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.22.5 - '@babel/helper-validator-identifier': 7.22.5 - to-fast-properties: 2.0.0 - dev: true - - /@braintree/sanitize-url@6.0.2: - resolution: {integrity: sha512-Tbsj02wXCbqGmzdnXNk0SOF19ChhRU70BsroIi4Pm6Ehp56in6vch94mfbdQ17DozxkL3BAVjbZ4Qc1a0HFRAg==} + /@braintree/sanitize-url@6.0.4: + resolution: {integrity: sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A==} dev: false - /@esbuild/android-arm64@0.18.13: - resolution: {integrity: sha512-j7NhycJUoUAG5kAzGf4fPWfd17N6SM3o1X6MlXVqfHvs2buFraCJzos9vbeWjLxOyBKHyPOnuCuipbhvbYtTAg==} + /@esbuild/android-arm64@0.18.20: + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -1976,8 +1750,8 @@ packages: dev: true optional: true - /@esbuild/android-arm64@0.19.2: - resolution: {integrity: sha512-lsB65vAbe90I/Qe10OjkmrdxSX4UJDjosDgb8sZUKcg3oefEuW2OT2Vozz8ef7wrJbMcmhvCC+hciF8jY/uAkw==} + /@esbuild/android-arm64@0.19.4: + resolution: {integrity: sha512-mRsi2vJsk4Bx/AFsNBqOH2fqedxn5L/moT58xgg51DjX1la64Z3Npicut2VbhvDFO26qjWtPMsVxCd80YTFVeg==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -1994,8 +1768,8 @@ packages: dev: true optional: true - /@esbuild/android-arm@0.18.13: - resolution: {integrity: sha512-KwqFhxRFMKZINHzCqf8eKxE0XqWlAVPRxwy6rc7CbVFxzUWB2sA/s3hbMZeemPdhN3fKBkqOaFhTbS8xJXYIWQ==} + /@esbuild/android-arm@0.18.20: + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -2003,8 +1777,8 @@ packages: dev: true optional: true - /@esbuild/android-arm@0.19.2: - resolution: {integrity: sha512-tM8yLeYVe7pRyAu9VMi/Q7aunpLwD139EY1S99xbQkT4/q2qa6eA4ige/WJQYdJ8GBL1K33pPFhPfPdJ/WzT8Q==} + /@esbuild/android-arm@0.19.4: + resolution: {integrity: sha512-uBIbiYMeSsy2U0XQoOGVVcpIktjLMEKa7ryz2RLr7L/vTnANNEsPVAh4xOv7ondGz6ac1zVb0F8Jx20rQikffQ==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -2012,8 +1786,8 @@ packages: dev: true optional: true - /@esbuild/android-x64@0.18.13: - resolution: {integrity: sha512-M2eZkRxR6WnWfVELHmv6MUoHbOqnzoTVSIxgtsyhm/NsgmL+uTmag/VVzdXvmahak1I6sOb1K/2movco5ikDJg==} + /@esbuild/android-x64@0.18.20: + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -2021,8 +1795,8 @@ packages: dev: true optional: true - /@esbuild/android-x64@0.19.2: - resolution: {integrity: sha512-qK/TpmHt2M/Hg82WXHRc/W/2SGo/l1thtDHZWqFq7oi24AjZ4O/CpPSu6ZuYKFkEgmZlFoa7CooAyYmuvnaG8w==} + /@esbuild/android-x64@0.19.4: + resolution: {integrity: sha512-4iPufZ1TMOD3oBlGFqHXBpa3KFT46aLl6Vy7gwed0ZSYgHaZ/mihbYb4t7Z9etjkC9Al3ZYIoOaHrU60gcMy7g==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -2030,8 +1804,8 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64@0.18.13: - resolution: {integrity: sha512-f5goG30YgR1GU+fxtaBRdSW3SBG9pZW834Mmhxa6terzcboz7P2R0k4lDxlkP7NYRIIdBbWp+VgwQbmMH4yV7w==} + /@esbuild/darwin-arm64@0.18.20: + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -2039,8 +1813,8 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64@0.19.2: - resolution: {integrity: sha512-Ora8JokrvrzEPEpZO18ZYXkH4asCdc1DLdcVy8TGf5eWtPO1Ie4WroEJzwI52ZGtpODy3+m0a2yEX9l+KUn0tA==} + /@esbuild/darwin-arm64@0.19.4: + resolution: {integrity: sha512-Lviw8EzxsVQKpbS+rSt6/6zjn9ashUZ7Tbuvc2YENgRl0yZTktGlachZ9KMJUsVjZEGFVu336kl5lBgDN6PmpA==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -2048,8 +1822,8 @@ packages: dev: true optional: true - /@esbuild/darwin-x64@0.18.13: - resolution: {integrity: sha512-RIrxoKH5Eo+yE5BtaAIMZaiKutPhZjw+j0OCh8WdvKEKJQteacq0myZvBDLU+hOzQOZWJeDnuQ2xgSScKf1Ovw==} + /@esbuild/darwin-x64@0.18.20: + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -2057,8 +1831,8 @@ packages: dev: true optional: true - /@esbuild/darwin-x64@0.19.2: - resolution: {integrity: sha512-tP+B5UuIbbFMj2hQaUr6EALlHOIOmlLM2FK7jeFBobPy2ERdohI4Ka6ZFjZ1ZYsrHE/hZimGuU90jusRE0pwDw==} + /@esbuild/darwin-x64@0.19.4: + resolution: {integrity: sha512-YHbSFlLgDwglFn0lAO3Zsdrife9jcQXQhgRp77YiTDja23FrC2uwnhXMNkAucthsf+Psr7sTwYEryxz6FPAVqw==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -2066,8 +1840,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64@0.18.13: - resolution: {integrity: sha512-AfRPhHWmj9jGyLgW/2FkYERKmYR+IjYxf2rtSLmhOrPGFh0KCETFzSjx/JX/HJnvIqHt/DRQD/KAaVsUKoI3Xg==} + /@esbuild/freebsd-arm64@0.18.20: + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -2075,8 +1849,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64@0.19.2: - resolution: {integrity: sha512-YbPY2kc0acfzL1VPVK6EnAlig4f+l8xmq36OZkU0jzBVHcOTyQDhnKQaLzZudNJQyymd9OqQezeaBgkTGdTGeQ==} + /@esbuild/freebsd-arm64@0.19.4: + resolution: {integrity: sha512-vz59ijyrTG22Hshaj620e5yhs2dU1WJy723ofc+KUgxVCM6zxQESmWdMuVmUzxtGqtj5heHyB44PjV/HKsEmuQ==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -2084,8 +1858,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64@0.18.13: - resolution: {integrity: sha512-pGzWWZJBInhIgdEwzn8VHUBang8UvFKsvjDkeJ2oyY5gZtAM6BaxK0QLCuZY+qoj/nx/lIaItH425rm/hloETA==} + /@esbuild/freebsd-x64@0.18.20: + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -2093,8 +1867,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64@0.19.2: - resolution: {integrity: sha512-nSO5uZT2clM6hosjWHAsS15hLrwCvIWx+b2e3lZ3MwbYSaXwvfO528OF+dLjas1g3bZonciivI8qKR/Hm7IWGw==} + /@esbuild/freebsd-x64@0.19.4: + resolution: {integrity: sha512-3sRbQ6W5kAiVQRBWREGJNd1YE7OgzS0AmOGjDmX/qZZecq8NFlQsQH0IfXjjmD0XtUYqr64e0EKNFjMUlPL3Cw==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -2102,8 +1876,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm64@0.18.13: - resolution: {integrity: sha512-hCzZbVJEHV7QM77fHPv2qgBcWxgglGFGCxk6KfQx6PsVIdi1u09X7IvgE9QKqm38OpkzaAkPnnPqwRsltvLkIQ==} + /@esbuild/linux-arm64@0.18.20: + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -2111,8 +1885,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm64@0.19.2: - resolution: {integrity: sha512-ig2P7GeG//zWlU0AggA3pV1h5gdix0MA3wgB+NsnBXViwiGgY77fuN9Wr5uoCrs2YzaYfogXgsWZbm+HGr09xg==} + /@esbuild/linux-arm64@0.19.4: + resolution: {integrity: sha512-ZWmWORaPbsPwmyu7eIEATFlaqm0QGt+joRE9sKcnVUG3oBbr/KYdNE2TnkzdQwX6EDRdg/x8Q4EZQTXoClUqqA==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -2120,8 +1894,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm@0.18.13: - resolution: {integrity: sha512-4iMxLRMCxGyk7lEvkkvrxw4aJeC93YIIrfbBlUJ062kilUUnAiMb81eEkVvCVoh3ON283ans7+OQkuy1uHW+Hw==} + /@esbuild/linux-arm@0.18.20: + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -2129,8 +1903,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm@0.19.2: - resolution: {integrity: sha512-Odalh8hICg7SOD7XCj0YLpYCEc+6mkoq63UnExDCiRA2wXEmGlK5JVrW50vZR9Qz4qkvqnHcpH+OFEggO3PgTg==} + /@esbuild/linux-arm@0.19.4: + resolution: {integrity: sha512-z/4ArqOo9EImzTi4b6Vq+pthLnepFzJ92BnofU1jgNlcVb+UqynVFdoXMCFreTK7FdhqAzH0vmdwW5373Hm9pg==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -2138,8 +1912,8 @@ packages: dev: true optional: true - /@esbuild/linux-ia32@0.18.13: - resolution: {integrity: sha512-I3OKGbynl3AAIO6onXNrup/ttToE6Rv2XYfFgLK/wnr2J+1g+7k4asLrE+n7VMhaqX+BUnyWkCu27rl+62Adug==} + /@esbuild/linux-ia32@0.18.20: + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -2147,8 +1921,8 @@ packages: dev: true optional: true - /@esbuild/linux-ia32@0.19.2: - resolution: {integrity: sha512-mLfp0ziRPOLSTek0Gd9T5B8AtzKAkoZE70fneiiyPlSnUKKI4lp+mGEnQXcQEHLJAcIYDPSyBvsUbKUG2ri/XQ==} + /@esbuild/linux-ia32@0.19.4: + resolution: {integrity: sha512-EGc4vYM7i1GRUIMqRZNCTzJh25MHePYsnQfKDexD8uPTCm9mK56NIL04LUfX2aaJ+C9vyEp2fJ7jbqFEYgO9lQ==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -2165,8 +1939,8 @@ packages: dev: true optional: true - /@esbuild/linux-loong64@0.18.13: - resolution: {integrity: sha512-8pcKDApAsKc6WW51ZEVidSGwGbebYw2qKnO1VyD8xd6JN0RN6EUXfhXmDk9Vc4/U3Y4AoFTexQewQDJGsBXBpg==} + /@esbuild/linux-loong64@0.18.20: + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -2174,8 +1948,8 @@ packages: dev: true optional: true - /@esbuild/linux-loong64@0.19.2: - resolution: {integrity: sha512-hn28+JNDTxxCpnYjdDYVMNTR3SKavyLlCHHkufHV91fkewpIyQchS1d8wSbmXhs1fiYDpNww8KTFlJ1dHsxeSw==} + /@esbuild/linux-loong64@0.19.4: + resolution: {integrity: sha512-WVhIKO26kmm8lPmNrUikxSpXcgd6HDog0cx12BUfA2PkmURHSgx9G6vA19lrlQOMw+UjMZ+l3PpbtzffCxFDRg==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -2183,8 +1957,8 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el@0.18.13: - resolution: {integrity: sha512-6GU+J1PLiVqWx8yoCK4Z0GnfKyCGIH5L2KQipxOtbNPBs+qNDcMJr9euxnyJ6FkRPyMwaSkjejzPSISD9hb+gg==} + /@esbuild/linux-mips64el@0.18.20: + resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -2192,8 +1966,8 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el@0.19.2: - resolution: {integrity: sha512-KbXaC0Sejt7vD2fEgPoIKb6nxkfYW9OmFUK9XQE4//PvGIxNIfPk1NmlHmMg6f25x57rpmEFrn1OotASYIAaTg==} + /@esbuild/linux-mips64el@0.19.4: + resolution: {integrity: sha512-keYY+Hlj5w86hNp5JJPuZNbvW4jql7c1eXdBUHIJGTeN/+0QFutU3GrS+c27L+NTmzi73yhtojHk+lr2+502Mw==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -2201,8 +1975,8 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64@0.18.13: - resolution: {integrity: sha512-pfn/OGZ8tyR8YCV7MlLl5hAit2cmS+j/ZZg9DdH0uxdCoJpV7+5DbuXrR+es4ayRVKIcfS9TTMCs60vqQDmh+w==} + /@esbuild/linux-ppc64@0.18.20: + resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -2210,8 +1984,8 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64@0.19.2: - resolution: {integrity: sha512-dJ0kE8KTqbiHtA3Fc/zn7lCd7pqVr4JcT0JqOnbj4LLzYnp+7h8Qi4yjfq42ZlHfhOCM42rBh0EwHYLL6LEzcw==} + /@esbuild/linux-ppc64@0.19.4: + resolution: {integrity: sha512-tQ92n0WMXyEsCH4m32S21fND8VxNiVazUbU4IUGVXQpWiaAxOBvtOtbEt3cXIV3GEBydYsY8pyeRMJx9kn3rvw==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -2219,8 +1993,8 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64@0.18.13: - resolution: {integrity: sha512-aIbhU3LPg0lOSCfVeGHbmGYIqOtW6+yzO+Nfv57YblEK01oj0mFMtvDJlOaeAZ6z0FZ9D13oahi5aIl9JFphGg==} + /@esbuild/linux-riscv64@0.18.20: + resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -2228,8 +2002,8 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64@0.19.2: - resolution: {integrity: sha512-7Z/jKNFufZ/bbu4INqqCN6DDlrmOTmdw6D0gH+6Y7auok2r02Ur661qPuXidPOJ+FSgbEeQnnAGgsVynfLuOEw==} + /@esbuild/linux-riscv64@0.19.4: + resolution: {integrity: sha512-tRRBey6fG9tqGH6V75xH3lFPpj9E8BH+N+zjSUCnFOX93kEzqS0WdyJHkta/mmJHn7MBaa++9P4ARiU4ykjhig==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -2237,8 +2011,8 @@ packages: dev: true optional: true - /@esbuild/linux-s390x@0.18.13: - resolution: {integrity: sha512-Pct1QwF2sp+5LVi4Iu5Y+6JsGaV2Z2vm4O9Dd7XZ5tKYxEHjFtb140fiMcl5HM1iuv6xXO8O1Vrb1iJxHlv8UA==} + /@esbuild/linux-s390x@0.18.20: + resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -2246,8 +2020,8 @@ packages: dev: true optional: true - /@esbuild/linux-s390x@0.19.2: - resolution: {integrity: sha512-U+RinR6aXXABFCcAY4gSlv4CL1oOVvSSCdseQmGO66H+XyuQGZIUdhG56SZaDJQcLmrSfRmx5XZOWyCJPRqS7g==} + /@esbuild/linux-s390x@0.19.4: + resolution: {integrity: sha512-152aLpQqKZYhThiJ+uAM4PcuLCAOxDsCekIbnGzPKVBRUDlgaaAfaUl5NYkB1hgY6WN4sPkejxKlANgVcGl9Qg==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -2255,8 +2029,8 @@ packages: dev: true optional: true - /@esbuild/linux-x64@0.18.13: - resolution: {integrity: sha512-zTrIP0KzYP7O0+3ZnmzvUKgGtUvf4+piY8PIO3V8/GfmVd3ZyHJGz7Ht0np3P1wz+I8qJ4rjwJKqqEAbIEPngA==} + /@esbuild/linux-x64@0.18.20: + resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -2264,8 +2038,8 @@ packages: dev: true optional: true - /@esbuild/linux-x64@0.19.2: - resolution: {integrity: sha512-oxzHTEv6VPm3XXNaHPyUTTte+3wGv7qVQtqaZCrgstI16gCuhNOtBXLEBkBREP57YTd68P0VgDgG73jSD8bwXQ==} + /@esbuild/linux-x64@0.19.4: + resolution: {integrity: sha512-Mi4aNA3rz1BNFtB7aGadMD0MavmzuuXNTaYL6/uiYIs08U7YMPETpgNn5oue3ICr+inKwItOwSsJDYkrE9ekVg==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -2273,8 +2047,8 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64@0.18.13: - resolution: {integrity: sha512-I6zs10TZeaHDYoGxENuksxE1sxqZpCp+agYeW039yqFwh3MgVvdmXL5NMveImOC6AtpLvE4xG5ujVic4NWFIDQ==} + /@esbuild/netbsd-x64@0.18.20: + resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -2282,8 +2056,8 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64@0.19.2: - resolution: {integrity: sha512-WNa5zZk1XpTTwMDompZmvQLHszDDDN7lYjEHCUmAGB83Bgs20EMs7ICD+oKeT6xt4phV4NDdSi/8OfjPbSbZfQ==} + /@esbuild/netbsd-x64@0.19.4: + resolution: {integrity: sha512-9+Wxx1i5N/CYo505CTT7T+ix4lVzEdz0uCoYGxM5JDVlP2YdDC1Bdz+Khv6IbqmisT0Si928eAxbmGkcbiuM/A==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -2291,8 +2065,8 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64@0.18.13: - resolution: {integrity: sha512-W5C5nczhrt1y1xPG5bV+0M12p2vetOGlvs43LH8SopQ3z2AseIROu09VgRqydx5qFN7y9qCbpgHLx0kb0TcW7g==} + /@esbuild/openbsd-x64@0.18.20: + resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -2300,8 +2074,8 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64@0.19.2: - resolution: {integrity: sha512-S6kI1aT3S++Dedb7vxIuUOb3oAxqxk2Rh5rOXOTYnzN8JzW1VzBd+IqPiSpgitu45042SYD3HCoEyhLKQcDFDw==} + /@esbuild/openbsd-x64@0.19.4: + resolution: {integrity: sha512-MFsHleM5/rWRW9EivFssop+OulYVUoVcqkyOkjiynKBCGBj9Lihl7kh9IzrreDyXa4sNkquei5/DTP4uCk25xw==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -2309,8 +2083,8 @@ packages: dev: true optional: true - /@esbuild/sunos-x64@0.18.13: - resolution: {integrity: sha512-X/xzuw4Hzpo/yq3YsfBbIsipNgmsm8mE/QeWbdGdTTeZ77fjxI2K0KP3AlhZ6gU3zKTw1bKoZTuKLnqcJ537qw==} + /@esbuild/sunos-x64@0.18.20: + resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -2318,8 +2092,8 @@ packages: dev: true optional: true - /@esbuild/sunos-x64@0.19.2: - resolution: {integrity: sha512-VXSSMsmb+Z8LbsQGcBMiM+fYObDNRm8p7tkUDMPG/g4fhFX5DEFmjxIEa3N8Zr96SjsJ1woAhF0DUnS3MF3ARw==} + /@esbuild/sunos-x64@0.19.4: + resolution: {integrity: sha512-6Xq8SpK46yLvrGxjp6HftkDwPP49puU4OF0hEL4dTxqCbfx09LyrbUj/D7tmIRMj5D5FCUPksBbxyQhp8tmHzw==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -2327,8 +2101,8 @@ packages: dev: true optional: true - /@esbuild/win32-arm64@0.18.13: - resolution: {integrity: sha512-4CGYdRQT/ILd+yLLE5i4VApMPfGE0RPc/wFQhlluDQCK09+b4JDbxzzjpgQqTPrdnP7r5KUtGVGZYclYiPuHrw==} + /@esbuild/win32-arm64@0.18.20: + resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -2336,8 +2110,8 @@ packages: dev: true optional: true - /@esbuild/win32-arm64@0.19.2: - resolution: {integrity: sha512-5NayUlSAyb5PQYFAU9x3bHdsqB88RC3aM9lKDAz4X1mo/EchMIT1Q+pSeBXNgkfNmRecLXA0O8xP+x8V+g/LKg==} + /@esbuild/win32-arm64@0.19.4: + resolution: {integrity: sha512-PkIl7Jq4mP6ke7QKwyg4fD4Xvn8PXisagV/+HntWoDEdmerB2LTukRZg728Yd1Fj+LuEX75t/hKXE2Ppk8Hh1w==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -2345,8 +2119,8 @@ packages: dev: true optional: true - /@esbuild/win32-ia32@0.18.13: - resolution: {integrity: sha512-D+wKZaRhQI+MUGMH+DbEr4owC2D7XnF+uyGiZk38QbgzLcofFqIOwFs7ELmIeU45CQgfHNy9Q+LKW3cE8g37Kg==} + /@esbuild/win32-ia32@0.18.20: + resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -2354,8 +2128,8 @@ packages: dev: true optional: true - /@esbuild/win32-ia32@0.19.2: - resolution: {integrity: sha512-47gL/ek1v36iN0wL9L4Q2MFdujR0poLZMJwhO2/N3gA89jgHp4MR8DKCmwYtGNksbfJb9JoTtbkoe6sDhg2QTA==} + /@esbuild/win32-ia32@0.19.4: + resolution: {integrity: sha512-ga676Hnvw7/ycdKB53qPusvsKdwrWzEyJ+AtItHGoARszIqvjffTwaaW3b2L6l90i7MO9i+dlAW415INuRhSGg==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -2363,8 +2137,8 @@ packages: dev: true optional: true - /@esbuild/win32-x64@0.18.13: - resolution: {integrity: sha512-iVl6lehAfJS+VmpF3exKpNQ8b0eucf5VWfzR8S7xFve64NBNz2jPUgx1X93/kfnkfgP737O+i1k54SVQS7uVZA==} + /@esbuild/win32-x64@0.18.20: + resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -2372,8 +2146,8 @@ packages: dev: true optional: true - /@esbuild/win32-x64@0.19.2: - resolution: {integrity: sha512-tcuhV7ncXBqbt/Ybf0IyrMcwVOAPDckMK9rXNHtF17UTK18OKLpg08glminN06pt2WCoALhXdLfSPbVvK/6fxw==} + /@esbuild/win32-x64@0.19.4: + resolution: {integrity: sha512-HP0GDNla1T3ZL8Ko/SHAS2GgtjOg+VmWnnYLhuTksr++EnduYB0f3Y2LzHsUwb2iQ13JGoY6G3R8h6Du/WG6uA==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -2381,8 +2155,8 @@ packages: dev: true optional: true - /@headlessui/react@1.7.15(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-OTO0XtoRQ6JPB1cKNFYBZv2Q0JMqMGNhYP1CjPvcJvjz8YGokz8oAj89HIYZGN0gZzn/4kk9iUpmMF4Q21Gsqw==} + /@headlessui/react@1.7.17(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-4am+tzvkqDSSgiwrsEpGWqgGo9dz8qU5M3znCkC4PgkpY4HcCZzEDEvozltGGGHIKl9jbXbZPSH5TWn4sWJdow==} engines: {node: '>=10'} peerDependencies: react: ^16 || ^17 || ^18 @@ -2401,8 +2175,8 @@ packages: react: 18.2.0 dev: false - /@jest/schemas@29.6.0: - resolution: {integrity: sha512-rxLjXyJBTL4LQeJW3aKo0M/+GkCOXsO+8i9Iu7eDb6KwtP65ayoDsitrdPBtujxQ88k4wI2FNYfa6TOGwSn6cQ==} + /@jest/schemas@29.6.3: + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@sinclair/typebox': 0.27.8 @@ -2414,10 +2188,10 @@ packages: dependencies: '@jridgewell/set-array': 1.1.2 '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.18 + '@jridgewell/trace-mapping': 0.3.19 - /@jridgewell/resolve-uri@3.1.0: - resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} + /@jridgewell/resolve-uri@3.1.1: + resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} engines: {node: '>=6.0.0'} /@jridgewell/set-array@1.1.2: @@ -2428,26 +2202,23 @@ packages: resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} dependencies: '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.18 + '@jridgewell/trace-mapping': 0.3.19 dev: true - /@jridgewell/sourcemap-codec@1.4.14: - resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} - /@jridgewell/sourcemap-codec@1.4.15: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - /@jridgewell/trace-mapping@0.3.18: - resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} + /@jridgewell/trace-mapping@0.3.19: + resolution: {integrity: sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==} dependencies: - '@jridgewell/resolve-uri': 3.1.0 - '@jridgewell/sourcemap-codec': 1.4.14 + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 /@mdx-js/mdx@2.3.0: resolution: {integrity: sha512-jLuwRlz8DQfQNiUCJR50Y09CGPq3fLtmtUQfVrj79E0JWu3dvsVcxVIcfhR5h0iXu+/z++zDrYeiJqifRynJkA==} dependencies: - '@types/estree-jsx': 1.0.0 - '@types/mdx': 2.0.5 + '@types/estree-jsx': 1.0.1 + '@types/mdx': 2.0.8 estree-util-build-jsx: 2.2.2 estree-util-is-identifier-name: 2.1.0 estree-util-to-js: 1.2.0 @@ -2472,13 +2243,13 @@ packages: peerDependencies: react: '>=16' dependencies: - '@types/mdx': 2.0.5 - '@types/react': 18.2.15 + '@types/mdx': 2.0.8 + '@types/react': 18.2.23 react: 18.2.0 dev: false - /@napi-rs/simple-git-android-arm-eabi@0.1.8: - resolution: {integrity: sha512-JJCejHBB1G6O8nxjQLT4quWCcvLpC3oRdJJ9G3MFYSCoYS8i1bWCWeU+K7Br+xT+D6s1t9q8kNJAwJv9Ygpi0g==} + /@napi-rs/simple-git-android-arm-eabi@0.1.9: + resolution: {integrity: sha512-9D4JnfePMpgL4pg9aMUX7/TIWEUQ+Tgx8n3Pf8TNCMGjUbImJyYsDSLJzbcv9wH7srgn4GRjSizXFJHAPjzEug==} engines: {node: '>= 10'} cpu: [arm] os: [android] @@ -2486,8 +2257,8 @@ packages: dev: false optional: true - /@napi-rs/simple-git-android-arm64@0.1.8: - resolution: {integrity: sha512-mraHzwWBw3tdRetNOS5KnFSjvdAbNBnjFLA8I4PwTCPJj3Q4txrigcPp2d59cJ0TC51xpnPXnZjYdNwwSI9g6g==} + /@napi-rs/simple-git-android-arm64@0.1.9: + resolution: {integrity: sha512-Krilsw0gPrrASZzudNEl9pdLuNbhoTK0j7pUbfB8FRifpPdFB/zouwuEm0aSnsDXN4ftGrmGG82kuiR/2MeoPg==} engines: {node: '>= 10'} cpu: [arm64] os: [android] @@ -2495,8 +2266,8 @@ packages: dev: false optional: true - /@napi-rs/simple-git-darwin-arm64@0.1.8: - resolution: {integrity: sha512-ufy/36eI/j4UskEuvqSH7uXtp3oXeLDmjQCfKJz3u5Vx98KmOMKrqAm2H81AB2WOtCo5mqS6PbBeUXR8BJX8lQ==} + /@napi-rs/simple-git-darwin-arm64@0.1.9: + resolution: {integrity: sha512-H/F09nDgYjv4gcFrZBgdTKkZEepqt0KLYcCJuUADuxkKupmjLdecMhypXLk13AzvLW4UQI7NlLTLDXUFLyr2BA==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] @@ -2504,8 +2275,8 @@ packages: dev: false optional: true - /@napi-rs/simple-git-darwin-x64@0.1.8: - resolution: {integrity: sha512-Vb21U+v3tPJNl+8JtIHHT8HGe6WZ8o1Tq3f6p+Jx9Cz71zEbcIiB9FCEMY1knS/jwQEOuhhlI9Qk7d4HY+rprA==} + /@napi-rs/simple-git-darwin-x64@0.1.9: + resolution: {integrity: sha512-jBR2xS9nVPqmHv0TWz874W0m/d453MGrMeLjB+boK5IPPLhg3AWIZj0aN9jy2Je1BGVAa0w3INIQJtBBeB6kFA==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] @@ -2513,8 +2284,8 @@ packages: dev: false optional: true - /@napi-rs/simple-git-linux-arm-gnueabihf@0.1.8: - resolution: {integrity: sha512-6BPTJ7CzpSm2t54mRLVaUr3S7ORJfVJoCk2rQ8v8oDg0XAMKvmQQxOsAgqKBo9gYNHJnqrOx3AEuEgvB586BuQ==} + /@napi-rs/simple-git-linux-arm-gnueabihf@0.1.9: + resolution: {integrity: sha512-3n0+VpO4YfZxndZ0sCvsHIvsazd+JmbSjrlTRBCnJeAU1/sfos3skNZtKGZksZhjvd+3o+/GFM8L7Xnv01yggA==} engines: {node: '>= 10'} cpu: [arm] os: [linux] @@ -2522,8 +2293,8 @@ packages: dev: false optional: true - /@napi-rs/simple-git-linux-arm64-gnu@0.1.8: - resolution: {integrity: sha512-qfESqUCAA/XoQpRXHptSQ8gIFnETCQt1zY9VOkplx6tgYk9PCeaX4B1Xuzrh3eZamSCMJFn+1YB9Ut8NwyGgAA==} + /@napi-rs/simple-git-linux-arm64-gnu@0.1.9: + resolution: {integrity: sha512-lIzf0KHU2SKC12vMrWwCtysG2Sdt31VHRPMUiz9lD9t3xwVn8qhFSTn5yDkTeG3rgX6o0p5EKalfQN5BXsJq2w==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -2531,8 +2302,8 @@ packages: dev: false optional: true - /@napi-rs/simple-git-linux-arm64-musl@0.1.8: - resolution: {integrity: sha512-G80BQPpaRmQpn8dJGHp4I2/YVhWDUNJwcCrJAtAdbKFDCMyCHJBln2ERL/+IEUlIAT05zK/c1Z5WEprvXEdXow==} + /@napi-rs/simple-git-linux-arm64-musl@0.1.9: + resolution: {integrity: sha512-KQozUoNXrxrB8k741ncWXSiMbjl1AGBGfZV21PANzUM8wH4Yem2bg3kfglYS/QIx3udspsT35I9abu49n7D1/w==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -2540,8 +2311,8 @@ packages: dev: false optional: true - /@napi-rs/simple-git-linux-x64-gnu@0.1.8: - resolution: {integrity: sha512-NI6o1sZYEf6vPtNWJAm9w8BxJt+LlSFW0liSjYe3lc3e4dhMfV240f0ALeqlwdIldRPaDFwZSJX5/QbS7nMzhw==} + /@napi-rs/simple-git-linux-x64-gnu@0.1.9: + resolution: {integrity: sha512-O/Niui5mnHPcK3iYC3ui8wgERtJWsQ3Y74W/09t0bL/3dgzGMl4oQt0qTj9dWCsnoGsIEYHPzwCBp/2vqYp/pw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -2549,8 +2320,8 @@ packages: dev: false optional: true - /@napi-rs/simple-git-linux-x64-musl@0.1.8: - resolution: {integrity: sha512-wljGAEOW41er45VTiU8kXJmO480pQKzsgRCvPlJJSCaEVBbmo6XXbFIXnZy1a2J3Zyy2IOsRB4PVkUZaNuPkZQ==} + /@napi-rs/simple-git-linux-x64-musl@0.1.9: + resolution: {integrity: sha512-L9n+e8Wn3hKr3RsIdY8GaB+ry4xZ4BaGwyKExgoB8nDGQuRUY9oP6p0WA4hWfJvJnU1H6hvo36a5UFPReyBO7A==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -2558,8 +2329,8 @@ packages: dev: false optional: true - /@napi-rs/simple-git-win32-arm64-msvc@0.1.8: - resolution: {integrity: sha512-QuV4QILyKPfbWHoQKrhXqjiCClx0SxbCTVogkR89BwivekqJMd9UlMxZdoCmwLWutRx4z9KmzQqokvYI5QeepA==} + /@napi-rs/simple-git-win32-arm64-msvc@0.1.9: + resolution: {integrity: sha512-Z6Ja/SZK+lMvRWaxj7wjnvSbAsGrH006sqZo8P8nxKUdZfkVvoCaAWr1r0cfkk2Z3aijLLtD+vKeXGlUPH6gGQ==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] @@ -2567,8 +2338,8 @@ packages: dev: false optional: true - /@napi-rs/simple-git-win32-x64-msvc@0.1.8: - resolution: {integrity: sha512-UzNS4JtjhZhZ5hRLq7BIUq+4JOwt1ThIKv11CsF1ag2l99f0123XvfEpjczKTaa94nHtjXYc2Mv9TjccBqYOew==} + /@napi-rs/simple-git-win32-x64-msvc@0.1.9: + resolution: {integrity: sha512-VAZj1UvC+R2MjKOD3I/Y7dmQlHWAYy4omhReQJRpbCf+oGCBi9CWiIduGqeYEq723nLIKdxP7XjaO0wl1NnUww==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -2576,29 +2347,29 @@ packages: dev: false optional: true - /@napi-rs/simple-git@0.1.8: - resolution: {integrity: sha512-BvOMdkkofTz6lEE35itJ/laUokPhr/5ToMGlOH25YnhLD2yN1KpRAT4blW9tT8281/1aZjW3xyi73bs//IrDKA==} + /@napi-rs/simple-git@0.1.9: + resolution: {integrity: sha512-qKzDS0+VjMvVyU28px+C6zlD1HKy83NIdYzfMQWa/g/V1iG/Ic8uwrS2ihHfm7mp7X0PPrmINLiTTi6ieUIKfw==} engines: {node: '>= 10'} optionalDependencies: - '@napi-rs/simple-git-android-arm-eabi': 0.1.8 - '@napi-rs/simple-git-android-arm64': 0.1.8 - '@napi-rs/simple-git-darwin-arm64': 0.1.8 - '@napi-rs/simple-git-darwin-x64': 0.1.8 - '@napi-rs/simple-git-linux-arm-gnueabihf': 0.1.8 - '@napi-rs/simple-git-linux-arm64-gnu': 0.1.8 - '@napi-rs/simple-git-linux-arm64-musl': 0.1.8 - '@napi-rs/simple-git-linux-x64-gnu': 0.1.8 - '@napi-rs/simple-git-linux-x64-musl': 0.1.8 - '@napi-rs/simple-git-win32-arm64-msvc': 0.1.8 - '@napi-rs/simple-git-win32-x64-msvc': 0.1.8 + '@napi-rs/simple-git-android-arm-eabi': 0.1.9 + '@napi-rs/simple-git-android-arm64': 0.1.9 + '@napi-rs/simple-git-darwin-arm64': 0.1.9 + '@napi-rs/simple-git-darwin-x64': 0.1.9 + '@napi-rs/simple-git-linux-arm-gnueabihf': 0.1.9 + '@napi-rs/simple-git-linux-arm64-gnu': 0.1.9 + '@napi-rs/simple-git-linux-arm64-musl': 0.1.9 + '@napi-rs/simple-git-linux-x64-gnu': 0.1.9 + '@napi-rs/simple-git-linux-x64-musl': 0.1.9 + '@napi-rs/simple-git-win32-arm64-msvc': 0.1.9 + '@napi-rs/simple-git-win32-x64-msvc': 0.1.9 dev: false - /@next/env@13.4.10: - resolution: {integrity: sha512-3G1yD/XKTSLdihyDSa8JEsaWOELY+OWe08o0LUYzfuHp1zHDA8SObQlzKt+v+wrkkPcnPweoLH1ImZeUa0A1NQ==} + /@next/env@13.5.3: + resolution: {integrity: sha512-X4te86vsbjsB7iO4usY9jLPtZ827Mbx+WcwNBGUOIuswuTAKQtzsuoxc/6KLxCMvogKG795MhrR1LDhYgDvasg==} dev: false - /@next/swc-darwin-arm64@13.4.10: - resolution: {integrity: sha512-4bsdfKmmg7mgFGph0UorD1xWfZ5jZEw4kKRHYEeTK9bT1QnMbPVPlVXQRIiFPrhoDQnZUoa6duuPUJIEGLV1Jg==} + /@next/swc-darwin-arm64@13.5.3: + resolution: {integrity: sha512-6hiYNJxJmyYvvKGrVThzo4nTcqvqUTA/JvKim7Auaj33NexDqSNwN5YrrQu+QhZJCIpv2tULSHt+lf+rUflLSw==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] @@ -2606,8 +2377,8 @@ packages: dev: false optional: true - /@next/swc-darwin-x64@13.4.10: - resolution: {integrity: sha512-ngXhUBbcZIWZWqNbQSNxQrB9T1V+wgfCzAor2olYuo/YpaL6mUYNUEgeBMhr8qwV0ARSgKaOp35lRvB7EmCRBg==} + /@next/swc-darwin-x64@13.5.3: + resolution: {integrity: sha512-UpBKxu2ob9scbpJyEq/xPgpdrgBgN3aLYlxyGqlYX5/KnwpJpFuIHU2lx8upQQ7L+MEmz+fA1XSgesoK92ppwQ==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] @@ -2615,8 +2386,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-gnu@13.4.10: - resolution: {integrity: sha512-SjCZZCOmHD4uyM75MVArSAmF5Y+IJSGroPRj2v9/jnBT36SYFTORN8Ag/lhw81W9EeexKY/CUg2e9mdebZOwsg==} + /@next/swc-linux-arm64-gnu@13.5.3: + resolution: {integrity: sha512-5AzM7Yx1Ky+oLY6pHs7tjONTF22JirDPd5Jw/3/NazJ73uGB05NqhGhB4SbeCchg7SlVYVBeRMrMSZwJwq/xoA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -2624,8 +2395,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-musl@13.4.10: - resolution: {integrity: sha512-F+VlcWijX5qteoYIOxNiBbNE8ruaWuRlcYyIRK10CugqI/BIeCDzEDyrHIHY8AWwbkTwe6GRHabMdE688Rqq4Q==} + /@next/swc-linux-arm64-musl@13.5.3: + resolution: {integrity: sha512-A/C1shbyUhj7wRtokmn73eBksjTM7fFQoY2v/0rTM5wehpkjQRLOXI8WJsag2uLhnZ4ii5OzR1rFPwoD9cvOgA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -2633,8 +2404,8 @@ packages: dev: false optional: true - /@next/swc-linux-x64-gnu@13.4.10: - resolution: {integrity: sha512-WDv1YtAV07nhfy3i1visr5p/tjiH6CeXp4wX78lzP1jI07t4PnHHG1WEDFOduXh3WT4hG6yN82EQBQHDi7hBrQ==} + /@next/swc-linux-x64-gnu@13.5.3: + resolution: {integrity: sha512-FubPuw/Boz8tKkk+5eOuDHOpk36F80rbgxlx4+xty/U71e3wZZxVYHfZXmf0IRToBn1Crb8WvLM9OYj/Ur815g==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -2642,8 +2413,8 @@ packages: dev: false optional: true - /@next/swc-linux-x64-musl@13.4.10: - resolution: {integrity: sha512-zFkzqc737xr6qoBgDa3AwC7jPQzGLjDlkNmt/ljvQJ/Veri5ECdHjZCUuiTUfVjshNIIpki6FuP0RaQYK9iCRg==} + /@next/swc-linux-x64-musl@13.5.3: + resolution: {integrity: sha512-DPw8nFuM1uEpbX47tM3wiXIR0Qa+atSzs9Q3peY1urkhofx44o7E1svnq+a5Q0r8lAcssLrwiM+OyJJgV/oj7g==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -2651,8 +2422,8 @@ packages: dev: false optional: true - /@next/swc-win32-arm64-msvc@13.4.10: - resolution: {integrity: sha512-IboRS8IWz5mWfnjAdCekkl8s0B7ijpWeDwK2O8CdgZkoCDY0ZQHBSGiJ2KViAG6+BJVfLvcP+a2fh6cdyBr9QQ==} + /@next/swc-win32-arm64-msvc@13.5.3: + resolution: {integrity: sha512-zBPSP8cHL51Gub/YV8UUePW7AVGukp2D8JU93IHbVDu2qmhFAn9LWXiOOLKplZQKxnIPUkJTQAJDCWBWU4UWUA==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] @@ -2660,8 +2431,8 @@ packages: dev: false optional: true - /@next/swc-win32-ia32-msvc@13.4.10: - resolution: {integrity: sha512-bSA+4j8jY4EEiwD/M2bol4uVEu1lBlgsGdvM+mmBm/BbqofNBfaZ2qwSbwE2OwbAmzNdVJRFRXQZ0dkjopTRaQ==} + /@next/swc-win32-ia32-msvc@13.5.3: + resolution: {integrity: sha512-ONcL/lYyGUj4W37D4I2I450SZtSenmFAvapkJQNIJhrPMhzDU/AdfLkW98NvH1D2+7FXwe7yclf3+B7v28uzBQ==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] @@ -2669,8 +2440,8 @@ packages: dev: false optional: true - /@next/swc-win32-x64-msvc@13.4.10: - resolution: {integrity: sha512-g2+tU63yTWmcVQKDGY0MV1PjjqgZtwM4rB1oVVi/v0brdZAcrcTV+04agKzWtvWroyFz6IqtT0MoZJA7PNyLVw==} + /@next/swc-win32-x64-msvc@13.5.3: + resolution: {integrity: sha512-2Vz2tYWaLqJvLcWbbTlJ5k9AN6JD7a5CN2pAeIzpbecK8ZF/yobA39cXtv6e+Z8c5UJuVOmaTldEAIxvsIux/Q==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -2678,11 +2449,6 @@ packages: dev: false optional: true - /@nicolo-ribaudo/semver-v6@6.3.3: - resolution: {integrity: sha512-3Yc1fUTs69MG/uZbJlLSI3JISMn2UV2rg+1D/vROUqZyh3l6iYHCs7GMp+M40ZD7yOdDbYjJcU1oTJhrc+dGKg==} - hasBin: true - dev: true - /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -2713,7 +2479,7 @@ packages: engines: {node: '>= 10'} dev: false - /@rollup/plugin-babel@6.0.3(@babel/core@7.22.9)(rollup@3.26.3): + /@rollup/plugin-babel@6.0.3(@babel/core@7.23.0)(rollup@3.29.4): resolution: {integrity: sha512-fKImZKppa1A/gX73eg4JGo+8kQr/q1HBQaCGKECZ0v4YBBv3lFqi14+7xyApECzvkLTHCifx+7ntcrvtBIRcpg==} engines: {node: '>=14.0.0'} peerDependencies: @@ -2726,14 +2492,14 @@ packages: rollup: optional: true dependencies: - '@babel/core': 7.22.9 - '@babel/helper-module-imports': 7.22.5 - '@rollup/pluginutils': 5.0.2(rollup@3.26.3) - rollup: 3.26.3 + '@babel/core': 7.23.0 + '@babel/helper-module-imports': 7.22.15 + '@rollup/pluginutils': 5.0.4(rollup@3.29.4) + rollup: 3.29.4 dev: true - /@rollup/plugin-node-resolve@15.1.0(rollup@3.26.3): - resolution: {integrity: sha512-xeZHCgsiZ9pzYVgAo9580eCGqwh/XCEUM9q6iQfGNocjgkufHAqC3exA+45URvhiYV8sBF9RlBai650eNs7AsA==} + /@rollup/plugin-node-resolve@15.2.1(rollup@3.29.4): + resolution: {integrity: sha512-nsbUg588+GDSu8/NS8T4UAshO6xeaOfINNuXeVHcKV02LJtoRaM1SiOacClw4kws1SFiNhdLGxlbMY9ga/zs/w==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^2.78.0||^3.0.0 @@ -2741,16 +2507,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.26.3) + '@rollup/pluginutils': 5.0.4(rollup@3.29.4) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 - resolve: 1.22.2 - rollup: 3.26.3 + resolve: 1.22.6 + rollup: 3.29.4 dev: true - /@rollup/plugin-terser@0.1.0(rollup@3.26.3): + /@rollup/plugin-terser@0.1.0(rollup@3.29.4): resolution: {integrity: sha512-N2KK+qUfHX2hBzVzM41UWGLrEmcjVC37spC8R3c9mt3oEDFKh3N2e12/lLp9aVSt86veR0TQiCNQXrm8C6aiUQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -2759,12 +2525,12 @@ packages: rollup: optional: true dependencies: - rollup: 3.26.3 - terser: 5.19.1 + rollup: 3.29.4 + terser: 5.20.0 dev: true - /@rollup/pluginutils@5.0.2(rollup@3.26.3): - resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} + /@rollup/pluginutils@5.0.4(rollup@3.29.4): + resolution: {integrity: sha512-0KJnIoRI8A+a1dqOYLxH8vBf8bphDmty5QvIm2hqm7oFCFYKCAZWWd2hXgMibaPsNDhI0AtpYfQZJG47pt/k4g==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0||^3.0.0 @@ -2772,10 +2538,10 @@ packages: rollup: optional: true dependencies: - '@types/estree': 1.0.1 + '@types/estree': 1.0.2 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 3.26.3 + rollup: 3.29.4 dev: true /@shuding/opentype.js@1.4.0-beta.0: @@ -2791,7 +2557,7 @@ packages: resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} dev: true - /@sveltejs/package@2.2.2(svelte@4.2.0)(typescript@5.1.6): + /@sveltejs/package@2.2.2(svelte@4.2.1)(typescript@5.2.2): resolution: {integrity: sha512-rP3sVv6cAntcdcG4r4KspLU6nZYYUrHJBAX3Arrw0KJFdgxtlsi2iDwN0Jwr/vIkgjcU0ZPWM8kkT5kpZDlWAw==} engines: {node: ^16.14 || >=18} hasBin: true @@ -2802,13 +2568,13 @@ packages: kleur: 4.1.5 sade: 1.8.1 semver: 7.5.4 - svelte: 4.2.0 - svelte2tsx: 0.6.21(svelte@4.2.0)(typescript@5.1.6) + svelte: 4.2.1 + svelte2tsx: 0.6.22(svelte@4.2.1)(typescript@5.2.2) transitivePeerDependencies: - typescript dev: true - /@sveltejs/vite-plugin-svelte-inspector@1.0.4(@sveltejs/vite-plugin-svelte@2.4.5)(svelte@4.2.0)(vite@4.4.9): + /@sveltejs/vite-plugin-svelte-inspector@1.0.4(@sveltejs/vite-plugin-svelte@2.4.6)(svelte@4.2.1)(vite@4.4.9): resolution: {integrity: sha512-zjiuZ3yydBtwpF3bj0kQNV0YXe+iKE545QGZVTaylW3eAzFr+pJ/cwK8lZEaRp4JtaJXhD5DyWAV4AxLh6DgaQ==} engines: {node: ^14.18.0 || >= 16} peerDependencies: @@ -2816,45 +2582,45 @@ packages: svelte: ^3.54.0 || ^4.0.0 vite: ^4.0.0 dependencies: - '@sveltejs/vite-plugin-svelte': 2.4.5(svelte@4.2.0)(vite@4.4.9) + '@sveltejs/vite-plugin-svelte': 2.4.6(svelte@4.2.1)(vite@4.4.9) debug: 4.3.4 - svelte: 4.2.0 - vite: 4.4.9(@types/node@20.4.2) + svelte: 4.2.1 + vite: 4.4.9(@types/node@20.7.1) transitivePeerDependencies: - supports-color dev: true - /@sveltejs/vite-plugin-svelte@2.4.5(svelte@4.2.0)(vite@4.4.9): - resolution: {integrity: sha512-UJKsFNwhzCVuiZd06jM/psscyNJNDwjQC+qIeb7GBJK9iWeQCcIyfcPWDvbCudfcJggY9jtxJeeaZH7uny93FQ==} + /@sveltejs/vite-plugin-svelte@2.4.6(svelte@4.2.1)(vite@4.4.9): + resolution: {integrity: sha512-zO79p0+DZnXPnF0ltIigWDx/ux7Ni+HRaFOw720Qeivc1azFUrJxTl0OryXVibYNx1hCboGia1NRV3x8RNv4cA==} engines: {node: ^14.18.0 || >= 16} peerDependencies: svelte: ^3.54.0 || ^4.0.0 vite: ^4.0.0 dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 1.0.4(@sveltejs/vite-plugin-svelte@2.4.5)(svelte@4.2.0)(vite@4.4.9) + '@sveltejs/vite-plugin-svelte-inspector': 1.0.4(@sveltejs/vite-plugin-svelte@2.4.6)(svelte@4.2.1)(vite@4.4.9) debug: 4.3.4 deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.3 - svelte: 4.2.0 - svelte-hmr: 0.15.3(svelte@4.2.0) - vite: 4.4.9(@types/node@20.4.2) + svelte: 4.2.1 + svelte-hmr: 0.15.3(svelte@4.2.1) + vite: 4.4.9(@types/node@20.7.1) vitefu: 0.2.4(vite@4.4.9) transitivePeerDependencies: - supports-color dev: true - /@swc/helpers@0.5.1: - resolution: {integrity: sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==} + /@swc/helpers@0.5.2: + resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==} dependencies: - tslib: 2.6.0 + tslib: 2.6.2 dev: false - /@tanstack/query-core@4.33.0: - resolution: {integrity: sha512-qYu73ptvnzRh6se2nyBIDHGBQvPY1XXl3yR769B7B6mIDD7s+EZhdlWHQ67JI6UOTFRaI7wupnTnwJ3gE0Mr/g==} + /@tanstack/query-core@4.35.3: + resolution: {integrity: sha512-PS+WEjd9wzKTyNjjQymvcOe1yg8f3wYc6mD+vb6CKyZAKvu4sIJwryfqfBULITKCla7P9C4l5e9RXePHvZOZeQ==} - /@tanstack/react-query@4.33.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-97nGbmDK0/m0B86BdiXzx3EW9RcDYKpnyL2+WwyuLHEgpfThYAnXFaMMmnTDuAO4bQJXEhflumIEUfKmP7ESGA==} + /@tanstack/react-query@4.35.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-UgTPioip/rGG3EQilXfA2j4BJkhEQsR+KAbF+KIuvQ7j4MkgnTCJF01SfRpIRNtQTlEfz/+IL7+jP8WA8bFbsw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -2865,26 +2631,26 @@ packages: react-native: optional: true dependencies: - '@tanstack/query-core': 4.33.0 + '@tanstack/query-core': 4.35.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) use-sync-external-store: 1.2.0(react@18.2.0) - /@tanstack/solid-query@4.33.0(solid-js@1.7.8): - resolution: {integrity: sha512-+AB28zc30XE+NvRf5nJmOGcMEqYNpKcr+C7GUfs1VlHn/pXZ/xLEoD4rnBPFpZ8tVLCFmIzNwIMd9mrn8IinEg==} + /@tanstack/solid-query@4.35.3(solid-js@1.7.12): + resolution: {integrity: sha512-RQvUjWJgg1vyuPVMEqshM/ZBzA3ZgDynyQppc3vXW/OWJ+PaOMpCbgZAiBP2ROuk0Ag8xxeGMBuEJ7ESUjCCgg==} peerDependencies: solid-js: ^1.5.7 dependencies: - '@tanstack/query-core': 4.33.0 - solid-js: 1.7.8 + '@tanstack/query-core': 4.35.3 + solid-js: 1.7.12 - /@tanstack/svelte-query@4.33.0(svelte@4.2.0): - resolution: {integrity: sha512-JY/WzbA+njANXOcidUDhnCOgNbbQ6lN+5Eupjq4GhCnTpN5LNa26cVZw96dGAVwkXtY9w11yBRIQwffvpxp4Og==} + /@tanstack/svelte-query@4.35.3(svelte@4.2.1): + resolution: {integrity: sha512-4gAWm6L+rofZOXZH//JKqKZoGOC1+/j0WgycpM9CwKKq/qIbXCoGW0r+0cO31s7O/F4v0qm+YZ3U7owOWfaiwQ==} peerDependencies: svelte: '>=3 <5' dependencies: - '@tanstack/query-core': 4.33.0 - svelte: 4.2.0 + '@tanstack/query-core': 4.35.3 + svelte: 4.2.1 /@tauri-apps/api@1.4.0: resolution: {integrity: sha512-Jd6HPoTM1PZSFIzq7FB8VmMu3qSSyo/3lSwLpoapW+lQ41CL5Dow2KryLg+gyazA/58DRWI9vu/XpEeHK4uMdw==} @@ -2997,221 +2763,250 @@ packages: '@tauri-apps/cli-win32-x64-msvc': 1.4.0 dev: true - /@theguild/remark-mermaid@0.0.4(react@18.2.0): - resolution: {integrity: sha512-C1gssw07eURtCwzXqZZdvyV/eawQ/cXfARaXIgBU9orffox+/YQ+exxmNu9v16NSGzAVsGF4qEVHvCOcCR/FpQ==} + /@theguild/remark-mermaid@0.0.5(react@18.2.0): + resolution: {integrity: sha512-e+ZIyJkEv9jabI4m7q29wZtZv+2iwPGsXJ2d46Zi7e+QcFudiyuqhLhHG/3gX3ZEB+hxTch+fpItyMS8jwbIcw==} peerDependencies: react: ^18.2.0 dependencies: - mermaid: 10.2.4 + mermaid: 10.4.0 react: 18.2.0 unist-util-visit: 5.0.0 transitivePeerDependencies: - supports-color dev: false - /@theguild/remark-npm2yarn@0.1.1: - resolution: {integrity: sha512-ZKwd/bjQ9V+pESLnu8+q8jqn15alXzJOuVckraebsXwqVBTw53Gmupiw9zCdLNHU829KTYNycJYea6m9HRLuOg==} + /@theguild/remark-npm2yarn@0.2.0: + resolution: {integrity: sha512-6NMsdxNQd0s+LBtsmLuZG0AFeGmRpqIyKkPA2FOt14ZFO8mXBkHY39+RWVrLIt/ltZCg78BvQPfJT7iF/sNvyg==} dependencies: - npm-to-yarn: 2.0.0 + npm-to-yarn: 2.1.0 unist-util-visit: 5.0.0 dev: false /@types/acorn@4.0.6: resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} dependencies: - '@types/estree': 1.0.1 + '@types/estree': 1.0.2 dev: false - /@types/babel__core@7.20.1: - resolution: {integrity: sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==} + /@types/babel__core@7.20.2: + resolution: {integrity: sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA==} dependencies: - '@babel/parser': 7.22.14 - '@babel/types': 7.22.11 - '@types/babel__generator': 7.6.4 - '@types/babel__template': 7.4.1 - '@types/babel__traverse': 7.20.1 + '@babel/parser': 7.23.0 + '@babel/types': 7.23.0 + '@types/babel__generator': 7.6.5 + '@types/babel__template': 7.4.2 + '@types/babel__traverse': 7.20.2 dev: true - /@types/babel__generator@7.6.4: - resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} + /@types/babel__generator@7.6.5: + resolution: {integrity: sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w==} dependencies: - '@babel/types': 7.22.11 + '@babel/types': 7.23.0 dev: true - /@types/babel__template@7.4.1: - resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} + /@types/babel__template@7.4.2: + resolution: {integrity: sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ==} dependencies: - '@babel/parser': 7.22.14 - '@babel/types': 7.22.11 + '@babel/parser': 7.23.0 + '@babel/types': 7.23.0 dev: true - /@types/babel__traverse@7.20.1: - resolution: {integrity: sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg==} + /@types/babel__traverse@7.20.2: + resolution: {integrity: sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw==} dependencies: - '@babel/types': 7.22.11 + '@babel/types': 7.23.0 dev: true /@types/chai-subset@1.3.3: resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} dependencies: - '@types/chai': 4.3.5 + '@types/chai': 4.3.6 dev: true - /@types/chai@4.3.5: - resolution: {integrity: sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==} + /@types/chai@4.3.6: + resolution: {integrity: sha512-VOVRLM1mBxIRxydiViqPcKn6MIxZytrbMpd6RJLIWKxUNr3zux8no0Oc7kJx0WAPIitgZ0gkrDS+btlqQpubpw==} dev: true - /@types/debug@4.1.8: - resolution: {integrity: sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==} + /@types/d3-scale-chromatic@3.0.0: + resolution: {integrity: sha512-dsoJGEIShosKVRBZB0Vo3C8nqSDqVGujJU6tPznsBJxNJNwMF8utmS83nvCBKQYPpjCzaaHcrf66iTRpZosLPw==} + dev: false + + /@types/d3-scale@4.0.5: + resolution: {integrity: sha512-w/C++3W394MHzcLKO2kdsIn5KKNTOqeQVzyPSGPLzQbkPw/jpeaGtSRlakcKevGgGsjJxGsbqS0fPrVFDbHrDA==} + dependencies: + '@types/d3-time': 3.0.1 + dev: false + + /@types/d3-time@3.0.1: + resolution: {integrity: sha512-5j/AnefKAhCw4HpITmLDTPlf4vhi8o/dES+zbegfPb7LaGfNyqkLxBR6E+4yvTAgnJLmhe80EXFMzUs38fw4oA==} + dev: false + + /@types/debug@4.1.9: + resolution: {integrity: sha512-8Hz50m2eoS56ldRlepxSBa6PWEVCtzUo/92HgLc2qTMnotJNIm7xP+UZhyWoYsyOdd5dxZ+NZLb24rsKyFs2ow==} dependencies: - '@types/ms': 0.7.31 + '@types/ms': 0.7.32 - /@types/estree-jsx@1.0.0: - resolution: {integrity: sha512-3qvGd0z8F2ENTGr/GG1yViqfiKmRfrXVx5sJyHGFu3z7m5g5utCQtGp/g29JnjflhtQJBv1WDQukHiT58xPcYQ==} + /@types/estree-jsx@1.0.1: + resolution: {integrity: sha512-sHyakZlAezNFxmYRo0fopDZW+XvK6ipeZkkp5EAOLjdPfZp8VjZBJ67vSRI99RSCAoqXVmXOHS4fnWoxpuGQtQ==} dependencies: - '@types/estree': 1.0.1 + '@types/estree': 1.0.2 dev: false - /@types/estree@1.0.1: - resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} + /@types/estree@1.0.2: + resolution: {integrity: sha512-VeiPZ9MMwXjO32/Xu7+OwflfmeoRwkE/qzndw42gGtgJwZopBnzy2gD//NN1+go1mADzkDcqf/KnFRSjTJ8xJA==} + + /@types/hast@2.3.6: + resolution: {integrity: sha512-47rJE80oqPmFdVDCD7IheXBrVdwuBgsYwoczFvKmwfo2Mzsnt+V9OONsYauFmICb6lQPpCuXYJWejBNs4pDJRg==} + dependencies: + '@types/unist': 2.0.8 - /@types/hast@2.3.5: - resolution: {integrity: sha512-SvQi0L/lNpThgPoleH53cdjB3y9zpLlVjRbqB3rH8hx1jiRSBGAhyjV3H+URFjNVRqt2EdYNrbZE5IsGlNfpRg==} + /@types/hast@3.0.1: + resolution: {integrity: sha512-hs/iBJx2aydugBQx5ETV3ZgeSS0oIreQrFJ4bjBl0XvM4wAmDjFEALY7p0rTSLt2eL+ibjRAAs9dTPiCLtmbqQ==} dependencies: - '@types/unist': 2.0.7 + '@types/unist': 3.0.0 + dev: false - /@types/js-yaml@4.0.5: - resolution: {integrity: sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA==} + /@types/js-yaml@4.0.6: + resolution: {integrity: sha512-ACTuifTSIIbyksx2HTon3aFtCKWcID7/h3XEmRpDYdMCXxPbl+m9GteOJeaAkiAta/NJaSFuA7ahZ0NkwajDSw==} dev: false /@types/json5@0.0.30: resolution: {integrity: sha512-sqm9g7mHlPY/43fcSNrCYfOeX9zkTTK+euO5E6+CVijSMm5tTjkVdwdqRkY3ljjIAf8679vps5jKUoJBCLsMDA==} dev: true - /@types/katex@0.14.0: - resolution: {integrity: sha512-+2FW2CcT0K3P+JMR8YG846bmDwplKUTsWgT2ENwdQ1UdVfRk3GQrh6Mi4sTopy30gI8Uau5CEqHTDZ6YvWIUPA==} + /@types/katex@0.16.3: + resolution: {integrity: sha512-CeVMX9EhVUW8MWnei05eIRks4D5Wscw/W9Byz1s3PA+yJvcdvq9SaDjiUKvRvEgjpdTyJMjQA43ae4KTwsvOPg==} dev: false - /@types/katex@0.16.1: - resolution: {integrity: sha512-cwglq2A63Yk082CQk0t8LIoDhZAVgJqkumLyk3grpg3K8sevaDW//Qsspmxj9Sf+97biqt79CfAlPrvizHlP0w==} - dev: false + /@types/mdast@3.0.13: + resolution: {integrity: sha512-HjiGiWedR0DVFkeNljpa6Lv4/IZU1+30VY5d747K7lBudFc3R0Ibr6yJ9lN3BE28VnZyDfLF/VB1Ql1ZIbKrmg==} + dependencies: + '@types/unist': 2.0.8 - /@types/mdast@3.0.12: - resolution: {integrity: sha512-DT+iNIRNX884cx0/Q1ja7NyUPpZuv0KPyL5rGNxm1WC1OtHstl7n4Jb7nk+xacNShQMbczJjt8uFzznpp6kYBg==} + /@types/mdast@4.0.1: + resolution: {integrity: sha512-IlKct1rUTJ1T81d8OHzyop15kGv9A/ff7Gz7IJgrk6jDb4Udw77pCJ+vq8oxZf4Ghpm+616+i1s/LNg/Vh7d+g==} dependencies: - '@types/unist': 2.0.7 + '@types/unist': 3.0.0 - /@types/mdx@2.0.5: - resolution: {integrity: sha512-76CqzuD6Q7LC+AtbPqrvD9AqsN0k8bsYo2bM2J8pmNldP1aIPAbzUQ7QbobyXL4eLr1wK5x8FZFe8eF/ubRuBg==} + /@types/mdx@2.0.8: + resolution: {integrity: sha512-r7/zWe+f9x+zjXqGxf821qz++ld8tp6Z4jUS6qmPZUXH6tfh4riXOhAqb12tWGWAevCFtMt1goLWkQMqIJKpsA==} dev: false - /@types/ms@0.7.31: - resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} + /@types/ms@0.7.32: + resolution: {integrity: sha512-xPSg0jm4mqgEkNhowKgZFBNtwoEwF6gJ4Dhww+GFpm3IgtNseHQZ5IqdNwnquZEoANxyDAKDRAdVo4Z72VvD/g==} - /@types/nlcst@1.0.1: - resolution: {integrity: sha512-aVIyXt6pZiiMOtVByE4Y0gf+BLm1Cxc4ZLSK8VRHn1CgkO+kXbQwN/EBhQmhPdBMjFJCMBKtmNW2zWQuFywz8Q==} + /@types/nlcst@1.0.2: + resolution: {integrity: sha512-ykxL/GDDUhqikjU0LIywZvEwb1NTYXTEWf+XgMSS2o6IXIakafPccxZmxgZcvJPZ3yFl2kdL1gJZz3U3iZF3QA==} dependencies: - '@types/unist': 2.0.7 + '@types/unist': 2.0.8 dev: true - /@types/node@20.4.2: - resolution: {integrity: sha512-Dd0BYtWgnWJKwO1jkmTrzofjK2QXXcai0dmtzvIBhcA+RsG5h8R3xlyta0kGOZRNfL9GuRtb1knmPEhQrePCEw==} + /@types/node@20.7.1: + resolution: {integrity: sha512-LT+OIXpp2kj4E2S/p91BMe+VgGX2+lfO+XTpfXhh+bCk2LkQtHZSub8ewFBMGP5ClysPjTDFa4sMI8Q3n4T0wg==} dev: true /@types/parse5@6.0.3: resolution: {integrity: sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==} dev: true - /@types/prop-types@15.7.5: - resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} + /@types/prop-types@15.7.7: + resolution: {integrity: sha512-FbtmBWCcSa2J4zL781Zf1p5YUBXQomPEcep9QZCfRfQgTxz3pJWiDFLebohZ9fFntX5ibzOkSsrJ0TEew8cAog==} - /@types/react-dom@18.2.7: - resolution: {integrity: sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==} + /@types/react-dom@18.2.8: + resolution: {integrity: sha512-bAIvO5lN/U8sPGvs1Xm61rlRHHaq5rp5N3kp9C+NJ/Q41P8iqjkXSu0+/qu8POsjH9pNWb0OYabFez7taP7omw==} dependencies: - '@types/react': 18.2.15 + '@types/react': 18.2.23 dev: true - /@types/react@18.2.15: - resolution: {integrity: sha512-oEjE7TQt1fFTFSbf8kkNuc798ahTUzn3Le67/PWjE8MAfYAD/qB7O8hSTcromLFqHCt9bcdOg5GXMokzTjJ5SA==} + /@types/react@18.2.23: + resolution: {integrity: sha512-qHLW6n1q2+7KyBEYnrZpcsAmU/iiCh9WGCKgXvMxx89+TYdJWRjZohVIo9XTcoLhfX3+/hP0Pbulu3bCZQ9PSA==} dependencies: - '@types/prop-types': 15.7.5 - '@types/scheduler': 0.16.3 + '@types/prop-types': 15.7.7 + '@types/scheduler': 0.16.4 csstype: 3.1.2 /@types/resolve@1.20.2: resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} dev: true - /@types/scheduler@0.16.3: - resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} + /@types/resolve@1.20.3: + resolution: {integrity: sha512-NH5oErHOtHZYcjCtg69t26aXEk4BN2zLWqf7wnDZ+dpe0iR7Rds1SPGEItl3fca21oOe0n3OCnZ4W7jBxu7FOw==} + dev: true + + /@types/scheduler@0.16.4: + resolution: {integrity: sha512-2L9ifAGl7wmXwP4v3pN4p2FLhD0O1qsJpvKmNin5VA8+UvNVb447UDaAEV6UdrkA+m/Xs58U1RFps44x6TFsVQ==} - /@types/unist@2.0.7: - resolution: {integrity: sha512-cputDpIbFgLUaGQn6Vqg3/YsJwxUwHLO13v3i5ouxT4lat0khip9AEWxtERujXV9wxIB1EyF97BSJFt6vpdI8g==} + /@types/unist@2.0.8: + resolution: {integrity: sha512-d0XxK3YTObnWVp6rZuev3c49+j4Lo8g4L1ZRm9z5L0xpoZycUPshHgczK5gsUMaZOstjVYYi09p5gYvUtfChYw==} /@types/unist@3.0.0: resolution: {integrity: sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==} + + /@ungap/structured-clone@1.2.0: + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} dev: false - /@vercel/og@0.5.8: - resolution: {integrity: sha512-WlY5q96e2OmQEUsgqKZrCljNHiD05aErsa7u2z2+pkxyoVSWPHXLYFwHPtp7+IubU4gt4JYfgSbzGQg7n6xeAQ==} + /@vercel/og@0.5.17: + resolution: {integrity: sha512-/GOyUBq3MhB3ygbhTJoZ0cHvwlyKdt0g8f4npuj4mwFlp57S7j4XWwgtqILK3XdFf25esN9i77fInrDkeRJfgA==} engines: {node: '>=16'} dependencies: '@resvg/resvg-wasm': 2.4.1 - satori: 0.10.1 + satori: 0.10.8 yoga-wasm-web: 0.3.3 dev: false - /@vitejs/plugin-react@4.0.4(vite@4.4.9): - resolution: {integrity: sha512-7wU921ABnNYkETiMaZy7XqpueMnpu5VxvVps13MjmCo+utBdD79sZzrApHawHtVX66cCJQQTXFcjH0y9dSUK8g==} + /@vitejs/plugin-react@4.1.0(vite@4.4.9): + resolution: {integrity: sha512-rM0SqazU9iqPUraQ2JlIvReeaxOoRj6n+PzB1C0cBzIbd8qP336nC39/R9yPi3wVcah7E7j/kdU1uCUqMEU4OQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: vite: ^4.2.0 dependencies: - '@babel/core': 7.22.11 - '@babel/plugin-transform-react-jsx-self': 7.22.5(@babel/core@7.22.11) - '@babel/plugin-transform-react-jsx-source': 7.22.5(@babel/core@7.22.11) + '@babel/core': 7.23.0 + '@babel/plugin-transform-react-jsx-self': 7.22.5(@babel/core@7.23.0) + '@babel/plugin-transform-react-jsx-source': 7.22.5(@babel/core@7.23.0) + '@types/babel__core': 7.20.2 react-refresh: 0.14.0 - vite: 4.4.9(@types/node@20.4.2) + vite: 4.4.9(@types/node@20.7.1) transitivePeerDependencies: - supports-color dev: true - /@vitest/expect@0.33.0: - resolution: {integrity: sha512-sVNf+Gla3mhTCxNJx+wJLDPp/WcstOe0Ksqz4Vec51MmgMth/ia0MGFEkIZmVGeTL5HtjYR4Wl/ZxBxBXZJTzQ==} + /@vitest/expect@0.34.5: + resolution: {integrity: sha512-/3RBIV9XEH+nRpRMqDJBufKIOQaYUH2X6bt0rKSCW0MfKhXFLYsR5ivHifeajRSTsln0FwJbitxLKHSQz/Xwkw==} dependencies: - '@vitest/spy': 0.33.0 - '@vitest/utils': 0.33.0 - chai: 4.3.7 + '@vitest/spy': 0.34.5 + '@vitest/utils': 0.34.5 + chai: 4.3.10 dev: true - /@vitest/runner@0.33.0: - resolution: {integrity: sha512-UPfACnmCB6HKRHTlcgCoBh6ppl6fDn+J/xR8dTufWiKt/74Y9bHci5CKB8tESSV82zKYtkBJo9whU3mNvfaisg==} + /@vitest/runner@0.34.5: + resolution: {integrity: sha512-RDEE3ViVvl7jFSCbnBRyYuu23XxmvRTSZWW6W4M7eC5dOsK75d5LIf6uhE5Fqf809DQ1+9ICZZNxhIolWHU4og==} dependencies: - '@vitest/utils': 0.33.0 + '@vitest/utils': 0.34.5 p-limit: 4.0.0 pathe: 1.1.1 dev: true - /@vitest/snapshot@0.33.0: - resolution: {integrity: sha512-tJjrl//qAHbyHajpFvr8Wsk8DIOODEebTu7pgBrP07iOepR5jYkLFiqLq2Ltxv+r0uptUb4izv1J8XBOwKkVYA==} + /@vitest/snapshot@0.34.5: + resolution: {integrity: sha512-+ikwSbhu6z2yOdtKmk/aeoDZ9QPm2g/ZO5rXT58RR9Vmu/kB2MamyDSx77dctqdZfP3Diqv4mbc/yw2kPT8rmA==} dependencies: - magic-string: 0.30.1 + magic-string: 0.30.3 pathe: 1.1.1 - pretty-format: 29.6.1 + pretty-format: 29.7.0 dev: true - /@vitest/spy@0.33.0: - resolution: {integrity: sha512-Kv+yZ4hnH1WdiAkPUQTpRxW8kGtH8VRTnus7ZTGovFYM1ZezJpvGtb9nPIjPnptHbsyIAxYZsEpVPYgtpjGnrg==} + /@vitest/spy@0.34.5: + resolution: {integrity: sha512-epsicsfhvBjRjCMOC/3k00mP/TBGQy8/P0DxOFiWyLt55gnZ99dqCfCiAsKO17BWVjn4eZRIjKvcqNmSz8gvmg==} dependencies: tinyspy: 2.1.1 dev: true - /@vitest/utils@0.33.0: - resolution: {integrity: sha512-pF1w22ic965sv+EN6uoePkAOTkAPWM03Ri/jXNyMIKBb/XHLDPfhLvf/Fa9g0YECevAIz56oVYXhodLvLQ/awA==} + /@vitest/utils@0.34.5: + resolution: {integrity: sha512-ur6CmmYQoeHMwmGb0v+qwkwN3yopZuZyf4xt1DBBSGBed8Hf9Gmbm/5dEWqgpLPdRx6Av6jcWXrjcKfkTzg/pw==} dependencies: - diff-sequences: 29.4.3 + diff-sequences: 29.6.3 loupe: 2.3.6 - pretty-format: 29.6.1 + pretty-format: 29.7.0 dev: true /acorn-jsx@5.3.2(acorn@8.10.0): @@ -3248,8 +3043,8 @@ packages: engines: {node: '>=12'} dev: true - /ansi-sequence-parser@1.1.0: - resolution: {integrity: sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==} + /ansi-sequence-parser@1.1.1: + resolution: {integrity: sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg==} /ansi-styles@3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} @@ -3329,22 +3124,22 @@ packages: hasBin: true dev: false - /astro@3.0.7: - resolution: {integrity: sha512-slUnDBXfxMzq5abE4svcKbaeYC/tHZsJYOrzwDNU9lLye3/4cqYP7OuHMTXiRlx7LSpHQlUhwbMe2HqCv2GKag==} + /astro@3.1.4: + resolution: {integrity: sha512-MKGJXHkkYK4QpqYHydPu+eeLBGU3cHx9Xdrtk6RFvu3dVkxuJsYm6L+lgIeH0hrTF9qlaDih/KbNnTKrCXdidw==} engines: {node: '>=18.14.1', npm: '>=6.14.0'} hasBin: true dependencies: - '@astrojs/compiler': 2.0.1 + '@astrojs/compiler': 2.1.0 '@astrojs/internal-helpers': 0.2.0 - '@astrojs/markdown-remark': 3.0.0(astro@3.0.7) - '@astrojs/telemetry': 3.0.1 - '@babel/core': 7.22.11 - '@babel/generator': 7.22.10 - '@babel/parser': 7.22.14 - '@babel/plugin-transform-react-jsx': 7.22.5(@babel/core@7.22.11) - '@babel/traverse': 7.22.11 - '@babel/types': 7.22.11 - '@types/babel__core': 7.20.1 + '@astrojs/markdown-remark': 3.2.0(astro@3.1.4) + '@astrojs/telemetry': 3.0.2 + '@babel/core': 7.23.0 + '@babel/generator': 7.23.0 + '@babel/parser': 7.23.0 + '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.23.0) + '@babel/traverse': 7.23.0 + '@babel/types': 7.23.0 + '@types/babel__core': 7.20.2 acorn: 8.10.0 boxen: 7.1.1 chokidar: 3.5.3 @@ -3355,8 +3150,8 @@ packages: debug: 4.3.4 devalue: 4.3.2 diff: 5.1.0 - es-module-lexer: 1.3.0 - esbuild: 0.19.2 + es-module-lexer: 1.3.1 + esbuild: 0.19.4 estree-walker: 3.0.3 execa: 8.0.1 fast-glob: 3.3.1 @@ -3371,25 +3166,27 @@ packages: ora: 7.0.1 p-limit: 4.0.0 path-to-regexp: 6.2.1 - preferred-pm: 3.0.3 + preferred-pm: 3.1.2 + probe-image-size: 7.2.3 prompts: 2.4.2 rehype: 12.0.1 - resolve: 1.22.4 + resolve: 1.22.6 semver: 7.5.4 server-destroy: 1.0.1 - sharp: 0.32.5 - shiki: 0.14.3 + shiki: 0.14.4 string-width: 6.1.0 strip-ansi: 7.1.0 tsconfig-resolver: 3.0.1 - undici: 5.23.0 + undici: 5.25.2 unist-util-visit: 4.1.2 vfile: 5.3.7 - vite: 4.4.9(@types/node@20.4.2) + vite: 4.4.9(@types/node@20.7.1) vitefu: 0.2.4(vite@4.4.9) - which-pm: 2.0.0 + which-pm: 2.1.1 yargs-parser: 21.1.1 zod: 3.21.1 + optionalDependencies: + sharp: 0.32.6 transitivePeerDependencies: - '@types/node' - less @@ -3401,35 +3198,19 @@ packages: - terser dev: true - /autoprefixer@10.4.14(postcss@8.4.26): - resolution: {integrity: sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==} - engines: {node: ^10 || ^12 || >=14} - hasBin: true - peerDependencies: - postcss: ^8.1.0 - dependencies: - browserslist: 4.21.9 - caniuse-lite: 1.0.30001516 - fraction.js: 4.2.0 - normalize-range: 0.1.2 - picocolors: 1.0.0 - postcss: 8.4.26 - postcss-value-parser: 4.2.0 - dev: true - - /autoprefixer@10.4.15(postcss@8.4.29): - resolution: {integrity: sha512-KCuPB8ZCIqFdA4HwKXsvz7j6gvSDNhDP7WnUjBleRkKjPdvCmHFuQ77ocavI8FT6NdvlBnE2UFr2H4Mycn8Vew==} + /autoprefixer@10.4.16(postcss@8.4.30): + resolution: {integrity: sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==} engines: {node: ^10 || ^12 || >=14} hasBin: true peerDependencies: postcss: ^8.1.0 dependencies: - browserslist: 4.21.10 - caniuse-lite: 1.0.30001525 - fraction.js: 4.2.0 + browserslist: 4.22.0 + caniuse-lite: 1.0.30001541 + fraction.js: 4.3.6 normalize-range: 0.1.2 picocolors: 1.0.0 - postcss: 8.4.29 + postcss: 8.4.30 postcss-value-parser: 4.2.0 dev: true @@ -3440,86 +3221,66 @@ packages: /b4a@1.6.4: resolution: {integrity: sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==} + requiresBuild: true dev: true + optional: true - /babel-plugin-jsx-dom-expressions@0.36.10(@babel/core@7.22.11): - resolution: {integrity: sha512-QA2k/14WGw+RgcGGnEuLWwnu4em6CGhjeXtjvgOYyFHYS2a+CzPeaVQHDOlfuiBcjq/3hWMspHMIMnPEOIzdBg==} - peerDependencies: - '@babel/core': ^7.20.12 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-module-imports': 7.18.6 - '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.11) - '@babel/types': 7.22.5 - html-entities: 2.3.3 - validate-html-nesting: 1.2.2 - dev: true - - /babel-plugin-jsx-dom-expressions@0.36.10(@babel/core@7.22.9): - resolution: {integrity: sha512-QA2k/14WGw+RgcGGnEuLWwnu4em6CGhjeXtjvgOYyFHYS2a+CzPeaVQHDOlfuiBcjq/3hWMspHMIMnPEOIzdBg==} + /babel-plugin-jsx-dom-expressions@0.36.18(@babel/core@7.23.0): + resolution: {integrity: sha512-8K0CHgzNMB0+1OC+GQf1O49Nc6DfHAoWDjY4YTW3W/3il5KrDKAj65723oPmya68kKKOkqDKuz+Zh1u7VFHthw==} peerDependencies: '@babel/core': ^7.20.12 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.0 '@babel/helper-module-imports': 7.18.6 - '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.9) - '@babel/types': 7.22.5 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.23.0) + '@babel/types': 7.23.0 html-entities: 2.3.3 validate-html-nesting: 1.2.2 dev: true - /babel-plugin-polyfill-corejs2@0.4.4(@babel/core@7.22.9): - resolution: {integrity: sha512-9WeK9snM1BfxB38goUEv2FLnA6ja07UMfazFHzCXUb3NyDZAwfXvQiURQ6guTTMeHcOsdknULm1PDhs4uWtKyA==} + /babel-plugin-polyfill-corejs2@0.4.5(@babel/core@7.23.0): + resolution: {integrity: sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/compat-data': 7.22.9 - '@babel/core': 7.22.9 - '@babel/helper-define-polyfill-provider': 0.4.1(@babel/core@7.22.9) - '@nicolo-ribaudo/semver-v6': 6.3.3 + '@babel/compat-data': 7.22.20 + '@babel/core': 7.23.0 + '@babel/helper-define-polyfill-provider': 0.4.2(@babel/core@7.23.0) + semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true - /babel-plugin-polyfill-corejs3@0.8.2(@babel/core@7.22.9): - resolution: {integrity: sha512-Cid+Jv1BrY9ReW9lIfNlNpsI53N+FN7gE+f73zLAUbr9C52W4gKLWSByx47pfDJsEysojKArqOtOKZSVIIUTuQ==} + /babel-plugin-polyfill-corejs3@0.8.4(@babel/core@7.23.0): + resolution: {integrity: sha512-9l//BZZsPR+5XjyJMPtZSK4jv0BsTO1zDac2GC6ygx9WLGlcsnRd1Co0B2zT5fF5Ic6BZy+9m3HNZ3QcOeDKfg==} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.22.9 - '@babel/helper-define-polyfill-provider': 0.4.1(@babel/core@7.22.9) - core-js-compat: 3.31.1 + '@babel/core': 7.23.0 + '@babel/helper-define-polyfill-provider': 0.4.2(@babel/core@7.23.0) + core-js-compat: 3.32.2 transitivePeerDependencies: - supports-color dev: true - /babel-plugin-polyfill-regenerator@0.5.1(@babel/core@7.22.9): - resolution: {integrity: sha512-L8OyySuI6OSQ5hFy9O+7zFjyr4WhAfRjLIOkhQGYl+emwJkd/S4XXT1JpfrgR1jrQ1NcGiOh+yAdGlF8pnC3Jw==} + /babel-plugin-polyfill-regenerator@0.5.2(@babel/core@7.23.0): + resolution: {integrity: sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.22.9 - '@babel/helper-define-polyfill-provider': 0.4.1(@babel/core@7.22.9) + '@babel/core': 7.23.0 + '@babel/helper-define-polyfill-provider': 0.4.2(@babel/core@7.23.0) transitivePeerDependencies: - supports-color dev: true - /babel-preset-solid@1.7.7(@babel/core@7.22.11): - resolution: {integrity: sha512-tdxVzx3kgcIjNXAOmGRbzIhFBPeJjSakiN9yM+IYdL/+LtXNnbGqb0Va5tJb8Sjbk+QVEriovCyuzB5T7jeTvg==} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.22.11 - babel-plugin-jsx-dom-expressions: 0.36.10(@babel/core@7.22.11) - dev: true - - /babel-preset-solid@1.7.7(@babel/core@7.22.9): - resolution: {integrity: sha512-tdxVzx3kgcIjNXAOmGRbzIhFBPeJjSakiN9yM+IYdL/+LtXNnbGqb0Va5tJb8Sjbk+QVEriovCyuzB5T7jeTvg==} + /babel-preset-solid@1.7.12(@babel/core@7.23.0): + resolution: {integrity: sha512-vNZn34Dv6IsWK/F59HhZlN8gP0ihZfkhPp8Lx/nxlY+rKtSZEAmmYlXWtds6EDKSiXoj2TEHuCcuqp6cO7oLSg==} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.9 - babel-plugin-jsx-dom-expressions: 0.36.10(@babel/core@7.22.9) + '@babel/core': 7.23.0 + babel-plugin-jsx-dom-expressions: 0.36.18(@babel/core@7.23.0) dev: true /bail@2.0.2: @@ -3545,11 +3306,13 @@ packages: /bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + requiresBuild: true dependencies: buffer: 5.7.1 inherits: 2.0.4 readable-stream: 3.6.2 dev: true + optional: true /bl@5.1.0: resolution: {integrity: sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==} @@ -3587,26 +3350,15 @@ packages: fill-range: 7.0.1 dev: true - /browserslist@4.21.10: - resolution: {integrity: sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - dependencies: - caniuse-lite: 1.0.30001525 - electron-to-chromium: 1.4.508 - node-releases: 2.0.13 - update-browserslist-db: 1.0.11(browserslist@4.21.10) - dev: true - - /browserslist@4.21.9: - resolution: {integrity: sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==} + /browserslist@4.22.0: + resolution: {integrity: sha512-v+Jcv64L2LbfTC6OnRcaxtqJNJuQAVhZKSJfR/6hn7lhnChUXl4amwVviqN1k411BB+3rRoKMitELRn1CojeRA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001516 - electron-to-chromium: 1.4.461 + caniuse-lite: 1.0.30001541 + electron-to-chromium: 1.4.534 node-releases: 2.0.13 - update-browserslist-db: 1.0.11(browserslist@4.21.9) + update-browserslist-db: 1.0.13(browserslist@4.22.0) dev: true /buffer-from@1.1.2: @@ -3615,10 +3367,12 @@ packages: /buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + requiresBuild: true dependencies: base64-js: 1.5.1 ieee754: 1.2.1 dev: true + optional: true /buffer@6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} @@ -3632,13 +3386,13 @@ packages: engines: {node: '>=6'} dev: true - /bundle-require@4.0.1(esbuild@0.18.13): - resolution: {integrity: sha512-9NQkRHlNdNpDBGmLpngF3EFDcwodhMUuLz9PaWYciVcQF9SE4LFjM2DB/xV1Li5JiuDMv7ZUWuC3rGbqR0MAXQ==} + /bundle-require@4.0.2(esbuild@0.18.20): + resolution: {integrity: sha512-jwzPOChofl67PSTW2SGubV9HBQAhhR2i6nskiOThauo9dzwDUgOWQScFVaJkjEfYX+UXiD+LEx8EblQMc2wIag==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} peerDependencies: esbuild: '>=0.17' dependencies: - esbuild: 0.18.13 + esbuild: 0.18.20 load-tsconfig: 0.2.5 dev: true @@ -3667,24 +3421,20 @@ packages: resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} dev: false - /caniuse-lite@1.0.30001516: - resolution: {integrity: sha512-Wmec9pCBY8CWbmI4HsjBeQLqDTqV91nFVR83DnZpYyRnPI1wePDsTg0bGLPC5VU/3OIZV1fmxEea1b+tFKe86g==} - - /caniuse-lite@1.0.30001525: - resolution: {integrity: sha512-/3z+wB4icFt3r0USMwxujAqRvaD/B7rvGTsKhbhSQErVrJvkZCLhgNLJxU8MevahQVH6hCU9FsHdNUFbiwmE7Q==} - dev: true + /caniuse-lite@1.0.30001541: + resolution: {integrity: sha512-bLOsqxDgTqUBkzxbNlSBt8annkDpQB9NdzdTbO2ooJ+eC/IQcvDspDc058g84ejCelF7vHUx57KIOjEecOHXaw==} /ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - /chai@4.3.7: - resolution: {integrity: sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==} + /chai@4.3.10: + resolution: {integrity: sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==} engines: {node: '>=4'} dependencies: assertion-error: 1.1.0 - check-error: 1.0.2 + check-error: 1.0.3 deep-eql: 4.1.3 - get-func-name: 2.0.0 + get-func-name: 2.0.2 loupe: 2.3.6 pathval: 1.1.1 type-detect: 4.0.8 @@ -3734,8 +3484,10 @@ packages: resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} dev: false - /check-error@1.0.2: - resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} + /check-error@1.0.3: + resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} + dependencies: + get-func-name: 2.0.2 dev: true /chokidar@3.5.3: @@ -3755,7 +3507,9 @@ packages: /chownr@1.1.4: resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} + requiresBuild: true dev: true + optional: true /ci-info@3.8.0: resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} @@ -3774,8 +3528,8 @@ packages: restore-cursor: 4.0.0 dev: true - /cli-spinners@2.9.0: - resolution: {integrity: sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g==} + /cli-spinners@2.9.1: + resolution: {integrity: sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==} engines: {node: '>=6'} dev: true @@ -3800,21 +3554,15 @@ packages: wrap-ansi: 7.0.0 dev: true - /clsx@1.2.1: - resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} - engines: {node: '>=6'} - dev: false - /clsx@2.0.0: resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} engines: {node: '>=6'} - dev: true /code-red@1.0.4: resolution: {integrity: sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 - '@types/estree': 1.0.1 + '@types/estree': 1.0.2 acorn: 8.10.0 estree-walker: 3.0.3 periscopic: 3.1.0 @@ -3839,18 +3587,22 @@ packages: /color-string@1.9.1: resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + requiresBuild: true dependencies: color-name: 1.1.4 simple-swizzle: 0.2.2 dev: true + optional: true /color@4.2.3: resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} engines: {node: '>=12.5.0'} + requiresBuild: true dependencies: color-convert: 2.0.1 color-string: 1.9.1 dev: true + optional: true /colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} @@ -3890,8 +3642,8 @@ packages: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} dev: true - /concurrently@8.2.0: - resolution: {integrity: sha512-nnLMxO2LU492mTUj9qX/az/lESonSZu81UznYDoXtz1IQf996ixVqPAgHXwvHiHCAef/7S8HIK+fTFK7Ifk8YA==} + /concurrently@8.2.1: + resolution: {integrity: sha512-nVraf3aXOpIcNud5pB9M82p1tynmZkrSGQ1p6X/VY8cJ+2LMVqAgXsJxYYefACSHbTYlm92O1xuhdGTjwoEvbQ==} engines: {node: ^14.13.0 || >=16.0.0} hasBin: true dependencies: @@ -3906,8 +3658,8 @@ packages: yargs: 17.7.2 dev: true - /convert-source-map@1.9.0: - resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + /convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} dev: true /cookie@0.5.0: @@ -3915,10 +3667,10 @@ packages: engines: {node: '>= 0.6'} dev: true - /core-js-compat@3.31.1: - resolution: {integrity: sha512-wIDWd2s5/5aJSdpOJHfSibxNODxoGoWOBHt8JSPB41NOE94M7kuTPZCYLOlTtuoXTsBPKobpJ6T+y0SSy5L9SA==} + /core-js-compat@3.32.2: + resolution: {integrity: sha512-+GjlguTDINOijtVRUxrQOv3kfu9rl+qPNdX2LTbJ/ZyVTuxK+ksVSAGX1nHstu4hrv1En/uPTtWgq2gI5wt4AQ==} dependencies: - browserslist: 4.21.9 + browserslist: 4.22.0 dev: true /cose-base@1.0.3: @@ -3987,32 +3739,38 @@ packages: /csstype@3.1.2: resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} - /cytoscape-cose-bilkent@4.1.0(cytoscape@3.25.0): + /cytoscape-cose-bilkent@4.1.0(cytoscape@3.26.0): resolution: {integrity: sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==} peerDependencies: cytoscape: ^3.2.0 dependencies: cose-base: 1.0.3 - cytoscape: 3.25.0 + cytoscape: 3.26.0 dev: false - /cytoscape-fcose@2.2.0(cytoscape@3.25.0): + /cytoscape-fcose@2.2.0(cytoscape@3.26.0): resolution: {integrity: sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==} peerDependencies: cytoscape: ^3.2.0 dependencies: cose-base: 2.2.0 - cytoscape: 3.25.0 + cytoscape: 3.26.0 dev: false - /cytoscape@3.25.0: - resolution: {integrity: sha512-7MW3Iz57mCUo6JQCho6CmPBCbTlJr7LzyEtIkutG255HLVd4XuBg2I9BkTZLI/e4HoaOB/BiAzXuQybQ95+r9Q==} + /cytoscape@3.26.0: + resolution: {integrity: sha512-IV+crL+KBcrCnVVUCZW+zRRRFUZQcrtdOPXki+o4CFUWLdAEYvuZLcBSJC9EBK++suamERKzeY7roq2hdovV3w==} engines: {node: '>=0.10'} dependencies: heap: 0.2.7 lodash: 4.17.21 dev: false + /d3-array@2.12.1: + resolution: {integrity: sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==} + dependencies: + internmap: 1.0.1 + dev: false + /d3-array@3.2.4: resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==} engines: {node: '>=12'} @@ -4130,6 +3888,10 @@ packages: d3-color: 3.1.0 dev: false + /d3-path@1.0.9: + resolution: {integrity: sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==} + dev: false + /d3-path@3.1.0: resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==} engines: {node: '>=12'} @@ -4150,6 +3912,13 @@ packages: engines: {node: '>=12'} dev: false + /d3-sankey@0.12.3: + resolution: {integrity: sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==} + dependencies: + d3-array: 2.12.1 + d3-shape: 1.3.7 + dev: false + /d3-scale-chromatic@3.0.0: resolution: {integrity: sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==} engines: {node: '>=12'} @@ -4174,6 +3943,12 @@ packages: engines: {node: '>=12'} dev: false + /d3-shape@1.3.7: + resolution: {integrity: sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==} + dependencies: + d3-path: 1.0.9 + dev: false + /d3-shape@3.2.0: resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==} engines: {node: '>=12'} @@ -4272,13 +4047,35 @@ packages: resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} engines: {node: '>=0.11'} dependencies: - '@babel/runtime': 7.22.6 + '@babel/runtime': 7.23.1 dev: true - /dayjs@1.11.9: - resolution: {integrity: sha512-QvzAURSbQ0pKdIye2txOzNaHmxtUBXerpY0FJsFXUMKbIZeFm5ht1LS/jFsrncjnmtv8HsG0W2g6c0zUjZWmpA==} + /dayjs@1.11.10: + resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==} dev: false + /debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.0.0 + dev: true + + /debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.3 + dev: true + /debug@4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} @@ -4298,9 +4095,11 @@ packages: /decompress-response@6.0.0: resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} engines: {node: '>=10'} + requiresBuild: true dependencies: mimic-response: 3.1.0 dev: true + optional: true /dedent-js@1.0.1: resolution: {integrity: sha512-OUepMozQULMLUmhxS95Vudo0jb0UchLimi3+pQ2plj61Fcy8axbP9hbiD4Sz6DPqn6XG3kfmziVfQ1rSys5AJQ==} @@ -4316,7 +4115,9 @@ packages: /deep-extend@0.6.0: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} + requiresBuild: true dev: true + optional: true /deepmerge@4.3.1: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} @@ -4336,18 +4137,26 @@ packages: /detect-libc@2.0.2: resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} engines: {node: '>=8'} + requiresBuild: true dev: true + optional: true /devalue@4.3.2: resolution: {integrity: sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==} dev: true + /devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + dependencies: + dequal: 2.0.3 + dev: false + /didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} dev: true - /diff-sequences@29.4.3: - resolution: {integrity: sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==} + /diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true @@ -4366,8 +4175,8 @@ packages: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} dev: true - /dompurify@3.0.3: - resolution: {integrity: sha512-axQ9zieHLnAnHh0sfAamKYiqXMJAVwu+LM/alQ7WDagoWessyWvMSFyW65CqF3owufNu8HBcE4cM2Vflu7YWcQ==} + /dompurify@3.0.6: + resolution: {integrity: sha512-ilkD8YEnnGh1zJ240uJsW7AzE+2qpbOUYjacomn3AvJ6J4JhKGSZ2nh4wUIXPZrEPppaCLx5jFe8T89Rk8tQ7w==} dev: false /dset@3.1.2: @@ -4379,12 +4188,8 @@ packages: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} dev: true - /electron-to-chromium@1.4.461: - resolution: {integrity: sha512-1JkvV2sgEGTDXjdsaQCeSwYYuhLRphRpc+g6EHTFELJXEiznLt3/0pZ9JuAOQ5p2rI3YxKTbivtvajirIfhrEQ==} - dev: true - - /electron-to-chromium@1.4.508: - resolution: {integrity: sha512-FFa8QKjQK/A5QuFr2167myhMesGrhlOBD+3cYNxO9/S4XzHEXesyTD/1/xF644gC8buFPz3ca6G1LOQD0tZrrg==} + /electron-to-chromium@1.4.534: + resolution: {integrity: sha512-ikY7wAMtMt3jTnHsHG0YLl4MKJiKz2tgidenGSNgwUX2StBLNZ8VCxflD9tZK/ceTs4j8gDC9+6LQQ6iGkK04g==} dev: true /elkjs@0.8.2: @@ -4404,17 +4209,19 @@ packages: /end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + requiresBuild: true dependencies: once: 1.4.0 dev: true + optional: true /entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} dev: false - /es-module-lexer@1.3.0: - resolution: {integrity: sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==} + /es-module-lexer@1.3.1: + resolution: {integrity: sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==} dev: true /esbuild-android-64@0.15.18: @@ -4627,64 +4434,64 @@ packages: esbuild-windows-arm64: 0.15.18 dev: true - /esbuild@0.18.13: - resolution: {integrity: sha512-vhg/WR/Oiu4oUIkVhmfcc23G6/zWuEQKFS+yiosSHe4aN6+DQRXIfeloYGibIfVhkr4wyfuVsGNLr+sQU1rWWw==} + /esbuild@0.18.20: + resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.18.13 - '@esbuild/android-arm64': 0.18.13 - '@esbuild/android-x64': 0.18.13 - '@esbuild/darwin-arm64': 0.18.13 - '@esbuild/darwin-x64': 0.18.13 - '@esbuild/freebsd-arm64': 0.18.13 - '@esbuild/freebsd-x64': 0.18.13 - '@esbuild/linux-arm': 0.18.13 - '@esbuild/linux-arm64': 0.18.13 - '@esbuild/linux-ia32': 0.18.13 - '@esbuild/linux-loong64': 0.18.13 - '@esbuild/linux-mips64el': 0.18.13 - '@esbuild/linux-ppc64': 0.18.13 - '@esbuild/linux-riscv64': 0.18.13 - '@esbuild/linux-s390x': 0.18.13 - '@esbuild/linux-x64': 0.18.13 - '@esbuild/netbsd-x64': 0.18.13 - '@esbuild/openbsd-x64': 0.18.13 - '@esbuild/sunos-x64': 0.18.13 - '@esbuild/win32-arm64': 0.18.13 - '@esbuild/win32-ia32': 0.18.13 - '@esbuild/win32-x64': 0.18.13 - dev: true - - /esbuild@0.19.2: - resolution: {integrity: sha512-G6hPax8UbFakEj3hWO0Vs52LQ8k3lnBhxZWomUJDxfz3rZTLqF5k/FCzuNdLx2RbpBiQQF9H9onlDDH1lZsnjg==} + '@esbuild/android-arm': 0.18.20 + '@esbuild/android-arm64': 0.18.20 + '@esbuild/android-x64': 0.18.20 + '@esbuild/darwin-arm64': 0.18.20 + '@esbuild/darwin-x64': 0.18.20 + '@esbuild/freebsd-arm64': 0.18.20 + '@esbuild/freebsd-x64': 0.18.20 + '@esbuild/linux-arm': 0.18.20 + '@esbuild/linux-arm64': 0.18.20 + '@esbuild/linux-ia32': 0.18.20 + '@esbuild/linux-loong64': 0.18.20 + '@esbuild/linux-mips64el': 0.18.20 + '@esbuild/linux-ppc64': 0.18.20 + '@esbuild/linux-riscv64': 0.18.20 + '@esbuild/linux-s390x': 0.18.20 + '@esbuild/linux-x64': 0.18.20 + '@esbuild/netbsd-x64': 0.18.20 + '@esbuild/openbsd-x64': 0.18.20 + '@esbuild/sunos-x64': 0.18.20 + '@esbuild/win32-arm64': 0.18.20 + '@esbuild/win32-ia32': 0.18.20 + '@esbuild/win32-x64': 0.18.20 + dev: true + + /esbuild@0.19.4: + resolution: {integrity: sha512-x7jL0tbRRpv4QUyuDMjONtWFciygUxWaUM1kMX2zWxI0X2YWOt7MSA0g4UdeSiHM8fcYVzpQhKYOycZwxTdZkA==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.19.2 - '@esbuild/android-arm64': 0.19.2 - '@esbuild/android-x64': 0.19.2 - '@esbuild/darwin-arm64': 0.19.2 - '@esbuild/darwin-x64': 0.19.2 - '@esbuild/freebsd-arm64': 0.19.2 - '@esbuild/freebsd-x64': 0.19.2 - '@esbuild/linux-arm': 0.19.2 - '@esbuild/linux-arm64': 0.19.2 - '@esbuild/linux-ia32': 0.19.2 - '@esbuild/linux-loong64': 0.19.2 - '@esbuild/linux-mips64el': 0.19.2 - '@esbuild/linux-ppc64': 0.19.2 - '@esbuild/linux-riscv64': 0.19.2 - '@esbuild/linux-s390x': 0.19.2 - '@esbuild/linux-x64': 0.19.2 - '@esbuild/netbsd-x64': 0.19.2 - '@esbuild/openbsd-x64': 0.19.2 - '@esbuild/sunos-x64': 0.19.2 - '@esbuild/win32-arm64': 0.19.2 - '@esbuild/win32-ia32': 0.19.2 - '@esbuild/win32-x64': 0.19.2 + '@esbuild/android-arm': 0.19.4 + '@esbuild/android-arm64': 0.19.4 + '@esbuild/android-x64': 0.19.4 + '@esbuild/darwin-arm64': 0.19.4 + '@esbuild/darwin-x64': 0.19.4 + '@esbuild/freebsd-arm64': 0.19.4 + '@esbuild/freebsd-x64': 0.19.4 + '@esbuild/linux-arm': 0.19.4 + '@esbuild/linux-arm64': 0.19.4 + '@esbuild/linux-ia32': 0.19.4 + '@esbuild/linux-loong64': 0.19.4 + '@esbuild/linux-mips64el': 0.19.4 + '@esbuild/linux-ppc64': 0.19.4 + '@esbuild/linux-riscv64': 0.19.4 + '@esbuild/linux-s390x': 0.19.4 + '@esbuild/linux-x64': 0.19.4 + '@esbuild/netbsd-x64': 0.19.4 + '@esbuild/openbsd-x64': 0.19.4 + '@esbuild/sunos-x64': 0.19.4 + '@esbuild/win32-arm64': 0.19.4 + '@esbuild/win32-ia32': 0.19.4 + '@esbuild/win32-x64': 0.19.4 dev: true /escalade@3.1.1: @@ -4712,13 +4519,13 @@ packages: /estree-util-attach-comments@2.1.1: resolution: {integrity: sha512-+5Ba/xGGS6mnwFbXIuQiDPTbuTxuMCooq3arVv7gPZtYpjp+VXH/NkHAP35OOefPhNG/UGqU3vt/LTABwcHX0w==} dependencies: - '@types/estree': 1.0.1 + '@types/estree': 1.0.2 dev: false /estree-util-build-jsx@2.2.2: resolution: {integrity: sha512-m56vOXcOBuaF+Igpb9OPAy7f9w9OIkb5yhjsZuaPm7HoGi4oTOQi0h2+yZ+AtKklYFZ+rPC4n0wYCJCEU1ONqg==} dependencies: - '@types/estree-jsx': 1.0.0 + '@types/estree-jsx': 1.0.1 estree-util-is-identifier-name: 2.1.0 estree-walker: 3.0.3 dev: false @@ -4730,7 +4537,7 @@ packages: /estree-util-to-js@1.2.0: resolution: {integrity: sha512-IzU74r1PK5IMMGZXUVZbmiu4A1uhiPgW5hm1GjcOfr4ZzHaMPpLNJjR7HjXiIOzi25nZDrgFTobHTkV5Q6ITjA==} dependencies: - '@types/estree-jsx': 1.0.0 + '@types/estree-jsx': 1.0.1 astring: 1.8.6 source-map: 0.7.4 dev: false @@ -4745,8 +4552,8 @@ packages: /estree-util-visit@1.2.1: resolution: {integrity: sha512-xbgqcrkIVbIG+lI/gzbvd9SGTJL4zqJKBFttUl5pP27KhAjtMKbX/mQXJ7qgyXpMgVy/zvpm0xoQQaGL8OloOw==} dependencies: - '@types/estree-jsx': 1.0.0 - '@types/unist': 2.0.7 + '@types/estree-jsx': 1.0.1 + '@types/unist': 2.0.8 dev: false /estree-walker@2.0.2: @@ -4756,7 +4563,7 @@ packages: /estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} dependencies: - '@types/estree': 1.0.1 + '@types/estree': 1.0.2 /esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} @@ -4809,7 +4616,9 @@ packages: /expand-template@2.0.3: resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} engines: {node: '>=6'} + requiresBuild: true dev: true + optional: true /extend-shallow@2.0.1: resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} @@ -4822,7 +4631,9 @@ packages: /fast-fifo@1.3.2: resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} + requiresBuild: true dev: true + optional: true /fast-glob@3.3.1: resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} @@ -4883,13 +4694,15 @@ packages: resolution: {integrity: sha512-Rwix9pBtC1Nuy5wysTmKy+UjbDJpIfg8eHjw0rjZ1mX4GNLz1Bmd16uDpI3Gk1i70Fgcs8Csg2lPm8HULFg9DQ==} dev: false - /fraction.js@4.2.0: - resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} + /fraction.js@4.3.6: + resolution: {integrity: sha512-n2aZ9tNfYDwaHhvFTkhFErqOMIb8uyzSQ+vGJBjZyanAKZVbGUQ1sngfk9FdkBw7G26O7AgNjLcecLffD1c7eg==} dev: true /fs-constants@1.0.0: resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + requiresBuild: true dev: true + optional: true /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} @@ -4917,8 +4730,8 @@ packages: engines: {node: 6.* || 8.* || >= 10.*} dev: true - /get-func-name@2.0.0: - resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==} + /get-func-name@2.0.2: + resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} dev: true /get-stream@3.0.0: @@ -4951,7 +4764,9 @@ packages: /github-from-package@0.0.0: resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} + requiresBuild: true dev: true + optional: true /github-slugger@2.0.0: resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} @@ -5045,59 +4860,81 @@ packages: type-fest: 1.4.0 dev: false - /hast-util-from-dom@4.2.0: - resolution: {integrity: sha512-t1RJW/OpJbCAJQeKi3Qrj1cAOLA0+av/iPFori112+0X7R3wng+jxLA+kXec8K4szqPRGI8vPxbbpEYvvpwaeQ==} + /hast-util-from-dom@5.0.0: + resolution: {integrity: sha512-d6235voAp/XR3Hh5uy7aGLbM3S4KamdW0WEgOaU1YoewnuYw4HXb5eRtv9g65m/RFGEfUY1Mw4UqCc5Y8L4Stg==} dependencies: - hastscript: 7.2.0 + '@types/hast': 3.0.1 + hastscript: 8.0.0 web-namespaces: 2.0.1 dev: false - /hast-util-from-html-isomorphic@1.0.0: - resolution: {integrity: sha512-Yu480AKeOEN/+l5LA674a+7BmIvtDj24GvOt7MtQWuhzUwlaaRWdEPXAh3Qm5vhuthpAipFb2vTetKXWOjmTvw==} + /hast-util-from-html-isomorphic@2.0.0: + resolution: {integrity: sha512-zJfpXq44yff2hmE0XmwEOzdWin5xwH+QIhMLOScpX91e/NSGPsAzNCvLQDIEPyO2TXi+lBmU6hjLIhV8MwP2kw==} dependencies: - '@types/hast': 2.3.5 - hast-util-from-dom: 4.2.0 - hast-util-from-html: 1.0.2 - unist-util-remove-position: 4.0.2 + '@types/hast': 3.0.1 + hast-util-from-dom: 5.0.0 + hast-util-from-html: 2.0.1 + unist-util-remove-position: 5.0.0 dev: false - /hast-util-from-html@1.0.2: - resolution: {integrity: sha512-LhrTA2gfCbLOGJq2u/asp4kwuG0y6NhWTXiPKP+n0qNukKy7hc10whqqCFfyvIA1Q5U5d0sp9HhNim9gglEH4A==} + /hast-util-from-html@2.0.1: + resolution: {integrity: sha512-RXQBLMl9kjKVNkJTIO6bZyb2n+cUH8LFaSSzo82jiLT6Tfc+Pt7VQCS+/h3YwG4jaNE2TA2sdJisGWR+aJrp0g==} dependencies: - '@types/hast': 2.3.5 - hast-util-from-parse5: 7.1.2 + '@types/hast': 3.0.1 + devlop: 1.1.0 + hast-util-from-parse5: 8.0.1 parse5: 7.1.2 - vfile: 5.3.7 - vfile-message: 3.1.4 + vfile: 6.0.1 + vfile-message: 4.0.2 dev: false /hast-util-from-parse5@7.1.2: resolution: {integrity: sha512-Nz7FfPBuljzsN3tCQ4kCBKqdNhQE2l0Tn+X1ubgKBPRoiDIu1mL08Cfw4k7q71+Duyaw7DXDN+VTAp4Vh3oCOw==} dependencies: - '@types/hast': 2.3.5 - '@types/unist': 2.0.7 + '@types/hast': 2.3.6 + '@types/unist': 2.0.8 hastscript: 7.2.0 - property-information: 6.2.0 + property-information: 6.3.0 vfile: 5.3.7 vfile-location: 4.1.0 web-namespaces: 2.0.1 + dev: true + + /hast-util-from-parse5@8.0.1: + resolution: {integrity: sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==} + dependencies: + '@types/hast': 3.0.1 + '@types/unist': 3.0.0 + devlop: 1.1.0 + hastscript: 8.0.0 + property-information: 6.3.0 + vfile: 6.0.1 + vfile-location: 5.0.2 + web-namespaces: 2.0.1 + dev: false - /hast-util-is-element@2.1.3: - resolution: {integrity: sha512-O1bKah6mhgEq2WtVMk+Ta5K7pPMqsBBlmzysLdcwKVrqzZQ0CHqUPiIVspNhAG1rvxpvJjtGee17XfauZYKqVA==} + /hast-util-is-element@3.0.0: + resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} dependencies: - '@types/hast': 2.3.5 - '@types/unist': 2.0.7 + '@types/hast': 3.0.1 dev: false /hast-util-parse-selector@3.1.1: resolution: {integrity: sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==} dependencies: - '@types/hast': 2.3.5 + '@types/hast': 2.3.6 + dev: true + + /hast-util-parse-selector@4.0.0: + resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} + dependencies: + '@types/hast': 3.0.1 + dev: false /hast-util-raw@7.2.3: resolution: {integrity: sha512-RujVQfVsOrxzPOPSzZFiwofMArbQke6DJjnFfceiEbFh7S05CbPt0cYN+A5YeD3pso0JQk6O1aHBnx9+Pm2uqg==} dependencies: - '@types/hast': 2.3.5 + '@types/hast': 2.3.6 '@types/parse5': 6.0.3 hast-util-from-parse5: 7.1.2 hast-util-to-parse5: 7.1.0 @@ -5110,22 +4947,40 @@ packages: zwitch: 2.0.4 dev: true + /hast-util-raw@9.0.1: + resolution: {integrity: sha512-5m1gmba658Q+lO5uqL5YNGQWeh1MYWZbZmWrM5lncdcuiXuo5E2HT/CIOp0rLF8ksfSwiCVJ3twlgVRyTGThGA==} + dependencies: + '@types/hast': 3.0.1 + '@types/unist': 3.0.0 + '@ungap/structured-clone': 1.2.0 + hast-util-from-parse5: 8.0.1 + hast-util-to-parse5: 8.0.0 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.0.2 + parse5: 7.1.2 + unist-util-position: 5.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.1 + web-namespaces: 2.0.1 + zwitch: 2.0.4 + dev: false + /hast-util-to-estree@2.3.3: resolution: {integrity: sha512-ihhPIUPxN0v0w6M5+IiAZZrn0LH2uZomeWwhn7uP7avZC6TE7lIiEh2yBMPr5+zi1aUCXq6VoYRgs2Bw9xmycQ==} dependencies: - '@types/estree': 1.0.1 - '@types/estree-jsx': 1.0.0 - '@types/hast': 2.3.5 - '@types/unist': 2.0.7 + '@types/estree': 1.0.2 + '@types/estree-jsx': 1.0.1 + '@types/hast': 2.3.6 + '@types/unist': 2.0.8 comma-separated-tokens: 2.0.3 estree-util-attach-comments: 2.1.1 estree-util-is-identifier-name: 2.1.0 hast-util-whitespace: 2.0.1 mdast-util-mdx-expression: 1.3.2 mdast-util-mdxjs-esm: 1.3.1 - property-information: 6.2.0 + property-information: 6.3.0 space-separated-tokens: 2.0.2 - style-to-object: 0.4.1 + style-to-object: 0.4.2 unist-util-position: 4.0.4 zwitch: 2.0.4 transitivePeerDependencies: @@ -5135,14 +4990,14 @@ packages: /hast-util-to-html@8.0.4: resolution: {integrity: sha512-4tpQTUOr9BMjtYyNlt0P50mH7xj0Ks2xpo8M943Vykljf99HW6EzulIoJP1N3eKOSScEHzyzi9dm7/cn0RfGwA==} dependencies: - '@types/hast': 2.3.5 - '@types/unist': 2.0.7 + '@types/hast': 2.3.6 + '@types/unist': 2.0.8 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 + property-information: 6.3.0 space-separated-tokens: 2.0.2 stringify-entities: 4.0.3 zwitch: 2.0.4 @@ -5151,21 +5006,33 @@ packages: /hast-util-to-parse5@7.1.0: resolution: {integrity: sha512-YNRgAJkH2Jky5ySkIqFXTQiaqcAtJyVE+D5lkN6CdtOqrnkLfGYYrEcKuHOJZlp+MwjSwuD3fZuawI+sic/RBw==} dependencies: - '@types/hast': 2.3.5 + '@types/hast': 2.3.6 comma-separated-tokens: 2.0.3 - property-information: 6.2.0 + property-information: 6.3.0 space-separated-tokens: 2.0.2 web-namespaces: 2.0.1 zwitch: 2.0.4 dev: true - /hast-util-to-text@3.1.2: - resolution: {integrity: sha512-tcllLfp23dJJ+ju5wCCZHVpzsQQ43+moJbqVX3jNWPB7z/KFC4FyZD6R7y94cHL6MQ33YtMZL8Z0aIXXI4XFTw==} + /hast-util-to-parse5@8.0.0: + resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==} + dependencies: + '@types/hast': 3.0.1 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + property-information: 6.3.0 + space-separated-tokens: 2.0.2 + web-namespaces: 2.0.1 + zwitch: 2.0.4 + dev: false + + /hast-util-to-text@4.0.0: + resolution: {integrity: sha512-EWiE1FSArNBPUo1cKWtzqgnuRQwEeQbQtnFJRYV1hb1BWDgrAlBU0ExptvZMM/KSA82cDpm2sFGf3Dmc5Mza3w==} dependencies: - '@types/hast': 2.3.5 - '@types/unist': 2.0.7 - hast-util-is-element: 2.1.3 - unist-util-find-after: 4.0.1 + '@types/hast': 3.0.1 + '@types/unist': 3.0.0 + hast-util-is-element: 3.0.0 + unist-util-find-after: 5.0.0 dev: false /hast-util-whitespace@2.0.1: @@ -5174,11 +5041,22 @@ packages: /hastscript@7.2.0: resolution: {integrity: sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==} dependencies: - '@types/hast': 2.3.5 + '@types/hast': 2.3.6 comma-separated-tokens: 2.0.3 hast-util-parse-selector: 3.1.1 - property-information: 6.2.0 + property-information: 6.3.0 + space-separated-tokens: 2.0.2 + dev: true + + /hastscript@8.0.0: + resolution: {integrity: sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==} + dependencies: + '@types/hast': 3.0.1 + comma-separated-tokens: 2.0.3 + hast-util-parse-selector: 4.0.0 + property-information: 6.3.0 space-separated-tokens: 2.0.2 + dev: false /heap@0.2.7: resolution: {integrity: sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==} @@ -5201,6 +5079,10 @@ packages: resolution: {integrity: sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==} dev: true + /html-void-elements@3.0.0: + resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + dev: false + /http-cache-semantics@4.1.1: resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} dev: true @@ -5215,6 +5097,13 @@ packages: engines: {node: '>=16.17.0'} dev: true + /iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + dev: true + /iconv-lite@0.6.3: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} @@ -5248,12 +5137,18 @@ packages: /ini@1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + requiresBuild: true dev: true + optional: true /inline-style-parser@0.1.1: resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} dev: false + /internmap@1.0.1: + resolution: {integrity: sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==} + dev: false + /internmap@2.0.3: resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} engines: {node: '>=12'} @@ -5276,7 +5171,9 @@ packages: /is-arrayish@0.3.2: resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} + requiresBuild: true dev: true + optional: true /is-binary-path@2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} @@ -5296,12 +5193,6 @@ packages: builtin-modules: 3.3.0 dev: true - /is-core-module@2.12.1: - resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==} - dependencies: - has: 1.0.3 - dev: true - /is-core-module@2.13.0: resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==} dependencies: @@ -5343,6 +5234,14 @@ packages: resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} dev: false + /is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + dependencies: + is-docker: 3.0.0 + dev: true + /is-interactive@2.0.0: resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} engines: {node: '>=12'} @@ -5371,10 +5270,10 @@ packages: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} - /is-reference@3.0.1: - resolution: {integrity: sha512-baJJdQLiYaJdvFbJqXrcGv3WU3QCzBlUcI5QhbesIm6/xPsvmO+2CDoi/GMOFBQEQm+PXkwOPrp9KK5ozZsp2w==} + /is-reference@3.0.2: + resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} dependencies: - '@types/estree': 1.0.1 + '@types/estree': 1.0.2 /is-ssh@1.4.0: resolution: {integrity: sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==} @@ -5407,18 +5306,18 @@ packages: engines: {node: '>=12.13'} dev: true - /is-wsl@3.0.0: - resolution: {integrity: sha512-TQ7xXW/fTBaz/HhGSV779AC99ocpvb9qJPuPwyIea+F+Z+htcQ1wouAA0xEQaa4saVqyP8mwkoYp5efeM/4Gbg==} + /is-wsl@3.1.0: + resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} engines: {node: '>=16'} dependencies: - is-docker: 3.0.0 + is-inside-container: 1.0.0 dev: true /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - /jiti@1.19.1: - resolution: {integrity: sha512-oVhqoRDaBXf7sjkll95LHVS6Myyyb1zaunVwk4Z0+WPSW4gjS0pl01zYKHScTuyEhQsFxV5L4DR5r+YqSyqyyg==} + /jiti@1.20.0: + resolution: {integrity: sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA==} hasBin: true dev: true @@ -5560,6 +5459,10 @@ packages: resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} dev: false + /lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + dev: true + /lodash.sortby@4.7.0: resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} dev: true @@ -5587,13 +5490,13 @@ packages: /loupe@2.3.6: resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} dependencies: - get-func-name: 2.0.0 + get-func-name: 2.0.2 dev: true /lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} dependencies: - tslib: 2.6.0 + tslib: 2.6.2 dev: true /lru-cache@4.1.5: @@ -5616,13 +5519,6 @@ packages: yallist: 4.0.0 dev: true - /magic-string@0.30.1: - resolution: {integrity: sha512-mbVKXPmS0z0G4XqFDCTllmDQ6coZzn94aMlb0o/A4HEHJCKcanlDZwYJgwnkmgD3jyWhUgj9VsPrfd972yPffA==} - engines: {node: '>=12'} - dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 - dev: true - /magic-string@0.30.3: resolution: {integrity: sha512-B7xGbll2fG/VjP+SWg4sX3JynwIU0mjoTc6MPpKNuIvftk6u6vqhDnk1R80b8C2GBR6ywqy+1DcKBrevBg+bmw==} engines: {node: '>=12'} @@ -5640,21 +5536,29 @@ packages: /match-sorter@6.3.1: resolution: {integrity: sha512-mxybbo3pPNuA+ZuCUhm5bwNkXrJTbsk5VWbR5wiwz/GC6LIiegBGn2w3O08UG/jdbYLinw51fSQ5xNU1U3MgBw==} dependencies: - '@babel/runtime': 7.22.6 + '@babel/runtime': 7.23.1 remove-accents: 0.4.2 dev: false /mdast-util-definitions@5.1.2: resolution: {integrity: sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==} dependencies: - '@types/mdast': 3.0.12 - '@types/unist': 2.0.7 + '@types/mdast': 3.0.13 + '@types/unist': 2.0.8 unist-util-visit: 4.1.2 + /mdast-util-definitions@6.0.0: + resolution: {integrity: sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ==} + dependencies: + '@types/mdast': 4.0.1 + '@types/unist': 3.0.0 + unist-util-visit: 5.0.0 + dev: true + /mdast-util-find-and-replace@2.2.2: resolution: {integrity: sha512-MTtdFRz/eMDHXzeK6W3dO7mXUlF82Gom4y0oOgvHhh/HXZAGvIQDUvQ0SuUx+j2tv44b8xTHOm8K/9OoRFnXKw==} dependencies: - '@types/mdast': 3.0.12 + '@types/mdast': 3.0.13 escape-string-regexp: 5.0.0 unist-util-is: 5.2.1 unist-util-visit-parents: 5.1.3 @@ -5662,8 +5566,8 @@ packages: /mdast-util-from-markdown@1.3.1: resolution: {integrity: sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==} dependencies: - '@types/mdast': 3.0.12 - '@types/unist': 2.0.7 + '@types/mdast': 3.0.13 + '@types/unist': 2.0.8 decode-named-character-reference: 1.0.2 mdast-util-to-string: 3.2.0 micromark: 3.2.0 @@ -5677,10 +5581,29 @@ packages: transitivePeerDependencies: - supports-color + /mdast-util-from-markdown@2.0.0: + resolution: {integrity: sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==} + dependencies: + '@types/mdast': 4.0.1 + '@types/unist': 3.0.0 + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + mdast-util-to-string: 4.0.0 + micromark: 4.0.0 + micromark-util-decode-numeric-character-reference: 2.0.0 + micromark-util-decode-string: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + unist-util-stringify-position: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: false + /mdast-util-gfm-autolink-literal@1.0.3: resolution: {integrity: sha512-My8KJ57FYEy2W2LyNom4n3E7hKTuQk/0SES0u16tjA9Z3oFkF4RrC/hPAPgjlSpezsOvI8ObcXcElo92wn5IGA==} dependencies: - '@types/mdast': 3.0.12 + '@types/mdast': 3.0.13 ccount: 2.0.1 mdast-util-find-and-replace: 2.2.2 micromark-util-character: 1.2.0 @@ -5688,20 +5611,20 @@ packages: /mdast-util-gfm-footnote@1.0.2: resolution: {integrity: sha512-56D19KOGbE00uKVj3sgIykpwKL179QsVFwx/DCW0u/0+URsryacI4MAdNJl0dh+u2PSsD9FtxPFbHCzJ78qJFQ==} dependencies: - '@types/mdast': 3.0.12 + '@types/mdast': 3.0.13 mdast-util-to-markdown: 1.5.0 micromark-util-normalize-identifier: 1.1.0 /mdast-util-gfm-strikethrough@1.0.3: resolution: {integrity: sha512-DAPhYzTYrRcXdMjUtUjKvW9z/FNAMTdU0ORyMcbmkwYNbKocDpdk+PX1L1dQgOID/+vVs1uBQ7ElrBQfZ0cuiQ==} dependencies: - '@types/mdast': 3.0.12 + '@types/mdast': 3.0.13 mdast-util-to-markdown: 1.5.0 /mdast-util-gfm-table@1.0.7: resolution: {integrity: sha512-jjcpmNnQvrmN5Vx7y7lEc2iIOEytYv7rTvu+MeyAsSHTASGCCRA79Igg2uKssgOs1i1po8s3plW0sTu1wkkLGg==} dependencies: - '@types/mdast': 3.0.12 + '@types/mdast': 3.0.13 markdown-table: 3.0.3 mdast-util-from-markdown: 1.3.1 mdast-util-to-markdown: 1.5.0 @@ -5711,7 +5634,7 @@ packages: /mdast-util-gfm-task-list-item@1.0.2: resolution: {integrity: sha512-PFTA1gzfp1B1UaiJVyhJZA1rm0+Tzn690frc/L8vNX1Jop4STZgOE6bxUhnzdVSB+vm2GU1tIsuQcA9bxTQpMQ==} dependencies: - '@types/mdast': 3.0.12 + '@types/mdast': 3.0.13 mdast-util-to-markdown: 1.5.0 /mdast-util-gfm@2.0.2: @@ -5727,20 +5650,26 @@ packages: transitivePeerDependencies: - supports-color - /mdast-util-math@2.0.2: - resolution: {integrity: sha512-8gmkKVp9v6+Tgjtq6SYx9kGPpTf6FVYRa53/DLh479aldR9AyP48qeVOgNZ5X7QUK7nOy4yw7vg6mbiGcs9jWQ==} + /mdast-util-math@3.0.0: + resolution: {integrity: sha512-Tl9GBNeG/AhJnQM221bJR2HPvLOSnLE/T9cJI9tlc6zwQk2nPk/4f0cHkOdEixQPC/j8UtKDdITswvLAy1OZ1w==} dependencies: - '@types/mdast': 3.0.12 + '@types/hast': 3.0.1 + '@types/mdast': 4.0.1 + devlop: 1.1.0 longest-streak: 3.1.0 - mdast-util-to-markdown: 1.5.0 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + unist-util-remove-position: 5.0.0 + transitivePeerDependencies: + - supports-color dev: false /mdast-util-mdx-expression@1.3.2: resolution: {integrity: sha512-xIPmR5ReJDu/DHH1OoIT1HkuybIfRGYRywC+gJtI7qHjCJp/M9jrmBEJW22O8lskDWm562BX2W8TiAwRTb0rKA==} dependencies: - '@types/estree-jsx': 1.0.0 - '@types/hast': 2.3.5 - '@types/mdast': 3.0.12 + '@types/estree-jsx': 1.0.1 + '@types/hast': 2.3.6 + '@types/mdast': 3.0.13 mdast-util-from-markdown: 1.3.1 mdast-util-to-markdown: 1.5.0 transitivePeerDependencies: @@ -5750,10 +5679,10 @@ packages: /mdast-util-mdx-jsx@2.1.4: resolution: {integrity: sha512-DtMn9CmVhVzZx3f+optVDF8yFgQVt7FghCRNdlIaS3X5Bnym3hZwPbg/XW86vdpKjlc1PVj26SpnLGeJBXD3JA==} dependencies: - '@types/estree-jsx': 1.0.0 - '@types/hast': 2.3.5 - '@types/mdast': 3.0.12 - '@types/unist': 2.0.7 + '@types/estree-jsx': 1.0.1 + '@types/hast': 2.3.6 + '@types/mdast': 3.0.13 + '@types/unist': 2.0.8 ccount: 2.0.1 mdast-util-from-markdown: 1.3.1 mdast-util-to-markdown: 1.5.0 @@ -5781,9 +5710,9 @@ packages: /mdast-util-mdxjs-esm@1.3.1: resolution: {integrity: sha512-SXqglS0HrEvSdUEfoXFtcg7DRl7S2cwOXc7jkuusG472Mmjag34DUDeOJUZtl+BVnyeO1frIgVpHlNRWc2gk/w==} dependencies: - '@types/estree-jsx': 1.0.0 - '@types/hast': 2.3.5 - '@types/mdast': 3.0.12 + '@types/estree-jsx': 1.0.1 + '@types/hast': 2.3.6 + '@types/mdast': 3.0.13 mdast-util-from-markdown: 1.3.1 mdast-util-to-markdown: 1.5.0 transitivePeerDependencies: @@ -5793,14 +5722,21 @@ packages: /mdast-util-phrasing@3.0.1: resolution: {integrity: sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==} dependencies: - '@types/mdast': 3.0.12 + '@types/mdast': 3.0.13 unist-util-is: 5.2.1 + /mdast-util-phrasing@4.0.0: + resolution: {integrity: sha512-xadSsJayQIucJ9n053dfQwVu1kuXg7jCTdYsMK8rqzKZh52nLfSH/k0sAxE0u+pj/zKZX+o5wB+ML5mRayOxFA==} + dependencies: + '@types/mdast': 4.0.1 + unist-util-is: 6.0.0 + dev: false + /mdast-util-to-hast@12.3.0: resolution: {integrity: sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw==} dependencies: - '@types/hast': 2.3.5 - '@types/mdast': 3.0.12 + '@types/hast': 2.3.6 + '@types/mdast': 3.0.13 mdast-util-definitions: 5.1.2 micromark-util-sanitize-uri: 1.2.0 trim-lines: 3.0.1 @@ -5808,11 +5744,24 @@ packages: unist-util-position: 4.0.4 unist-util-visit: 4.1.2 + /mdast-util-to-hast@13.0.2: + resolution: {integrity: sha512-U5I+500EOOw9e3ZrclN3Is3fRpw8c19SMyNZlZ2IS+7vLsNzb2Om11VpIVOR+/0137GhZsFEF6YiKD5+0Hr2Og==} + dependencies: + '@types/hast': 3.0.1 + '@types/mdast': 4.0.1 + '@ungap/structured-clone': 1.2.0 + devlop: 1.1.0 + micromark-util-sanitize-uri: 2.0.0 + trim-lines: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit: 5.0.0 + dev: false + /mdast-util-to-markdown@1.5.0: resolution: {integrity: sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==} dependencies: - '@types/mdast': 3.0.12 - '@types/unist': 2.0.7 + '@types/mdast': 3.0.13 + '@types/unist': 2.0.8 longest-streak: 3.1.0 mdast-util-phrasing: 3.0.1 mdast-util-to-string: 3.2.0 @@ -5820,10 +5769,29 @@ packages: unist-util-visit: 4.1.2 zwitch: 2.0.4 + /mdast-util-to-markdown@2.1.0: + resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} + dependencies: + '@types/mdast': 4.0.1 + '@types/unist': 3.0.0 + longest-streak: 3.1.0 + mdast-util-phrasing: 4.0.0 + mdast-util-to-string: 4.0.0 + micromark-util-decode-string: 2.0.0 + unist-util-visit: 5.0.0 + zwitch: 2.0.4 + dev: false + /mdast-util-to-string@3.2.0: resolution: {integrity: sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==} dependencies: - '@types/mdast': 3.0.12 + '@types/mdast': 3.0.13 + + /mdast-util-to-string@4.0.0: + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + dependencies: + '@types/mdast': 4.0.1 + dev: false /mdn-data@2.0.30: resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} @@ -5844,17 +5812,20 @@ packages: engines: {node: '>= 8'} dev: true - /mermaid@10.2.4: - resolution: {integrity: sha512-zHGjEI7lBvWZX+PQYmlhSA2p40OzW6QbGodTCSzDeVpqaTnyAC+2sRGqrpXO+uQk3CnoeClHQPraQUMStdqy2g==} + /mermaid@10.4.0: + resolution: {integrity: sha512-4QCQLp79lvz7UZxow5HUX7uWTPJOaQBVExduo91tliXC7v78i6kssZOPHxLL+Xs30KU72cpPn3g3imw/xm/gaw==} dependencies: - '@braintree/sanitize-url': 6.0.2 - cytoscape: 3.25.0 - cytoscape-cose-bilkent: 4.1.0(cytoscape@3.25.0) - cytoscape-fcose: 2.2.0(cytoscape@3.25.0) + '@braintree/sanitize-url': 6.0.4 + '@types/d3-scale': 4.0.5 + '@types/d3-scale-chromatic': 3.0.0 + cytoscape: 3.26.0 + cytoscape-cose-bilkent: 4.1.0(cytoscape@3.26.0) + cytoscape-fcose: 2.2.0(cytoscape@3.26.0) d3: 7.8.5 + d3-sankey: 0.12.3 dagre-d3-es: 7.0.10 - dayjs: 1.11.9 - dompurify: 3.0.3 + dayjs: 1.11.10 + dompurify: 3.0.6 elkjs: 0.8.2 khroma: 2.0.0 lodash-es: 4.17.21 @@ -5862,7 +5833,7 @@ packages: non-layered-tidy-tree-layout: 2.0.2 stylis: 4.3.0 ts-dedent: 2.2.0 - uuid: 9.0.0 + uuid: 9.0.1 web-worker: 1.2.0 transitivePeerDependencies: - supports-color @@ -5888,6 +5859,27 @@ packages: micromark-util-types: 1.1.0 uvu: 0.5.6 + /micromark-core-commonmark@2.0.0: + resolution: {integrity: sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA==} + dependencies: + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + micromark-factory-destination: 2.0.0 + micromark-factory-label: 2.0.0 + micromark-factory-space: 2.0.0 + micromark-factory-title: 2.0.0 + micromark-factory-whitespace: 2.0.0 + micromark-util-character: 2.0.1 + micromark-util-chunked: 2.0.0 + micromark-util-classify-character: 2.0.0 + micromark-util-html-tag-name: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-resolve-all: 2.0.0 + micromark-util-subtokenize: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + /micromark-extension-gfm-autolink-literal@1.0.5: resolution: {integrity: sha512-z3wJSLrDf8kRDOh2qBtoTRD53vJ+CWIyo7uyZuxf/JAbNJjiHsOpG1y5wxk8drtv3ETAHutCu6N3thkOOgueWg==} dependencies: @@ -5953,22 +5945,22 @@ packages: micromark-util-combine-extensions: 1.1.0 micromark-util-types: 1.1.0 - /micromark-extension-math@2.1.2: - resolution: {integrity: sha512-es0CcOV89VNS9wFmyn+wyFTKweXGW4CEvdaAca6SWRWPyYCbBisnjaHLjWO4Nszuiud84jCpkHsqAJoa768Pvg==} + /micromark-extension-math@3.0.0: + resolution: {integrity: sha512-iJ2Q28vBoEovLN5o3GO12CpqorQRYDPT+p4zW50tGwTfJB+iv/VnB6Ini+gqa24K97DwptMBBIvVX6Bjk49oyQ==} dependencies: - '@types/katex': 0.16.1 + '@types/katex': 0.16.3 + devlop: 1.1.0 katex: 0.16.8 - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 dev: false /micromark-extension-mdx-expression@1.0.8: resolution: {integrity: sha512-zZpeQtc5wfWKdzDsHRBY003H2Smg+PUi2REhqgIhdzAa5xonhP03FcXxqFSerFiNUr5AWmHpaNPQTBVOS4lrXw==} dependencies: - '@types/estree': 1.0.1 + '@types/estree': 1.0.2 micromark-factory-mdx-expression: 1.0.9 micromark-factory-space: 1.1.0 micromark-util-character: 1.2.0 @@ -5982,7 +5974,7 @@ packages: resolution: {integrity: sha512-gPH+9ZdmDflbu19Xkb8+gheqEDqkSpdCEubQyxuz/Hn8DOXiXvrXeikOoBA71+e8Pfi0/UYmU3wW3H58kr7akA==} dependencies: '@types/acorn': 4.0.6 - '@types/estree': 1.0.1 + '@types/estree': 1.0.2 estree-util-is-identifier-name: 2.1.0 micromark-factory-mdx-expression: 1.0.9 micromark-factory-space: 1.1.0 @@ -6002,7 +5994,7 @@ packages: /micromark-extension-mdxjs-esm@1.0.5: resolution: {integrity: sha512-xNRBw4aoURcyz/S69B19WnZAkWJMxHMT5hE36GtDAyhoyn/8TuAeqjFJQlwk+MKQsUD7b3l7kFX+vlfVWgcX1w==} dependencies: - '@types/estree': 1.0.1 + '@types/estree': 1.0.2 micromark-core-commonmark: 1.1.0 micromark-util-character: 1.2.0 micromark-util-events-to-acorn: 1.2.3 @@ -6033,6 +6025,14 @@ packages: micromark-util-symbol: 1.1.0 micromark-util-types: 1.1.0 + /micromark-factory-destination@2.0.0: + resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==} + dependencies: + micromark-util-character: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + /micromark-factory-label@1.1.0: resolution: {integrity: sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==} dependencies: @@ -6041,10 +6041,19 @@ packages: micromark-util-types: 1.1.0 uvu: 0.5.6 + /micromark-factory-label@2.0.0: + resolution: {integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==} + dependencies: + devlop: 1.1.0 + micromark-util-character: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + /micromark-factory-mdx-expression@1.0.9: resolution: {integrity: sha512-jGIWzSmNfdnkJq05c7b0+Wv0Kfz3NJ3N4cBjnbO4zjXIlxJr+f8lk+5ZmwFvqdAbUy2q6B5rCY//g0QAAaXDWA==} dependencies: - '@types/estree': 1.0.1 + '@types/estree': 1.0.2 micromark-util-character: 1.2.0 micromark-util-events-to-acorn: 1.2.3 micromark-util-symbol: 1.1.0 @@ -6060,6 +6069,13 @@ packages: micromark-util-character: 1.2.0 micromark-util-types: 1.1.0 + /micromark-factory-space@2.0.0: + resolution: {integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==} + dependencies: + micromark-util-character: 2.0.1 + micromark-util-types: 2.0.0 + dev: false + /micromark-factory-title@1.1.0: resolution: {integrity: sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==} dependencies: @@ -6068,6 +6084,15 @@ packages: micromark-util-symbol: 1.1.0 micromark-util-types: 1.1.0 + /micromark-factory-title@2.0.0: + resolution: {integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==} + dependencies: + micromark-factory-space: 2.0.0 + micromark-util-character: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + /micromark-factory-whitespace@1.1.0: resolution: {integrity: sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==} dependencies: @@ -6076,17 +6101,39 @@ packages: micromark-util-symbol: 1.1.0 micromark-util-types: 1.1.0 + /micromark-factory-whitespace@2.0.0: + resolution: {integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==} + dependencies: + micromark-factory-space: 2.0.0 + micromark-util-character: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + /micromark-util-character@1.2.0: resolution: {integrity: sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==} dependencies: micromark-util-symbol: 1.1.0 micromark-util-types: 1.1.0 + /micromark-util-character@2.0.1: + resolution: {integrity: sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==} + dependencies: + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + /micromark-util-chunked@1.1.0: resolution: {integrity: sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==} dependencies: micromark-util-symbol: 1.1.0 + /micromark-util-chunked@2.0.0: + resolution: {integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==} + dependencies: + micromark-util-symbol: 2.0.0 + dev: false + /micromark-util-classify-character@1.1.0: resolution: {integrity: sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==} dependencies: @@ -6094,17 +6141,38 @@ packages: micromark-util-symbol: 1.1.0 micromark-util-types: 1.1.0 + /micromark-util-classify-character@2.0.0: + resolution: {integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==} + dependencies: + micromark-util-character: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + /micromark-util-combine-extensions@1.1.0: resolution: {integrity: sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==} dependencies: micromark-util-chunked: 1.1.0 micromark-util-types: 1.1.0 + /micromark-util-combine-extensions@2.0.0: + resolution: {integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==} + dependencies: + micromark-util-chunked: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + /micromark-util-decode-numeric-character-reference@1.1.0: resolution: {integrity: sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==} dependencies: micromark-util-symbol: 1.1.0 + /micromark-util-decode-numeric-character-reference@2.0.0: + resolution: {integrity: sha512-pIgcsGxpHEtTG/rPJRz/HOLSqp5VTuIIjXlPI+6JSDlK2oljApusG6KzpS8AF0ENUMCHlC/IBb5B9xdFiVlm5Q==} + dependencies: + micromark-util-symbol: 2.0.0 + dev: false + /micromark-util-decode-string@1.1.0: resolution: {integrity: sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==} dependencies: @@ -6113,15 +6181,28 @@ packages: micromark-util-decode-numeric-character-reference: 1.1.0 micromark-util-symbol: 1.1.0 + /micromark-util-decode-string@2.0.0: + resolution: {integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==} + dependencies: + decode-named-character-reference: 1.0.2 + micromark-util-character: 2.0.1 + micromark-util-decode-numeric-character-reference: 2.0.0 + micromark-util-symbol: 2.0.0 + dev: false + /micromark-util-encode@1.1.0: resolution: {integrity: sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==} + /micromark-util-encode@2.0.0: + resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==} + dev: false + /micromark-util-events-to-acorn@1.2.3: resolution: {integrity: sha512-ij4X7Wuc4fED6UoLWkmo0xJQhsktfNh1J0m8g4PbIMPlx+ek/4YdW5mvbye8z/aZvAPUoxgXHrwVlXAPKMRp1w==} dependencies: '@types/acorn': 4.0.6 - '@types/estree': 1.0.1 - '@types/unist': 2.0.7 + '@types/estree': 1.0.2 + '@types/unist': 2.0.8 estree-util-visit: 1.2.1 micromark-util-symbol: 1.1.0 micromark-util-types: 1.1.0 @@ -6132,16 +6213,32 @@ packages: /micromark-util-html-tag-name@1.2.0: resolution: {integrity: sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==} + /micromark-util-html-tag-name@2.0.0: + resolution: {integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==} + dev: false + /micromark-util-normalize-identifier@1.1.0: resolution: {integrity: sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==} dependencies: micromark-util-symbol: 1.1.0 + /micromark-util-normalize-identifier@2.0.0: + resolution: {integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==} + dependencies: + micromark-util-symbol: 2.0.0 + dev: false + /micromark-util-resolve-all@1.1.0: resolution: {integrity: sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==} dependencies: micromark-util-types: 1.1.0 + /micromark-util-resolve-all@2.0.0: + resolution: {integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==} + dependencies: + micromark-util-types: 2.0.0 + dev: false + /micromark-util-sanitize-uri@1.2.0: resolution: {integrity: sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==} dependencies: @@ -6149,6 +6246,14 @@ packages: micromark-util-encode: 1.1.0 micromark-util-symbol: 1.1.0 + /micromark-util-sanitize-uri@2.0.0: + resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==} + dependencies: + micromark-util-character: 2.0.1 + micromark-util-encode: 2.0.0 + micromark-util-symbol: 2.0.0 + dev: false + /micromark-util-subtokenize@1.1.0: resolution: {integrity: sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==} dependencies: @@ -6157,16 +6262,33 @@ packages: micromark-util-types: 1.1.0 uvu: 0.5.6 + /micromark-util-subtokenize@2.0.0: + resolution: {integrity: sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg==} + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + /micromark-util-symbol@1.1.0: resolution: {integrity: sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==} + /micromark-util-symbol@2.0.0: + resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==} + dev: false + /micromark-util-types@1.1.0: resolution: {integrity: sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==} + /micromark-util-types@2.0.0: + resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==} + dev: false + /micromark@3.2.0: resolution: {integrity: sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==} dependencies: - '@types/debug': 4.1.8 + '@types/debug': 4.1.9 debug: 4.3.4 decode-named-character-reference: 1.0.2 micromark-core-commonmark: 1.1.0 @@ -6186,6 +6308,30 @@ packages: transitivePeerDependencies: - supports-color + /micromark@4.0.0: + resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==} + dependencies: + '@types/debug': 4.1.9 + debug: 4.3.4 + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.0 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.0.1 + micromark-util-chunked: 2.0.0 + micromark-util-combine-extensions: 2.0.0 + micromark-util-decode-numeric-character-reference: 2.0.0 + micromark-util-encode: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-resolve-all: 2.0.0 + micromark-util-sanitize-uri: 2.0.0 + micromark-util-subtokenize: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + transitivePeerDependencies: + - supports-color + dev: false + /micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} @@ -6213,7 +6359,9 @@ packages: /mimic-response@3.1.0: resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} engines: {node: '>=10'} + requiresBuild: true dev: true + optional: true /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} @@ -6223,28 +6371,40 @@ packages: /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + requiresBuild: true dev: true + optional: true /mkdirp-classic@0.5.3: resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} + requiresBuild: true dev: true + optional: true - /mlly@1.4.0: - resolution: {integrity: sha512-ua8PAThnTwpprIaU47EPeZ/bPUVp2QYBbWMphUQpVdBI3Lgqzm5KZQ45Agm3YJedHXaIHl6pBGabaLSUPPSptg==} + /mlly@1.4.2: + resolution: {integrity: sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==} dependencies: acorn: 8.10.0 pathe: 1.1.1 pkg-types: 1.0.3 - ufo: 1.1.2 + ufo: 1.3.1 dev: true /mri@1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} + /ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + dev: true + /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + /ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + dev: true + /mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} dependencies: @@ -6260,6 +6420,20 @@ packages: /napi-build-utils@1.0.2: resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} + requiresBuild: true + dev: true + optional: true + + /needle@2.9.1: + resolution: {integrity: sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==} + engines: {node: '>= 4.4.x'} + hasBin: true + dependencies: + debug: 3.2.7 + iconv-lite: 0.4.24 + sax: 1.3.0 + transitivePeerDependencies: + - supports-color dev: true /next-mdx-remote@4.4.1(react-dom@18.2.0)(react@18.2.0): @@ -6279,52 +6453,49 @@ packages: - supports-color dev: false - /next-seo@6.1.0(next@13.4.10)(react-dom@18.2.0)(react@18.2.0): + /next-seo@6.1.0(next@13.5.3)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-iMBpFoJsR5zWhguHJvsoBDxDSmdYTHtnVPB1ij+CD0NReQCP78ZxxbdL9qkKIf4oEuZEqZkrjAQLB0bkII7RYA==} peerDependencies: next: ^8.1.1-canary.54 || >=9.0.0 react: '>=16.0.0' react-dom: '>=16.0.0' dependencies: - next: 13.4.10(react-dom@18.2.0)(react@18.2.0) + next: 13.5.3(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /next-themes@0.2.1(next@13.4.10)(react-dom@18.2.0)(react@18.2.0): + /next-themes@0.2.1(next@13.5.3)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-B+AKNfYNIzh0vqQQKqQItTS8evEouKD7H5Hj3kmuPERwddR2TxvDSFZuTj6T7Jfn1oyeUyJMydPl1Bkxkh0W7A==} peerDependencies: next: '*' react: '*' react-dom: '*' dependencies: - next: 13.4.10(react-dom@18.2.0)(react@18.2.0) + next: 13.5.3(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /next@13.4.10(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-4ep6aKxVTQ7rkUW2fBLhpBr/5oceCuf4KmlUpvG/aXuDTIf9mexNSpabUD6RWPspu6wiJJvozZREhXhueYO36A==} - engines: {node: '>=16.8.0'} + /next@13.5.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-4Nt4HRLYDW/yRpJ/QR2t1v63UOMS55A38dnWv3UDOWGezuY0ZyFO1ABNbD7mulVzs9qVhgy2+ppjdsANpKP1mg==} + engines: {node: '>=16.14.0'} hasBin: true peerDependencies: '@opentelemetry/api': ^1.1.0 - fibers: '>= 3.1.0' react: ^18.2.0 react-dom: ^18.2.0 sass: ^1.3.0 peerDependenciesMeta: '@opentelemetry/api': optional: true - fibers: - optional: true sass: optional: true dependencies: - '@next/env': 13.4.10 - '@swc/helpers': 0.5.1 + '@next/env': 13.5.3 + '@swc/helpers': 0.5.2 busboy: 1.6.0 - caniuse-lite: 1.0.30001516 + caniuse-lite: 1.0.30001541 postcss: 8.4.14 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -6332,82 +6503,84 @@ packages: watchpack: 2.4.0 zod: 3.21.4 optionalDependencies: - '@next/swc-darwin-arm64': 13.4.10 - '@next/swc-darwin-x64': 13.4.10 - '@next/swc-linux-arm64-gnu': 13.4.10 - '@next/swc-linux-arm64-musl': 13.4.10 - '@next/swc-linux-x64-gnu': 13.4.10 - '@next/swc-linux-x64-musl': 13.4.10 - '@next/swc-win32-arm64-msvc': 13.4.10 - '@next/swc-win32-ia32-msvc': 13.4.10 - '@next/swc-win32-x64-msvc': 13.4.10 + '@next/swc-darwin-arm64': 13.5.3 + '@next/swc-darwin-x64': 13.5.3 + '@next/swc-linux-arm64-gnu': 13.5.3 + '@next/swc-linux-arm64-musl': 13.5.3 + '@next/swc-linux-x64-gnu': 13.5.3 + '@next/swc-linux-x64-musl': 13.5.3 + '@next/swc-win32-arm64-msvc': 13.5.3 + '@next/swc-win32-ia32-msvc': 13.5.3 + '@next/swc-win32-x64-msvc': 13.5.3 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros dev: false - /nextra-theme-docs@2.10.0(next@13.4.10)(nextra@2.10.0)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-uXoqRoewbu0JoqQ1m67aIztWe9/nEhcSeHMimhLxZghKZxkYN0kTR5y5jmrwOHRPuJUTLL2YFwy1rvWJIZS2lw==} + /nextra-theme-docs@2.13.1(next@13.5.3)(nextra@2.13.1)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-mckNuKa0AmBbRdPCJ/OQ55KZx5MGH8moomMHYB3XVGXQqmXimOq1/2WZQiBdFx9u43KtfEvqZbQE8oGDIrfIsQ==} peerDependencies: next: '>=9.5.3' - nextra: 2.10.0 + nextra: 2.13.1 react: '>=16.13.1' react-dom: '>=16.13.1' dependencies: - '@headlessui/react': 1.7.15(react-dom@18.2.0)(react@18.2.0) + '@headlessui/react': 1.7.17(react-dom@18.2.0)(react@18.2.0) '@popperjs/core': 2.11.8 - clsx: 1.2.1 + clsx: 2.0.0 + escape-string-regexp: 5.0.0 flexsearch: 0.7.31 focus-visible: 5.2.0 git-url-parse: 13.1.0 intersection-observer: 0.12.2 match-sorter: 6.3.1 - next: 13.4.10(react-dom@18.2.0)(react@18.2.0) - next-seo: 6.1.0(next@13.4.10)(react-dom@18.2.0)(react@18.2.0) - next-themes: 0.2.1(next@13.4.10)(react-dom@18.2.0)(react@18.2.0) - nextra: 2.10.0(next@13.4.10)(react-dom@18.2.0)(react@18.2.0) + next: 13.5.3(react-dom@18.2.0)(react@18.2.0) + next-seo: 6.1.0(next@13.5.3)(react-dom@18.2.0)(react@18.2.0) + next-themes: 0.2.1(next@13.5.3)(react-dom@18.2.0)(react@18.2.0) + nextra: 2.13.1(next@13.5.3)(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - scroll-into-view-if-needed: 3.0.10 - zod: 3.21.4 + scroll-into-view-if-needed: 3.1.0 + zod: 3.22.2 dev: false - /nextra@2.10.0(next@13.4.10)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-euv93UnWpdth8slMRJLqMrWvCCzR/VTVH6DPrn1JW7hZS03c2lzG2q+fsiYULGiy/kFyysmlxd4Nx5KGB1Txwg==} + /nextra@2.13.1(next@13.5.3)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-FbHwI5EFkbvEWJZ2/ghyPmqd1AmW8f7qVZbF1ApcuvyW1r/Y9FdLLUJZtlUp8DvREgmSF53K2jX9tVPEfmLNIQ==} engines: {node: '>=16'} peerDependencies: next: '>=9.5.3' react: '>=16.13.1' react-dom: '>=16.13.1' dependencies: - '@headlessui/react': 1.7.15(react-dom@18.2.0)(react@18.2.0) + '@headlessui/react': 1.7.17(react-dom@18.2.0)(react@18.2.0) '@mdx-js/mdx': 2.3.0 '@mdx-js/react': 2.3.0(react@18.2.0) - '@napi-rs/simple-git': 0.1.8 - '@theguild/remark-mermaid': 0.0.4(react@18.2.0) - '@theguild/remark-npm2yarn': 0.1.1 - clsx: 1.2.1 + '@napi-rs/simple-git': 0.1.9 + '@theguild/remark-mermaid': 0.0.5(react@18.2.0) + '@theguild/remark-npm2yarn': 0.2.0 + clsx: 2.0.0 github-slugger: 2.0.0 graceful-fs: 4.2.11 gray-matter: 4.0.3 katex: 0.16.8 lodash.get: 4.4.2 - next: 13.4.10(react-dom@18.2.0)(react@18.2.0) + next: 13.5.3(react-dom@18.2.0)(react@18.2.0) next-mdx-remote: 4.4.1(react-dom@18.2.0)(react@18.2.0) p-limit: 3.1.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - rehype-katex: 6.0.3 - rehype-pretty-code: 0.9.11(shiki@0.14.3) + rehype-katex: 7.0.0 + rehype-pretty-code: 0.9.11(shiki@0.14.4) + rehype-raw: 7.0.0 remark-gfm: 3.0.1 - remark-math: 5.1.1 + remark-math: 6.0.0 remark-reading-time: 2.0.1 - shiki: 0.14.3 + shiki: 0.14.4 slash: 3.0.0 title: 3.5.3 unist-util-remove: 4.0.0 unist-util-visit: 5.0.0 - zod: 3.21.4 + zod: 3.22.2 transitivePeerDependencies: - supports-color dev: false @@ -6415,26 +6588,30 @@ packages: /nlcst-to-string@3.1.1: resolution: {integrity: sha512-63mVyqaqt0cmn2VcI2aH6kxe1rLAmSROqHMA0i4qqg1tidkfExgpb0FGMikMCn86mw5dFtBtEANfmSSK7TjNHw==} dependencies: - '@types/nlcst': 1.0.1 + '@types/nlcst': 1.0.2 dev: true /no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} dependencies: lower-case: 2.0.2 - tslib: 2.6.0 + tslib: 2.6.2 dev: true /node-abi@3.47.0: resolution: {integrity: sha512-2s6B2CWZM//kPgwnuI0KrYwNjfdByE25zvAaEpq9IH4zcNsarH8Ihu/UuX6XMPEogDAxkuUFeZn60pXNHAqn3A==} engines: {node: '>=10'} + requiresBuild: true dependencies: semver: 7.5.4 dev: true + optional: true /node-addon-api@6.1.0: resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==} + requiresBuild: true dev: true + optional: true /node-releases@2.0.13: resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} @@ -6475,9 +6652,9 @@ packages: path-key: 4.0.0 dev: true - /npm-to-yarn@2.0.0: - resolution: {integrity: sha512-/IbjiJ7vqbxfxJxAZ+QI9CCRjnIbvGxn5KQcSY9xHh0lMKc/Sgqmm7yp7KPmd6TiTZX5/KiSBKlkGHo59ucZbg==} - engines: {node: '>=6.0.0'} + /npm-to-yarn@2.1.0: + resolution: {integrity: sha512-2C1IgJLdJngq1bSER7K7CGFszRr9s2rijEwvENPEgI0eK9xlD3tNwDc0UJnRj7FIT2aydWm72jB88uVswAhXHA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: false /object-assign@4.1.1: @@ -6516,7 +6693,7 @@ packages: dependencies: chalk: 5.3.0 cli-cursor: 4.0.0 - cli-spinners: 2.9.0 + cli-spinners: 2.9.1 is-interactive: 2.0.0 is-unicode-supported: 1.3.0 log-symbols: 5.1.0 @@ -6583,7 +6760,7 @@ packages: /parse-entities@4.0.1: resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==} dependencies: - '@types/unist': 2.0.7 + '@types/unist': 2.0.8 character-entities: 2.0.2 character-entities-legacy: 3.0.0 character-reference-invalid: 2.0.1 @@ -6631,7 +6808,7 @@ packages: resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} dependencies: no-case: 3.0.4 - tslib: 2.6.0 + tslib: 2.6.2 dev: true /path-exists@4.0.0: @@ -6683,9 +6860,9 @@ packages: /periscopic@3.1.0: resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} dependencies: - '@types/estree': 1.0.1 + '@types/estree': 1.0.2 estree-walker: 3.0.3 - is-reference: 3.0.1 + is-reference: 3.0.2 /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} @@ -6721,33 +6898,33 @@ packages: resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} dependencies: jsonc-parser: 3.2.0 - mlly: 1.4.0 + mlly: 1.4.2 pathe: 1.1.1 dev: true - /postcss-import@15.1.0(postcss@8.4.29): + /postcss-import@15.1.0(postcss@8.4.30): resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} engines: {node: '>=14.0.0'} peerDependencies: postcss: ^8.0.0 dependencies: - postcss: 8.4.29 + postcss: 8.4.30 postcss-value-parser: 4.2.0 read-cache: 1.0.0 - resolve: 1.22.2 + resolve: 1.22.6 dev: true - /postcss-js@4.0.1(postcss@8.4.29): + /postcss-js@4.0.1(postcss@8.4.30): resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} engines: {node: ^12 || ^14 || >= 16} peerDependencies: postcss: ^8.4.21 dependencies: camelcase-css: 2.0.1 - postcss: 8.4.29 + postcss: 8.4.30 dev: true - /postcss-load-config@4.0.1(postcss@8.4.29): + /postcss-load-config@4.0.1(postcss@8.4.30): resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} engines: {node: '>= 14'} peerDependencies: @@ -6760,17 +6937,17 @@ packages: optional: true dependencies: lilconfig: 2.1.0 - postcss: 8.4.29 - yaml: 2.3.1 + postcss: 8.4.30 + yaml: 2.3.2 dev: true - /postcss-nested@6.0.1(postcss@8.4.29): + /postcss-nested@6.0.1(postcss@8.4.30): resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} engines: {node: '>=12.0'} peerDependencies: postcss: ^8.2.14 dependencies: - postcss: 8.4.29 + postcss: 8.4.30 postcss-selector-parser: 6.0.13 dev: true @@ -6794,17 +6971,8 @@ packages: source-map-js: 1.0.2 dev: false - /postcss@8.4.26: - resolution: {integrity: sha512-jrXHFF8iTloAenySjM/ob3gSj7pCu0Ji49hnjqzsgSRa50hkWCKD0HQ+gMNJkW38jBI68MpAAg7ZWwHwX8NMMw==} - engines: {node: ^10 || ^12 || >=14} - dependencies: - nanoid: 3.3.6 - picocolors: 1.0.0 - source-map-js: 1.0.2 - dev: true - - /postcss@8.4.29: - resolution: {integrity: sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw==} + /postcss@8.4.30: + resolution: {integrity: sha512-7ZEao1g4kd68l97aWG/etQKPKq07us0ieSZ2TnFDk11i0ZfDW2AwKHYU8qv4MZKqN2fdBfg+7q0ES06UA73C1g==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.6 @@ -6816,6 +6984,7 @@ packages: resolution: {integrity: sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==} engines: {node: '>=10'} hasBin: true + requiresBuild: true dependencies: detect-libc: 2.0.2 expand-template: 2.0.3 @@ -6830,9 +6999,10 @@ packages: tar-fs: 2.1.1 tunnel-agent: 0.6.0 dev: true + optional: true - /preferred-pm@3.0.3: - resolution: {integrity: sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==} + /preferred-pm@3.1.2: + resolution: {integrity: sha512-nk7dKrcW8hfCZ4H6klWcdRknBOXWzNQByJ0oJyX97BOupsYD+FzLS4hflgEu/uPUEHZCuRfMxzCBsuWd7OzT8Q==} engines: {node: '>=10'} dependencies: find-up: 5.0.0 @@ -6841,11 +7011,11 @@ packages: which-pm: 2.0.0 dev: true - /pretty-format@29.6.1: - resolution: {integrity: sha512-7jRj+yXO0W7e4/tSJKoR7HRIHLPPjtNaUGG2xxKQnGvPNRkgWcQ0AZX6P4KBRJN4FcTBWb3sa7DVUJmocYuoog==} + /pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/schemas': 29.6.0 + '@jest/schemas': 29.6.3 ansi-styles: 5.2.0 react-is: 18.2.0 dev: true @@ -6855,6 +7025,16 @@ packages: engines: {node: '>=6'} dev: true + /probe-image-size@7.2.3: + resolution: {integrity: sha512-HubhG4Rb2UH8YtV4ba0Vp5bQ7L78RTONYu/ujmCu5nBI8wGv24s4E9xSKBi0N1MowRpxk76pFCpJtW0KPzOK0w==} + dependencies: + lodash.merge: 4.6.2 + needle: 2.9.1 + stream-parser: 0.3.1 + transitivePeerDependencies: + - supports-color + dev: true + /prompts@2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} @@ -6863,8 +7043,8 @@ packages: sisteransi: 1.0.5 dev: true - /property-information@6.2.0: - resolution: {integrity: sha512-kma4U7AFCTwpqq5twzC1YVIDXSqg6qQK6JN0smOw8fgRy1OkMi0CYSzFmsy6dnqSenamAtj0CyXMUJ1Mf6oROg==} + /property-information@6.3.0: + resolution: {integrity: sha512-gVNZ74nqhRMiIUYWGQdosYetaKc83x8oT41a0LlV3AAFCAZwCpg4vmGkq8t34+cUhp3cnM4XDiU/7xlgK7HGrg==} /protocols@2.0.1: resolution: {integrity: sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==} @@ -6876,10 +7056,12 @@ packages: /pump@3.0.0: resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + requiresBuild: true dependencies: end-of-stream: 1.4.4 once: 1.4.0 dev: true + optional: true /punycode@2.3.0: resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} @@ -6892,17 +7074,21 @@ packages: /queue-tick@1.0.1: resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} + requiresBuild: true dev: true + optional: true /rc@1.2.8: resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} hasBin: true + requiresBuild: true dependencies: deep-extend: 0.6.0 ini: 1.3.8 minimist: 1.2.8 strip-json-comments: 2.0.1 dev: true + optional: true /react-dom@18.2.0(react@18.2.0): resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} @@ -6972,8 +7158,8 @@ packages: resolution: {integrity: sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg==} dev: false - /regenerate-unicode-properties@10.1.0: - resolution: {integrity: sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==} + /regenerate-unicode-properties@10.1.1: + resolution: {integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==} engines: {node: '>=4'} dependencies: regenerate: 1.4.2 @@ -6983,13 +7169,13 @@ packages: resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} dev: true - /regenerator-runtime@0.13.11: - resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + /regenerator-runtime@0.14.0: + resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} - /regenerator-transform@0.15.1: - resolution: {integrity: sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==} + /regenerator-transform@0.15.2: + resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} dependencies: - '@babel/runtime': 7.22.6 + '@babel/runtime': 7.23.1 dev: true /regexpu-core@5.3.2: @@ -6998,7 +7184,7 @@ packages: dependencies: '@babel/regjsgen': 0.8.0 regenerate: 1.4.2 - regenerate-unicode-properties: 10.1.0 + regenerate-unicode-properties: 10.1.1 regjsparser: 0.9.1 unicode-match-property-ecmascript: 2.0.0 unicode-match-property-value-ecmascript: 2.1.0 @@ -7011,50 +7197,59 @@ packages: jsesc: 0.5.0 dev: true - /rehype-katex@6.0.3: - resolution: {integrity: sha512-ByZlRwRUcWegNbF70CVRm2h/7xy7jQ3R9LaY4VVSvjnoVWwWVhNL60DiZsBpC5tSzYQOCvDbzncIpIjPZWodZA==} + /rehype-katex@7.0.0: + resolution: {integrity: sha512-h8FPkGE00r2XKU+/acgqwWUlyzve1IiOKwsEkg4pDL3k48PiE0Pt+/uLtVHDVkN1yA4iurZN6UES8ivHVEQV6Q==} dependencies: - '@types/hast': 2.3.5 - '@types/katex': 0.14.0 - hast-util-from-html-isomorphic: 1.0.0 - hast-util-to-text: 3.1.2 + '@types/hast': 3.0.1 + '@types/katex': 0.16.3 + hast-util-from-html-isomorphic: 2.0.0 + hast-util-to-text: 4.0.0 katex: 0.16.8 - unist-util-visit: 4.1.2 + unist-util-visit-parents: 6.0.1 + vfile: 6.0.1 dev: false - /rehype-parse@8.0.4: - resolution: {integrity: sha512-MJJKONunHjoTh4kc3dsM1v3C9kGrrxvA3U8PxZlP2SjH8RNUSrb+lF7Y0KVaUDnGH2QZ5vAn7ulkiajM9ifuqg==} + /rehype-parse@8.0.5: + resolution: {integrity: sha512-Ds3RglaY/+clEX2U2mHflt7NlMA72KspZ0JLUJgBBLpRddBcEw3H8uYZQliQriku22NZpYMfjDdSgHcjxue24A==} dependencies: - '@types/hast': 2.3.5 + '@types/hast': 2.3.6 hast-util-from-parse5: 7.1.2 parse5: 6.0.1 unified: 10.1.2 dev: true - /rehype-pretty-code@0.9.11(shiki@0.14.3): + /rehype-pretty-code@0.9.11(shiki@0.14.4): resolution: {integrity: sha512-Eq90eCYXQJISktfRZ8PPtwc5SUyH6fJcxS8XOMnHPUQZBtC6RYo67gGlley9X2nR8vlniPj0/7oCDEYHKQa/oA==} engines: {node: '>=16'} peerDependencies: shiki: '*' dependencies: - '@types/hast': 2.3.5 + '@types/hast': 2.3.6 hash-obj: 4.0.0 parse-numeric-range: 1.3.0 - shiki: 0.14.3 + shiki: 0.14.4 dev: false /rehype-raw@6.1.1: resolution: {integrity: sha512-d6AKtisSRtDRX4aSPsJGTfnzrX2ZkHQLE5kiUuGOeEoLpbEulFF4hj0mLPbsa+7vmguDKOVVEQdHKDSwoaIDsQ==} dependencies: - '@types/hast': 2.3.5 + '@types/hast': 2.3.6 hast-util-raw: 7.2.3 unified: 10.1.2 dev: true + /rehype-raw@7.0.0: + resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==} + dependencies: + '@types/hast': 3.0.1 + hast-util-raw: 9.0.1 + vfile: 6.0.1 + dev: false + /rehype-stringify@9.0.4: resolution: {integrity: sha512-Uk5xu1YKdqobe5XpSskwPvo1XeHUUucWEQSl8hTrXt5selvca1e8K1EZ37E6YoZ4BT8BCqCdVfQW7OfHfthtVQ==} dependencies: - '@types/hast': 2.3.5 + '@types/hast': 2.3.6 hast-util-to-html: 8.0.4 unified: 10.1.2 dev: true @@ -7062,8 +7257,8 @@ packages: /rehype@12.0.1: resolution: {integrity: sha512-ey6kAqwLM3X6QnMDILJthGvG1m1ULROS9NT4uG9IDCuv08SFyLlreSuvOa//DgEvbXx62DS6elGVqusWhRUbgw==} dependencies: - '@types/hast': 2.3.5 - rehype-parse: 8.0.4 + '@types/hast': 2.3.6 + rehype-parse: 8.0.5 rehype-stringify: 9.0.4 unified: 10.1.2 dev: true @@ -7071,20 +7266,22 @@ packages: /remark-gfm@3.0.1: resolution: {integrity: sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==} dependencies: - '@types/mdast': 3.0.12 + '@types/mdast': 3.0.13 mdast-util-gfm: 2.0.2 micromark-extension-gfm: 2.0.3 unified: 10.1.2 transitivePeerDependencies: - supports-color - /remark-math@5.1.1: - resolution: {integrity: sha512-cE5T2R/xLVtfFI4cCePtiRn+e6jKMtFDR3P8V3qpv8wpKjwvHoBA4eJzvX+nVrnlNy0911bdGmuspCSwetfYHw==} + /remark-math@6.0.0: + resolution: {integrity: sha512-MMqgnP74Igy+S3WwnhQ7kqGlEerTETXMvJhrUzDikVZ2/uogJCb+WHUg97hK9/jcfc0dkD73s3LN8zU49cTEtA==} dependencies: - '@types/mdast': 3.0.12 - mdast-util-math: 2.0.2 - micromark-extension-math: 2.1.2 - unified: 10.1.2 + '@types/mdast': 4.0.1 + mdast-util-math: 3.0.0 + micromark-extension-math: 3.0.0 + unified: 11.0.3 + transitivePeerDependencies: + - supports-color dev: false /remark-mdx@2.3.0: @@ -7099,7 +7296,7 @@ packages: /remark-parse@10.0.2: resolution: {integrity: sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==} dependencies: - '@types/mdast': 3.0.12 + '@types/mdast': 3.0.13 mdast-util-from-markdown: 1.3.1 unified: 10.1.2 transitivePeerDependencies: @@ -7117,8 +7314,8 @@ packages: /remark-rehype@10.1.0: resolution: {integrity: sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==} dependencies: - '@types/hast': 2.3.5 - '@types/mdast': 3.0.12 + '@types/hast': 2.3.6 + '@types/mdast': 3.0.13 mdast-util-to-hast: 12.3.0 unified: 10.1.2 @@ -7145,17 +7342,8 @@ packages: engines: {node: '>=8'} dev: true - /resolve@1.22.2: - resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} - hasBin: true - dependencies: - is-core-module: 2.12.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - dev: true - - /resolve@1.22.4: - resolution: {integrity: sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==} + /resolve@1.22.6: + resolution: {integrity: sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==} hasBin: true dependencies: is-core-module: 2.13.0 @@ -7174,7 +7362,7 @@ packages: /retext-latin@3.1.0: resolution: {integrity: sha512-5MrD1tuebzO8ppsja5eEu+ZbBeUNCjoEarn70tkXOS7Bdsdf6tNahsv2bY0Z8VooFF6cw7/6S+d3yI/TMlMVVQ==} dependencies: - '@types/nlcst': 1.0.1 + '@types/nlcst': 1.0.2 parse-latin: 5.0.1 unherit: 3.0.1 unified: 10.1.2 @@ -7183,7 +7371,7 @@ packages: /retext-smartypants@5.2.0: resolution: {integrity: sha512-Do8oM+SsjrbzT2UNIKgheP0hgUQTDDQYyZaIY3kfq0pdFzoPk+ZClYJ+OERNXveog4xf1pZL4PfRxNoVL7a/jw==} dependencies: - '@types/nlcst': 1.0.1 + '@types/nlcst': 1.0.2 nlcst-to-string: 3.1.1 unified: 10.1.2 unist-util-visit: 4.1.2 @@ -7192,7 +7380,7 @@ packages: /retext-stringify@3.1.0: resolution: {integrity: sha512-767TLOaoXFXyOnjx/EggXlb37ZD2u4P1n0GJqVdpipqACsQP+20W+BNpMYrlJkq7hxffnFk+jc6mAK9qrbuB8w==} dependencies: - '@types/nlcst': 1.0.1 + '@types/nlcst': 1.0.2 nlcst-to-string: 3.1.1 unified: 10.1.2 dev: true @@ -7200,7 +7388,7 @@ packages: /retext@8.1.0: resolution: {integrity: sha512-N9/Kq7YTn6ZpzfiGW45WfEGJqFf1IM1q8OsRa1CGzIebCJBNCANDRmOrholiDRGKo/We7ofKR4SEvcGAWEMD3Q==} dependencies: - '@types/nlcst': 1.0.1 + '@types/nlcst': 1.0.2 retext-latin: 3.1.0 retext-stringify: 3.1.0 unified: 10.1.2 @@ -7218,33 +7406,25 @@ packages: /rollup-preset-solid@2.0.1: resolution: {integrity: sha512-CPJn3SqADlIxhAW3jwZuAFRyZcz7HPeUAz4f+6BzulxHnK4v6tgoTbMvk8vEsfsvHwiTmX93KHIKdf79aTdVSA==} dependencies: - '@babel/core': 7.22.9 - '@babel/preset-env': 7.22.9(@babel/core@7.22.9) - '@babel/preset-typescript': 7.22.5(@babel/core@7.22.9) - '@rollup/plugin-babel': 6.0.3(@babel/core@7.22.9)(rollup@3.26.3) - '@rollup/plugin-node-resolve': 15.1.0(rollup@3.26.3) - '@rollup/plugin-terser': 0.1.0(rollup@3.26.3) - babel-preset-solid: 1.7.7(@babel/core@7.22.9) + '@babel/core': 7.23.0 + '@babel/preset-env': 7.22.20(@babel/core@7.23.0) + '@babel/preset-typescript': 7.23.0(@babel/core@7.23.0) + '@rollup/plugin-babel': 6.0.3(@babel/core@7.23.0)(rollup@3.29.4) + '@rollup/plugin-node-resolve': 15.2.1(rollup@3.29.4) + '@rollup/plugin-terser': 0.1.0(rollup@3.29.4) + babel-preset-solid: 1.7.12(@babel/core@7.23.0) colorette: 2.0.20 esbuild: 0.15.18 merge-anything: 5.1.7 - rollup: 3.26.3 + rollup: 3.29.4 typescript: 4.9.5 transitivePeerDependencies: - '@types/babel__core' - supports-color dev: true - /rollup@3.26.3: - resolution: {integrity: sha512-7Tin0C8l86TkpcMtXvQu6saWH93nhG3dGQ1/+l5V2TDMceTxO7kDiK6GzbfLWNNxqJXm591PcEZUozZm51ogwQ==} - engines: {node: '>=14.18.0', npm: '>=8.0.0'} - hasBin: true - optionalDependencies: - fsevents: 2.3.3 - dev: true - - /rollup@3.28.1: - resolution: {integrity: sha512-R9OMQmIHJm9znrU3m3cpE8uhN0fGdXiawME7aZIpQqvpS/85+Vt1Hq1/yVIcYfOmaQiHjvXkQAoJukvLpau6Yw==} + /rollup@3.29.4: + resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: @@ -7264,7 +7444,7 @@ packages: /rxjs@7.8.1: resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} dependencies: - tslib: 2.6.0 + tslib: 2.6.2 dev: true /sade@1.8.1: @@ -7279,10 +7459,9 @@ packages: /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - dev: false - /satori@0.10.1: - resolution: {integrity: sha512-F4bTCkDp931tLb7+UCNPBuSQwXhikrUkI4fBQo6fA8lF0Evqqgg3nDyUpRktQpR5Ry1DIiIVqLyEwkAms87ykg==} + /satori@0.10.8: + resolution: {integrity: sha512-WlPLxgpx5kIyMuOO6qi98DhZGIbRk5XJRqENkt6D6gyDBWGyo3M5kcSl0X/oSFHUH+n4unlzwMejoPM47s4zug==} engines: {node: '>=16'} dependencies: '@shuding/opentype.js': 1.4.0-beta.0 @@ -7297,13 +7476,17 @@ packages: yoga-wasm-web: 0.3.3 dev: false + /sax@1.3.0: + resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==} + dev: true + /scheduler@0.23.0: resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} dependencies: loose-envify: 1.4.0 - /scroll-into-view-if-needed@3.0.10: - resolution: {integrity: sha512-t44QCeDKAPf1mtQH3fYpWz8IM/DyvHLjs8wUvvwMYxk5moOqCzrMSxK6HQVD0QVmVjXFavoFIPRVrMuJPKAvtg==} + /scroll-into-view-if-needed@3.1.0: + resolution: {integrity: sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ==} dependencies: compute-scroll-into-view: 3.0.3 dev: false @@ -7336,8 +7519,8 @@ packages: resolution: {integrity: sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==} dev: true - /sharp@0.32.5: - resolution: {integrity: sha512-0dap3iysgDkNaPOaOL4X/0akdu0ma62GcdC2NBQ+93eqpePdDdr2/LM0sFdDSMmN7yS+odyZtPsb7tx/cYBKnQ==} + /sharp@0.32.6: + resolution: {integrity: sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==} engines: {node: '>=14.15.0'} requiresBuild: true dependencies: @@ -7350,6 +7533,7 @@ packages: tar-fs: 3.0.4 tunnel-agent: 0.6.0 dev: true + optional: true /shebang-command@1.2.0: resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} @@ -7379,10 +7563,10 @@ packages: resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} dev: true - /shiki@0.14.3: - resolution: {integrity: sha512-U3S/a+b0KS+UkTyMjoNojvTgrBHjgp7L6ovhFVZsXmBGnVdQ4K4U9oK0z63w538S91ATngv1vXigHCSWOwnr+g==} + /shiki@0.14.4: + resolution: {integrity: sha512-IXCRip2IQzKwxArNNq1S+On4KPML3Yyn8Zzs/xRgcgOWIr8ntIK3IKzjFPfjy/7kt9ZMjc+FItfqHRBg8b6tNQ==} dependencies: - ansi-sequence-parser: 1.1.0 + ansi-sequence-parser: 1.1.1 jsonc-parser: 3.2.0 vscode-oniguruma: 1.7.0 vscode-textmate: 8.0.0 @@ -7401,21 +7585,27 @@ packages: /simple-concat@1.0.1: resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} + requiresBuild: true dev: true + optional: true /simple-get@4.0.1: resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} + requiresBuild: true dependencies: decompress-response: 6.0.0 once: 1.4.0 simple-concat: 1.0.1 dev: true + optional: true /simple-swizzle@0.2.2: resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + requiresBuild: true dependencies: is-arrayish: 0.3.2 dev: true + optional: true /sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} @@ -7425,21 +7615,21 @@ packages: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} - /solid-js@1.7.8: - resolution: {integrity: sha512-XHBWk1FvFd0JMKljko7FfhefJMTSgYEuVKcQ2a8hzRXfiuSJAGsrPPafqEo+f6l+e8Oe3cROSpIL6kbzjC1fjQ==} + /solid-js@1.7.12: + resolution: {integrity: sha512-QoyoOUKu14iLoGxjxWFIU8+/1kLT4edQ7mZESFPonsEXZ//VJtPKD8Ud1aTKzotj+MNWmSs9YzK6TdY+fO9Eww==} dependencies: csstype: 3.1.2 seroval: 0.5.1 - /solid-refresh@0.5.3(solid-js@1.7.8): + /solid-refresh@0.5.3(solid-js@1.7.12): resolution: {integrity: sha512-Otg5it5sjOdZbQZJnvo99TEBAr6J7PQ5AubZLNU6szZzg3RQQ5MX04oteBIIGDs0y2Qv8aXKm9e44V8z+UnFdw==} peerDependencies: solid-js: ^1.3 dependencies: - '@babel/generator': 7.22.10 - '@babel/helper-module-imports': 7.22.5 - '@babel/types': 7.22.11 - solid-js: 1.7.8 + '@babel/generator': 7.23.0 + '@babel/helper-module-imports': 7.22.15 + '@babel/types': 7.23.0 + solid-js: 1.7.12 dev: true /sort-keys@5.0.0: @@ -7491,8 +7681,8 @@ packages: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} dev: true - /std-env@3.3.3: - resolution: {integrity: sha512-Rz6yejtVyWnVjC1RFvNmYL10kgjC49EOghxWn0RFqlCHGFpQx+Xe7yW3I4ceK1SGrWIGMjD5Kbue8W/udkbMJg==} + /std-env@3.4.3: + resolution: {integrity: sha512-f9aPhy8fYBuMN+sNfakZV18U39PbalgjXG3lLB9WkaYTxijru61wb57V9wxxNthXM5Sd88ETBWi29qLAsHO52Q==} dev: true /stdin-discarder@0.1.0: @@ -7502,16 +7692,26 @@ packages: bl: 5.1.0 dev: true + /stream-parser@0.3.1: + resolution: {integrity: sha512-bJ/HgKq41nlKvlhccD5kaCr/P+Hu0wPNKPJOH7en+YrJu/9EgqUF+88w5Jb6KNcjOFMhfX4B2asfeAtIGuHObQ==} + dependencies: + debug: 2.6.9 + transitivePeerDependencies: + - supports-color + dev: true + /streamsearch@1.1.0: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} engines: {node: '>=10.0.0'} /streamx@2.15.1: resolution: {integrity: sha512-fQMzy2O/Q47rgwErk/eGeLu/roaFWV0jVsogDmrszM9uIw8L5OA+t+V93MgYlufNptfjmYR1tOMWhei/Eh7TQA==} + requiresBuild: true dependencies: fast-fifo: 1.3.2 queue-tick: 1.0.1 dev: true + optional: true /string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} @@ -7602,16 +7802,18 @@ packages: /strip-json-comments@2.0.1: resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} engines: {node: '>=0.10.0'} + requiresBuild: true dev: true + optional: true - /strip-literal@1.0.1: - resolution: {integrity: sha512-QZTsipNpa2Ppr6v1AmJHESqJ3Uz247MUS0OjrnnZjFAvEoWqxuyFuXn2xLgMtRnijJShAa1HL0gtJyUs7u7n3Q==} + /strip-literal@1.3.0: + resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} dependencies: acorn: 8.10.0 dev: true - /style-to-object@0.4.1: - resolution: {integrity: sha512-HFpbb5gr2ypci7Qw+IOhnP2zOU7e77b+rzM+wTzXzfi1PrtBCX0E7Pk4wL4iTLnhzZ+JgEGAhX81ebTg/aYjQw==} + /style-to-object@0.4.2: + resolution: {integrity: sha512-1JGpfPB3lo42ZX8cuPrheZbfQ6kqPPnPHlKMyeRYtfKD+0jG+QsXgXN57O/dvJlzlB2elI6dGmrPnl5VPQFPaA==} dependencies: inline-style-parser: 0.1.1 dev: false @@ -7637,8 +7839,8 @@ packages: resolution: {integrity: sha512-E87pIogpwUsUwXw7dNyU4QDjdgVMy52m+XEOPEKUn161cCzWjjhPSQhByfd1CcNvrOLnXQ6OnnZDwnJrz/Z4YQ==} dev: false - /sucrase@3.33.0: - resolution: {integrity: sha512-ARGC7vbufOHfpvyGcZZXFaXCMZ9A4fffOGC5ucOW7+WHDGlAe8LJdf3Jts1sWhDeiI1RSWrKy5Hodl+JWGdW2A==} + /sucrase@3.34.0: + resolution: {integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==} engines: {node: '>=8'} hasBin: true dependencies: @@ -7684,53 +7886,41 @@ packages: engines: {node: '>= 0.4'} dev: true - /svelte-hmr@0.15.3(svelte@4.2.0): + /svelte-hmr@0.15.3(svelte@4.2.1): resolution: {integrity: sha512-41snaPswvSf8TJUhlkoJBekRrABDXDMdpNpT2tfHIv4JuhgvHqLMhEPGtaQn0BmbNSTkuz2Ed20DF2eHw0SmBQ==} engines: {node: ^12.20 || ^14.13.1 || >= 16} peerDependencies: svelte: ^3.19.0 || ^4.0.0 dependencies: - svelte: 4.2.0 - dev: true - - /svelte2tsx@0.6.21(svelte@4.2.0)(typescript@5.1.6): - resolution: {integrity: sha512-v+vvbiy6WDmEQdIkJpvHYxJYG/obALfH0P6CTreYO350q/9+QmFTNCOJvx0O1o59Zpzx1Bqe+qlDxP/KtJSZEA==} - peerDependencies: - svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 - typescript: ^4.9.4 || ^5.0.0 - dependencies: - dedent-js: 1.0.1 - pascal-case: 3.1.2 - svelte: 4.2.0 - typescript: 5.1.6 + svelte: 4.2.1 dev: true - /svelte2tsx@0.6.21(svelte@4.2.0)(typescript@5.2.2): - resolution: {integrity: sha512-v+vvbiy6WDmEQdIkJpvHYxJYG/obALfH0P6CTreYO350q/9+QmFTNCOJvx0O1o59Zpzx1Bqe+qlDxP/KtJSZEA==} + /svelte2tsx@0.6.22(svelte@4.2.1)(typescript@5.2.2): + resolution: {integrity: sha512-eFCfz0juaWeanbwGeQV21kPMwH3LKhfrUYRy1PqRmlieuHvJs8VeK7CaoHJdpBZWCXba2cltHVdywJmwOGhbww==} peerDependencies: svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 typescript: ^4.9.4 || ^5.0.0 dependencies: dedent-js: 1.0.1 pascal-case: 3.1.2 - svelte: 4.2.0 + svelte: 4.2.1 typescript: 5.2.2 dev: true - /svelte@4.2.0: - resolution: {integrity: sha512-kVsdPjDbLrv74SmLSUzAsBGquMs4MPgWGkGLpH+PjOYnFOziAvENVzgJmyOCV2gntxE32aNm8/sqNKD6LbIpeQ==} + /svelte@4.2.1: + resolution: {integrity: sha512-LpLqY2Jr7cRxkrTc796/AaaoMLF/1ax7cto8Ot76wrvKQhrPmZ0JgajiWPmg9mTSDqO16SSLiD17r9MsvAPTmw==} engines: {node: '>=16'} dependencies: '@ampproject/remapping': 2.2.1 '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.18 + '@jridgewell/trace-mapping': 0.3.19 acorn: 8.10.0 aria-query: 5.3.0 axobject-query: 3.2.1 code-red: 1.0.4 css-tree: 2.3.1 estree-walker: 3.0.3 - is-reference: 3.0.1 + is-reference: 3.0.2 locate-character: 3.0.0 magic-string: 0.30.3 periscopic: 3.1.0 @@ -7748,44 +7938,49 @@ packages: fast-glob: 3.3.1 glob-parent: 6.0.2 is-glob: 4.0.3 - jiti: 1.19.1 + jiti: 1.20.0 lilconfig: 2.1.0 micromatch: 4.0.5 normalize-path: 3.0.0 object-hash: 3.0.0 picocolors: 1.0.0 - postcss: 8.4.29 - postcss-import: 15.1.0(postcss@8.4.29) - postcss-js: 4.0.1(postcss@8.4.29) - postcss-load-config: 4.0.1(postcss@8.4.29) - postcss-nested: 6.0.1(postcss@8.4.29) + postcss: 8.4.30 + postcss-import: 15.1.0(postcss@8.4.30) + postcss-js: 4.0.1(postcss@8.4.30) + postcss-load-config: 4.0.1(postcss@8.4.30) + postcss-nested: 6.0.1(postcss@8.4.30) postcss-selector-parser: 6.0.13 - resolve: 1.22.4 - sucrase: 3.33.0 + resolve: 1.22.6 + sucrase: 3.34.0 transitivePeerDependencies: - ts-node dev: true /tar-fs@2.1.1: resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} + requiresBuild: true dependencies: chownr: 1.1.4 mkdirp-classic: 0.5.3 pump: 3.0.0 tar-stream: 2.2.0 dev: true + optional: true /tar-fs@3.0.4: resolution: {integrity: sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==} + requiresBuild: true dependencies: mkdirp-classic: 0.5.3 pump: 3.0.0 tar-stream: 3.1.6 dev: true + optional: true /tar-stream@2.2.0: resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} engines: {node: '>=6'} + requiresBuild: true dependencies: bl: 4.1.0 end-of-stream: 1.4.4 @@ -7793,17 +7988,20 @@ packages: inherits: 2.0.4 readable-stream: 3.6.2 dev: true + optional: true /tar-stream@3.1.6: resolution: {integrity: sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==} + requiresBuild: true dependencies: b4a: 1.6.4 fast-fifo: 1.3.2 streamx: 2.15.1 dev: true + optional: true - /terser@5.19.1: - resolution: {integrity: sha512-27hxBUVdV6GoNg1pKQ7Z5cbR6V9txPVyBA+FQw3BaZ1Wuzvztce5p156DaP0NVZNrMZZ+6iG9Syf7WgMNKDg2Q==} + /terser@5.20.0: + resolution: {integrity: sha512-e56ETryaQDyebBwJIWYB2TT6f2EZ0fL0sW/JRXNMN26zZdKi2u/E/5my5lG6jNxym6qsrVXfFRmOdV42zlAgLQ==} engines: {node: '>=10'} hasBin: true dependencies: @@ -7830,12 +8028,12 @@ packages: resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==} dev: false - /tinybench@2.5.0: - resolution: {integrity: sha512-kRwSG8Zx4tjF9ZiyH4bhaebu+EDz1BOx9hOigYHlUW4xxI/wKIUQUqo018UlU4ar6ATPBsaMrdbKZ+tmPdohFA==} + /tinybench@2.5.1: + resolution: {integrity: sha512-65NKvSuAVDP/n4CqH+a9w2kTlLReS9vhsAP06MWx+/89nMinJyB2icyl58RIcqCmIggpojIGeuJGhjU1aGMBSg==} dev: true - /tinypool@0.6.0: - resolution: {integrity: sha512-FdswUUo5SxRizcBc6b1GSuLpLjisa8N8qMyYoP3rl+bym+QauhtJP5bvZY1ytt8krKGmMLYIRl36HBZfeAoqhQ==} + /tinypool@0.7.0: + resolution: {integrity: sha512-zSYNUlYSMhJ6Zdou4cJwo/p7w5nmAH17GRfU/ui3ctvjXFErXXkruT4MWW6poDeXgCaIBlGLrfU6TbTXxyGMww==} engines: {node: '>=14.0.0'} dev: true @@ -7901,18 +8099,18 @@ packages: resolution: {integrity: sha512-ZHqlstlQF449v8glscGRXzL6l2dZvASPCdXJRWG4gHEZlUVx2Jtmr+a2zeVG4LCsKhDXKRj5R3h0C/98UcVAQg==} dependencies: '@types/json5': 0.0.30 - '@types/resolve': 1.20.2 + '@types/resolve': 1.20.3 json5: 2.2.3 - resolve: 1.22.4 + resolve: 1.22.6 strip-bom: 4.0.0 type-fest: 0.13.1 dev: true - /tslib@2.6.0: - resolution: {integrity: sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==} + /tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - /tsup@7.1.0(typescript@5.1.6): - resolution: {integrity: sha512-mazl/GRAk70j8S43/AbSYXGgvRP54oQeX8Un4iZxzATHt0roW0t6HYDVZIXMw0ZQIpvr1nFMniIVnN5186lW7w==} + /tsup@7.2.0(typescript@5.2.2): + resolution: {integrity: sha512-vDHlczXbgUvY3rWvqFEbSqmC1L7woozbzngMqTtL2PGBODTtWlRwGDDawhvWzr5c1QjKe4OAKqJGfE1xeXUvtQ==} engines: {node: '>=16.14'} hasBin: true peerDependencies: @@ -7927,21 +8125,21 @@ packages: typescript: optional: true dependencies: - bundle-require: 4.0.1(esbuild@0.18.13) + bundle-require: 4.0.2(esbuild@0.18.20) cac: 6.7.14 chokidar: 3.5.3 debug: 4.3.4 - esbuild: 0.18.13 + esbuild: 0.18.20 execa: 5.1.1 globby: 11.1.0 joycon: 3.1.1 - postcss-load-config: 4.0.1(postcss@8.4.29) + postcss-load-config: 4.0.1(postcss@8.4.30) resolve-from: 5.0.0 - rollup: 3.28.1 + rollup: 3.29.4 source-map: 0.8.0-beta.0 - sucrase: 3.33.0 + sucrase: 3.34.0 tree-kill: 1.2.2 - typescript: 5.1.6 + typescript: 5.2.2 transitivePeerDependencies: - supports-color - ts-node @@ -7949,9 +8147,11 @@ packages: /tunnel-agent@0.6.0: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + requiresBuild: true dependencies: safe-buffer: 5.2.1 dev: true + optional: true /type-detect@4.0.8: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} @@ -7979,28 +8179,22 @@ packages: hasBin: true dev: true - /typescript@5.1.6: - resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} - engines: {node: '>=14.17'} - hasBin: true - dev: true - /typescript@5.2.2: resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} engines: {node: '>=14.17'} hasBin: true dev: true - /ufo@1.1.2: - resolution: {integrity: sha512-TrY6DsjTQQgyS3E3dBaOXf0TpPD8u9FVrVYmKVegJuFw51n/YB9XPt+U6ydzFG5ZIN7+DIjPbNmXoBj9esYhgQ==} + /ufo@1.3.1: + resolution: {integrity: sha512-uY/99gMLIOlJPwATcMVYfqDSxUR9//AUcgZMzwfSTJPDKzA1S8mX4VLqa+fiAtveraQUBCz4FFcwVZBGbwBXIw==} dev: true - /ultrahtml@1.4.0: - resolution: {integrity: sha512-2SbudS8oD4GNq4en+3ivp25JTCwP5O2soJhIBxGJrjojjLVaLcP84xVU6Xdf0wKMhZvr68rTtrXtO6uvEr2llQ==} + /ultrahtml@1.5.2: + resolution: {integrity: sha512-qh4mBffhlkiXwDAOxvSGxhL0QEQsTbnP9BozOK3OYPEGvPvdWzvAUaXNtUSMdNsKDtuyjEbyVUPFZ52SSLhLqw==} dev: true - /undici@5.23.0: - resolution: {integrity: sha512-1D7w+fvRsqlQ9GscLBwcAJinqcZGHUKjbOmXdlE/v8BvEGXjeWAax+341q44EuTcHXXnfyKNbKRq4Lg7OzhMmg==} + /undici@5.25.2: + resolution: {integrity: sha512-tch8RbCfn1UUH1PeVCXva4V8gDpGAud/w0WubD6sHC46vYQ3KDxL+xv1A2UxK0N6jrVedutuPHxe1XIoqerwMw==} engines: {node: '>=14.0'} dependencies: busboy: 1.6.0 @@ -8043,7 +8237,7 @@ packages: /unified@10.1.2: resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} dependencies: - '@types/unist': 2.0.7 + '@types/unist': 2.0.8 bail: 2.0.2 extend: 3.0.2 is-buffer: 2.0.5 @@ -8051,11 +8245,23 @@ packages: trough: 2.1.0 vfile: 5.3.7 - /unist-util-find-after@4.0.1: - resolution: {integrity: sha512-QO/PuPMm2ERxC6vFXEPtmAutOopy5PknD+Oq64gGwxKtk4xwo9Z97t9Av1obPmGU0IyTa6EKYUfTrK2QJS3Ozw==} + /unified@11.0.3: + resolution: {integrity: sha512-jlCV402P+YDcFcB2VcN/n8JasOddqIiaxv118wNBoZXEhOn+lYG7BR4Bfg2BwxvlK58dwbuH2w7GX2esAjL6Mg==} dependencies: - '@types/unist': 2.0.7 - unist-util-is: 5.2.1 + '@types/unist': 3.0.0 + bail: 2.0.2 + devlop: 1.1.0 + extend: 3.0.2 + is-plain-obj: 4.1.0 + trough: 2.1.0 + vfile: 6.0.1 + dev: false + + /unist-util-find-after@5.0.0: + resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==} + dependencies: + '@types/unist': 3.0.0 + unist-util-is: 6.0.0 dev: false /unist-util-generated@2.0.1: @@ -8064,39 +8270,51 @@ packages: /unist-util-is@5.2.1: resolution: {integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==} dependencies: - '@types/unist': 2.0.7 + '@types/unist': 2.0.8 /unist-util-is@6.0.0: resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} dependencies: '@types/unist': 3.0.0 - dev: false /unist-util-modify-children@3.1.1: resolution: {integrity: sha512-yXi4Lm+TG5VG+qvokP6tpnk+r1EPwyYL04JWDxLvgvPV40jANh7nm3udk65OOWquvbMDe+PL9+LmkxDpTv/7BA==} dependencies: - '@types/unist': 2.0.7 + '@types/unist': 2.0.8 array-iterate: 2.0.1 dev: true /unist-util-position-from-estree@1.1.2: resolution: {integrity: sha512-poZa0eXpS+/XpoQwGwl79UUdea4ol2ZuCYguVaJS4qzIOMDzbqz8a3erUCOmubSZkaOuGamb3tX790iwOIROww==} dependencies: - '@types/unist': 2.0.7 + '@types/unist': 2.0.8 dev: false /unist-util-position@4.0.4: resolution: {integrity: sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==} dependencies: - '@types/unist': 2.0.7 + '@types/unist': 2.0.8 + + /unist-util-position@5.0.0: + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} + dependencies: + '@types/unist': 3.0.0 + dev: false /unist-util-remove-position@4.0.2: resolution: {integrity: sha512-TkBb0HABNmxzAcfLf4qsIbFbaPDvMO6wa3b3j4VcEzFVaw1LBKwnW4/sRJ/atSLSzoIg41JWEdnE7N6DIhGDGQ==} dependencies: - '@types/unist': 2.0.7 + '@types/unist': 2.0.8 unist-util-visit: 4.1.2 dev: false + /unist-util-remove-position@5.0.0: + resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==} + dependencies: + '@types/unist': 3.0.0 + unist-util-visit: 5.0.0 + dev: false + /unist-util-remove@4.0.0: resolution: {integrity: sha512-b4gokeGId57UVRX/eVKej5gXqGlc9+trkORhFJpu9raqZkZhU0zm8Doi05+HaiBsMEIJowL+2WtQ5ItjsngPXg==} dependencies: @@ -8108,25 +8326,31 @@ packages: /unist-util-stringify-position@3.0.3: resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==} dependencies: - '@types/unist': 2.0.7 + '@types/unist': 2.0.8 + + /unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + dependencies: + '@types/unist': 3.0.0 + dev: false /unist-util-visit-children@2.0.2: resolution: {integrity: sha512-+LWpMFqyUwLGpsQxpumsQ9o9DG2VGLFrpz+rpVXYIEdPy57GSy5HioC0g3bg/8WP9oCLlapQtklOzQ8uLS496Q==} dependencies: - '@types/unist': 2.0.7 + '@types/unist': 2.0.8 dev: true /unist-util-visit-parents@4.1.1: resolution: {integrity: sha512-1xAFJXAKpnnJl8G7K5KgU7FY55y3GcLIXqkzUj5QF/QVP7biUm0K0O2oqVkYsdjzJKifYeWn9+o6piAK2hGSHw==} dependencies: - '@types/unist': 2.0.7 + '@types/unist': 2.0.8 unist-util-is: 5.2.1 dev: false /unist-util-visit-parents@5.1.3: resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==} dependencies: - '@types/unist': 2.0.7 + '@types/unist': 2.0.8 unist-util-is: 5.2.1 /unist-util-visit-parents@6.0.1: @@ -8134,12 +8358,11 @@ packages: dependencies: '@types/unist': 3.0.0 unist-util-is: 6.0.0 - dev: false /unist-util-visit@3.1.0: resolution: {integrity: sha512-Szoh+R/Ll68QWAyQyZZpQzZQm2UPbxibDvaY8Xc9SUtYgPsDzx5AWSk++UUt2hJuow8mvwR+rG+LQLw+KsuAKA==} dependencies: - '@types/unist': 2.0.7 + '@types/unist': 2.0.8 unist-util-is: 5.2.1 unist-util-visit-parents: 4.1.1 dev: false @@ -8147,7 +8370,7 @@ packages: /unist-util-visit@4.1.2: resolution: {integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==} dependencies: - '@types/unist': 2.0.7 + '@types/unist': 2.0.8 unist-util-is: 5.2.1 unist-util-visit-parents: 5.1.3 @@ -8157,26 +8380,14 @@ packages: '@types/unist': 3.0.0 unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 - dev: false - /update-browserslist-db@1.0.11(browserslist@4.21.10): - resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} + /update-browserslist-db@1.0.13(browserslist@4.22.0): + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' dependencies: - browserslist: 4.21.10 - escalade: 3.1.1 - picocolors: 1.0.0 - dev: true - - /update-browserslist-db@1.0.11(browserslist@4.21.9): - resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - dependencies: - browserslist: 4.21.9 + browserslist: 4.22.0 escalade: 3.1.1 picocolors: 1.0.0 dev: true @@ -8192,8 +8403,8 @@ packages: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} dev: true - /uuid@9.0.0: - resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==} + /uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} hasBin: true dev: false @@ -8214,13 +8425,21 @@ packages: /vfile-location@4.1.0: resolution: {integrity: sha512-YF23YMyASIIJXpktBa4vIGLJ5Gs88UB/XePgqPmTa7cDA+JeO3yclbpheQYCHjVHBn/yePzrXuygIL+xbvRYHw==} dependencies: - '@types/unist': 2.0.7 + '@types/unist': 2.0.8 vfile: 5.3.7 + dev: true + + /vfile-location@5.0.2: + resolution: {integrity: sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==} + dependencies: + '@types/unist': 3.0.0 + vfile: 6.0.1 + dev: false /vfile-matter@3.0.1: resolution: {integrity: sha512-CAAIDwnh6ZdtrqAuxdElUqQRQDQgbbIrYtDYI8gCjXS1qQ+1XdLoK8FIZWxJwn0/I+BkSSZpar3SOgjemQz4fg==} dependencies: - '@types/js-yaml': 4.0.5 + '@types/js-yaml': 4.0.6 is-buffer: 2.0.5 js-yaml: 4.1.0 dev: false @@ -8228,28 +8447,43 @@ packages: /vfile-message@3.1.4: resolution: {integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==} dependencies: - '@types/unist': 2.0.7 + '@types/unist': 2.0.8 unist-util-stringify-position: 3.0.3 + /vfile-message@4.0.2: + resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} + dependencies: + '@types/unist': 3.0.0 + unist-util-stringify-position: 4.0.0 + dev: false + /vfile@5.3.7: resolution: {integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==} dependencies: - '@types/unist': 2.0.7 + '@types/unist': 2.0.8 is-buffer: 2.0.5 unist-util-stringify-position: 3.0.3 vfile-message: 3.1.4 - /vite-node@0.33.0(@types/node@20.4.2): - resolution: {integrity: sha512-19FpHYbwWWxDr73ruNahC+vtEdza52kA90Qb3La98yZ0xULqV8A5JLNPUff0f5zID4984tW7l3DH2przTJUZSw==} + /vfile@6.0.1: + resolution: {integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==} + dependencies: + '@types/unist': 3.0.0 + unist-util-stringify-position: 4.0.0 + vfile-message: 4.0.2 + dev: false + + /vite-node@0.34.5(@types/node@20.7.1): + resolution: {integrity: sha512-RNZ+DwbCvDoI5CbCSQSyRyzDTfFvFauvMs6Yq4ObJROKlIKuat1KgSX/Ako5rlDMfVCyMcpMRMTkJBxd6z8YRA==} engines: {node: '>=v14.18.0'} hasBin: true dependencies: cac: 6.7.14 debug: 4.3.4 - mlly: 1.4.0 + mlly: 1.4.2 pathe: 1.1.1 picocolors: 1.0.0 - vite: 4.4.9(@types/node@20.4.2) + vite: 4.4.9(@types/node@20.7.1) transitivePeerDependencies: - '@types/node' - less @@ -8261,61 +8495,26 @@ packages: - terser dev: true - /vite-plugin-solid@2.7.0(solid-js@1.7.8)(vite@4.4.9): + /vite-plugin-solid@2.7.0(solid-js@1.7.12)(vite@4.4.9): resolution: {integrity: sha512-avp/Jl5zOp/Itfo67xtDB2O61U7idviaIp4mLsjhCa13PjKNasz+IID0jYTyqUp9SFx6/PmBr6v4KgDppqompg==} peerDependencies: solid-js: ^1.7.2 vite: ^3.0.0 || ^4.0.0 dependencies: - '@babel/core': 7.22.11 - '@babel/preset-typescript': 7.22.5(@babel/core@7.22.11) - '@types/babel__core': 7.20.1 - babel-preset-solid: 1.7.7(@babel/core@7.22.11) + '@babel/core': 7.23.0 + '@babel/preset-typescript': 7.23.0(@babel/core@7.23.0) + '@types/babel__core': 7.20.2 + babel-preset-solid: 1.7.12(@babel/core@7.23.0) merge-anything: 5.1.7 - solid-js: 1.7.8 - solid-refresh: 0.5.3(solid-js@1.7.8) - vite: 4.4.9(@types/node@20.4.2) + solid-js: 1.7.12 + solid-refresh: 0.5.3(solid-js@1.7.12) + vite: 4.4.9(@types/node@20.7.1) vitefu: 0.2.4(vite@4.4.9) transitivePeerDependencies: - supports-color dev: true - /vite@4.4.4: - resolution: {integrity: sha512-4mvsTxjkveWrKDJI70QmelfVqTm+ihFAb6+xf4sjEU2TmUCTlVX87tmg/QooPEMQb/lM9qGHT99ebqPziEd3wg==} - engines: {node: ^14.18.0 || >=16.0.0} - hasBin: true - peerDependencies: - '@types/node': '>= 14' - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - dependencies: - esbuild: 0.18.13 - postcss: 8.4.26 - rollup: 3.26.3 - optionalDependencies: - fsevents: 2.3.3 - dev: true - - /vite@4.4.9(@types/node@20.4.2): + /vite@4.4.9(@types/node@20.7.1): resolution: {integrity: sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -8343,10 +8542,10 @@ packages: terser: optional: true dependencies: - '@types/node': 20.4.2 - esbuild: 0.18.13 - postcss: 8.4.29 - rollup: 3.28.1 + '@types/node': 20.7.1 + esbuild: 0.18.20 + postcss: 8.4.30 + rollup: 3.29.4 optionalDependencies: fsevents: 2.3.3 dev: true @@ -8359,11 +8558,11 @@ packages: vite: optional: true dependencies: - vite: 4.4.9(@types/node@20.4.2) + vite: 4.4.9(@types/node@20.7.1) dev: true - /vitest@0.33.0: - resolution: {integrity: sha512-1CxaugJ50xskkQ0e969R/hW47za4YXDUfWJDxip1hwbnhUjYolpfUn2AMOulqG/Dtd9WYAtkHmM/m3yKVrEejQ==} + /vitest@0.34.5: + resolution: {integrity: sha512-CPI68mmnr2DThSB3frSuE5RLm9wo5wU4fbDrDwWQQB1CWgq9jQVoQwnQSzYAjdoBOPoH2UtXpOgHVge/uScfZg==} engines: {node: '>=v14.18.0'} hasBin: true peerDependencies: @@ -8393,29 +8592,29 @@ packages: webdriverio: optional: true dependencies: - '@types/chai': 4.3.5 + '@types/chai': 4.3.6 '@types/chai-subset': 1.3.3 - '@types/node': 20.4.2 - '@vitest/expect': 0.33.0 - '@vitest/runner': 0.33.0 - '@vitest/snapshot': 0.33.0 - '@vitest/spy': 0.33.0 - '@vitest/utils': 0.33.0 + '@types/node': 20.7.1 + '@vitest/expect': 0.34.5 + '@vitest/runner': 0.34.5 + '@vitest/snapshot': 0.34.5 + '@vitest/spy': 0.34.5 + '@vitest/utils': 0.34.5 acorn: 8.10.0 acorn-walk: 8.2.0 cac: 6.7.14 - chai: 4.3.7 + chai: 4.3.10 debug: 4.3.4 local-pkg: 0.4.3 magic-string: 0.30.3 pathe: 1.1.1 picocolors: 1.0.0 - std-env: 3.3.3 - strip-literal: 1.0.1 - tinybench: 2.5.0 - tinypool: 0.6.0 - vite: 4.4.9(@types/node@20.4.2) - vite-node: 0.33.0(@types/node@20.4.2) + std-env: 3.4.3 + strip-literal: 1.3.0 + tinybench: 2.5.1 + tinypool: 0.7.0 + vite: 4.4.9(@types/node@20.7.1) + vite-node: 0.34.5(@types/node@20.7.1) why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -8479,6 +8678,14 @@ packages: path-exists: 4.0.0 dev: true + /which-pm@2.1.1: + resolution: {integrity: sha512-xzzxNw2wMaoCWXiGE8IJ9wuPMU+EYhFksjHxrRT8kMT5SnocBPRg69YAMtyV4D12fP582RA+k3P8H9J5EMdIxQ==} + engines: {node: '>=8.15'} + dependencies: + load-yaml-file: 0.2.0 + path-exists: 4.0.0 + dev: true + /which@1.3.1: resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} hasBin: true @@ -8532,8 +8739,8 @@ packages: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} dev: true - /ws@8.13.0: - resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} + /ws@8.14.2: + resolution: {integrity: sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -8562,8 +8769,8 @@ packages: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} dev: true - /yaml@2.3.1: - resolution: {integrity: sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==} + /yaml@2.3.2: + resolution: {integrity: sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==} engines: {node: '>= 14'} dev: true @@ -8606,5 +8813,9 @@ packages: resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==} dev: false + /zod@3.22.2: + resolution: {integrity: sha512-wvWkphh5WQsJbVk1tbx1l1Ly4yg+XecD+Mq280uBGt9wa5BKSWf4Mhp6GmrkPixhMxmabYY7RbzlwVP32pbGCg==} + dev: false + /zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} diff --git a/src/blob.rs b/src/blob.rs deleted file mode 100644 index ace3128d..00000000 --- a/src/blob.rs +++ /dev/null @@ -1,2 +0,0 @@ -/// TODO -pub struct Blob(pub T); diff --git a/src/error.rs b/src/error.rs index 5770da77..0c476ae3 100644 --- a/src/error.rs +++ b/src/error.rs @@ -68,6 +68,10 @@ pub enum ExecError { ErrSubscriptionWithNullId, #[error("error creating subscription with duplicate id")] ErrSubscriptionDuplicateId, + #[error("error subscription with id doesn't exist")] + ErrSubscriptionNotFound, + #[error("error subscription already closed")] + ErrSubscriptionAlreadyClosed, #[error("error the current transport does not support subscriptions")] ErrSubscriptionsNotSupported, #[error("error a procedure returned an empty stream")] @@ -126,6 +130,8 @@ impl From for ProcedureError { cause: None, }, ExecError::Resolver(err) => return err.into(), + ExecError::ErrSubscriptionNotFound => todo!(), + ExecError::ErrSubscriptionAlreadyClosed => todo!(), }) } } diff --git a/src/integrations/mod.rs b/src/integrations/mod.rs deleted file mode 100644 index bb574f69..00000000 --- a/src/integrations/mod.rs +++ /dev/null @@ -1,9 +0,0 @@ -//! Integrations rspc with other crates in the ecosystem such as Axum, Tauri, etc. - -#[cfg(feature = "httpz")] -#[cfg_attr(docsrs, doc(cfg(feature = "httpz")))] -pub mod httpz; - -#[cfg(feature = "tauri")] -#[cfg_attr(docsrs, doc(cfg(feature = "tauri")))] -pub mod tauri; diff --git a/src/internal/body/body.rs b/src/internal/body/body.rs new file mode 100644 index 00000000..448f48b3 --- /dev/null +++ b/src/internal/body/body.rs @@ -0,0 +1,28 @@ +use std::{ + pin::Pin, + task::{Context, Poll}, +}; + +use serde_json::Value; + +use crate::ExecError; + +/// The resulting body from an rspc operation. +/// +/// This can mean different things in different contexts. +/// For a query or mutation each frame is a part of the resulting single "message". Eg. part of the json, or part of a file. +/// For a subscription each frame is a discrete websocket message. Eg. the json for a single procedure's result +/// +#[must_use = "`Body` do nothing unless polled"] +pub trait Body { + // TODO: Return `bytes::Bytes` instead + fn poll_next( + self: Pin<&mut Self>, + cx: &mut Context<'_>, + ) -> Poll>>; + + #[inline] + fn size_hint(&self) -> (usize, Option) { + (0, None) + } +} diff --git a/src/internal/body/map.rs b/src/internal/body/map.rs new file mode 100644 index 00000000..6ab80bee --- /dev/null +++ b/src/internal/body/map.rs @@ -0,0 +1,42 @@ +use std::{ + future::Future, + pin::Pin, + task::{Context, Poll}, +}; + +use futures::ready; +use pin_project_lite::pin_project; + +pin_project! { + /// A function for mapping a body into a future. + #[must_use = "streams do nothing unless polled"] + pub(crate) struct Map { + #[pin] + future: Option, + func: fn(Fut::Output) -> Result, + } +} + +impl Map { + pub fn new(future: Fut, func: fn(Fut::Output) -> Result) -> Self { + Self { + future: Some(future), + func, + } + } +} + +impl Future for Map { + type Output = Result; + + fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { + let mut this = self.project(); + let v = match this.future.as_mut().as_pin_mut() { + Some(fut) => ready!(fut.poll(cx)), + None => panic!("`Map` polled after completion"), + }; + + this.future.set(None); + Poll::Ready((this.func)(v)) + } +} diff --git a/src/internal/body/mod.rs b/src/internal/body/mod.rs new file mode 100644 index 00000000..d632c20d --- /dev/null +++ b/src/internal/body/mod.rs @@ -0,0 +1,7 @@ +mod body; +mod map; +mod once; + +pub use body::*; +pub use map::*; +pub use once::*; diff --git a/src/internal/body.rs b/src/internal/body/once.rs similarity index 64% rename from src/internal/body.rs rename to src/internal/body/once.rs index 4dccf582..a78309c2 100644 --- a/src/internal/body.rs +++ b/src/internal/body/once.rs @@ -10,25 +10,7 @@ use serde_json::Value; use crate::ExecError; -/// The resulting body from an rspc operation. -/// -/// This can mean different things in different contexts. -/// For a query or mutation each frame is a part of the resulting single "message". Eg. part of the json, or part of a file. -/// For a subscription each frame is a discrete websocket message. Eg. the json for a single procedure's result -/// -#[must_use = "`Body` do nothing unless polled"] -pub trait Body { - // TODO: Return `bytes::Bytes` instead - fn poll_next( - self: Pin<&mut Self>, - cx: &mut Context<'_>, - ) -> Poll>>; - - #[inline] - fn size_hint(&self) -> (usize, Option) { - (0, None) - } -} +use super::Body; // This type was taken from futures_util so all credit to it's original authors! pin_project! { diff --git a/src/internal/exec/arc_ref.rs b/src/internal/exec/arc_ref.rs new file mode 100644 index 00000000..85ac55b8 --- /dev/null +++ b/src/internal/exec/arc_ref.rs @@ -0,0 +1,137 @@ +#![allow(unsafe_code)] +///! TODO: Explain this abstraction +// TODO: The goal is this can only know about the inner `T` and not `Arc` but also ensure `ArcRef` is not dropped until it's safe. +// TODO: This abstraction is safe because `&SomeDerivedType` is tied to the ownership of `Arc` of which it was derived from. +// TODO: This is basically required for queueing an rspc subscription onto it's own task which with Tokio requires `'static`. +// TODO: This whole thing is really similar to the `owning_ref` crate but I want to erase the `T` from `Arc` which is done through the `drop` function pointer. +use std::{ + mem::size_of, + ops::{Deref, DerefMut}, + pin::Pin, + sync::Arc, +}; + +use serde_json::Value; + +use crate::{ + internal::{ + middleware::{ProcedureKind, RequestContext}, + procedure::ProcedureTodo, + Body, + }, + ProcedureMap, Router, +}; + +use super::{ExecutorResult, RequestData}; + +pub(crate) struct ArcRef { + // The lifetime here is invalid. This type is actually valid as long as the `Arc` in `self.mem` is ok. + val: T, + arc: *const (), + drop: fn(*const ()), +} + +unsafe impl Send for ArcRef {} +unsafe impl Sync for ArcRef {} + +impl ArcRef { + /// The caller in-charge of ensuring the `val` is derived from `val`. + unsafe fn new(arc: Arc, val: T) -> Self { + debug_assert_eq!( + size_of::<*const ()>(), + size_of::<*const T>(), + "pointer size mismatch" + ); + + // let val = (func)(&arc); + + // // SAFETY: We are forcing this value into a `'static` lifetime because it's lifetime is derived from the `Arc` which itself has a `'static` lifetime. + // // SAFETY: For this to remain safe we hold the `arc` on self so the memory can't be deallocated while we are having the `'static` reference. + // // SAFETY: We also ensure the `'static` never escapes the `ArcRef` by requiring `Deref` to use the inner value which itself ties the usage of the lifetime of `ArcRef`. + // let val = unsafe { std::mem::transmute::<&mut T, &'static mut T>(&mut val) }; + + let arc2 = arc.clone(); // TODO: Avoid clone? + + Self { + val, + arc: Arc::into_raw(arc2) as *const (), + drop: |ptr| { + // SAFETY: Reconstruct the arc from the pointer so Rust can decrement the strong count and potentially drop the memory if required. + drop(unsafe { Arc::from_raw(ptr as *const A) }); + }, + } + } +} + +impl Deref for ArcRef { + type Target = T; + + fn deref(&self) -> &Self::Target { + &self.val + } +} + +impl DerefMut for ArcRef { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.val + } +} + +impl Drop for ArcRef { + fn drop(&mut self) { + (self.drop)(self.arc); + } +} + +// BELOW ARE HELPERS FOR SAFELY GETTING THE `ArcRef` + +fn get_procedure( + router: Arc>, + ctx: TCtx, + data: RequestData, + kind: ProcedureKind, + procedures: fn(&Arc>) -> &ProcedureMap, +) -> Option>>> { + let req = RequestContext::new(data.id, kind, data.path); + let procedures: *const _ = procedures(&router); + // SAFETY: This is basically extending the lifetime to `'static`. This is safe cause we hold on to the `Arc` which owns the memory at the same time. + let procedures = unsafe { &*procedures }; + + let stream = procedures.get(req.path.as_ref())?.exec.dyn_call( + ctx, + data.input.unwrap_or(Value::Null), + req, + ); + + Some(unsafe { ArcRef::new(router, stream) }) +} + +pub(crate) fn get_query( + router: Arc>, + ctx: TCtx, + data: RequestData, +) -> Option>>> { + get_procedure(router, ctx, data, ProcedureKind::Query, |router| { + &router.queries + }) +} + +pub(crate) fn get_mutation( + router: Arc>, + ctx: TCtx, + data: RequestData, +) -> Option>>> { + get_procedure(router, ctx, data, ProcedureKind::Mutation, |router| { + &router.mutations + }) +} + +pub(crate) fn get_subscription( + router: Arc>, + ctx: TCtx, + data: RequestData, +) -> Option>>> { + get_procedure(router, ctx, data, ProcedureKind::Subscription, |router| { + &router.subscriptions + }) +} diff --git a/src/internal/exec/async_runtime.rs b/src/internal/exec/async_runtime.rs index e2e26273..5e8b57e6 100644 --- a/src/internal/exec/async_runtime.rs +++ b/src/internal/exec/async_runtime.rs @@ -1,19 +1,20 @@ use std::{future::Future, time::Instant}; /// Define an async runtime. +#[deprecated] pub trait AsyncRuntime: Sync + Send + 'static { - /// A handle to a task that was spawned using `Self::spawn`. - /// This must be able to cancel the task. - type TaskHandle: Send + 'static; + // /// A handle to a task that was spawned using `Self::spawn`. + // /// This must be able to cancel the task. + // type TaskHandle: Send + 'static; /// A future that can be used to sleep until a given instant. type SleepUtilFut: Future + Send + 'static; - /// spawn a future onto the async runtime and return a handle to it. - fn spawn + Send + 'static>(f: F) -> Self::TaskHandle; + // /// spawn a future onto the async runtime and return a handle to it. + // fn spawn + Send + 'static>(f: F) -> Self::TaskHandle; - /// cancel a task given its handle. This should end execution and `Drop` it. - fn cancel_task(task: Self::TaskHandle); + // /// cancel a task given its handle. This should end execution and `Drop` it. + // fn cancel_task(task: Self::TaskHandle); /// returns a future that waits until an instant to resolve. fn sleep_util(till: Instant) -> Self::SleepUtilFut; @@ -27,16 +28,16 @@ mod tokio_runtime { pub struct TokioRuntime {} impl AsyncRuntime for TokioRuntime { - type TaskHandle = tokio::task::JoinHandle<()>; + // type TaskHandle = tokio::task::JoinHandle<()>; type SleepUtilFut = tokio::time::Sleep; - fn spawn + Send + 'static>(f: F) -> Self::TaskHandle { - tokio::spawn(f) - } + // fn spawn + Send + 'static>(f: F) -> Self::TaskHandle { + // tokio::spawn(f) + // } - fn cancel_task(task: Self::TaskHandle) { - task.abort() - } + // fn cancel_task(task: Self::TaskHandle) { + // task.abort() + // } fn sleep_util(till: Instant) -> Self::SleepUtilFut { tokio::time::sleep_until(till.into()) diff --git a/src/internal/exec/connection.rs b/src/internal/exec/connection.rs index af82d7fe..5ebb0cf8 100644 --- a/src/internal/exec/connection.rs +++ b/src/internal/exec/connection.rs @@ -2,23 +2,33 @@ use std::{ collections::HashMap, future::Future, marker::PhantomData, - pin::Pin, + pin::{pin, Pin}, + sync::Arc, task::{Context, Poll}, time::{Duration, Instant}, }; -use futures::{ready, Sink, Stream}; +use futures::{ + channel::{ + mpsc::{self, UnboundedReceiver, UnboundedSender}, + oneshot, + }, + future::{Either, OptionFuture}, + pin_mut, ready, + stream::{self, Fuse, FusedStream, FuturesUnordered}, + FutureExt, Sink, SinkExt, Stream, StreamExt, +}; use pin_project_lite::pin_project; use serde_json::Value; use streamunordered::{StreamUnordered, StreamYield}; -use super::{ - AsyncRuntime, Executor, IncomingMessage, Request, Requests, Response, RspcTask, - SubscriptionManager, SubscriptionSet, -}; -use crate::internal::{ - exec::{self, ResponseInner}, - PinnedOption, PinnedOptionProj, +use super::{AsyncRuntime, ExecutorResult, IncomingMessage, Request, Requests, Response, Task}; +use crate::{ + internal::{ + exec::{self, ResponseInner}, + PinnedOption, PinnedOptionProj, + }, + Router, }; // Time to wait for more messages before sending them over the websocket connection. @@ -26,89 +36,25 @@ use crate::internal::{ // as sending them together should help us utilise transport layer compression. const BATCH_TIMEOUT: Duration = Duration::from_millis(5); -enum PollResult { - /// The poller has done some progressed work. - /// WARNING: this does not guarantee any wakers have been registered so to uphold the `Future` invariants you can not return. - Progressed, - - /// The poller has queued a message to be sent. - /// WARNING: You must call `Self::poll_send` to prior to returning from the `Future::poll` method. - QueueSend, - - /// The future is complete - Complete, -} - -struct ConnectionSubscriptionManager<'a, TCtx> { - pub map: &'a mut SubscriptionSet, - pub to_abort: Option>, - pub queued: Option>>, -} - -impl<'a, TCtx: Clone + Send + 'static> SubscriptionManager - for ConnectionSubscriptionManager<'a, TCtx> -{ - type Set<'m> = &'m mut SubscriptionSet where Self: 'm; - - fn queue(&mut self, stream: RspcTask) { - match &mut self.queued { - Some(queued) => { - queued.push(stream); - } - None => self.queued = Some(vec![stream]), - } - } - - fn subscriptions(&mut self) -> Self::Set<'_> { - self.map - } - - fn abort_subscription(&mut self, id: u32) { - self.to_abort.get_or_insert_with(Vec::new).push(id); - } +pub(crate) struct TaskShutdown { + stream_id: usize, + tx: oneshot::Sender, } -pin_project! { - #[project = BatchFutProj] - struct Batcher { - batch: Vec, - #[pin] - batch_timer: PinnedOption, +impl TaskShutdown { + pub fn send(self) -> Result<(), usize> { + self.tx.send(self.stream_id) } } -impl Batcher { - fn insert(self: Pin<&mut Self>, element: exec::Response) { - let mut this = self.project(); - this.batch.push(element); - this.batch_timer - .set(R::sleep_util(Instant::now() + BATCH_TIMEOUT).into()); - } +pub struct Connection { + ctx: TCtx, + router: Arc>, - fn append(self: Pin<&mut Self>, other: &mut Vec) { - if other.is_empty() { - return; - } + streams: StreamUnordered, - let mut this = self.project(); - this.batch.append(other); - this.batch_timer - .set(R::sleep_util(Instant::now() + BATCH_TIMEOUT).into()); - } -} - -pin_project! { - #[project = ConnectionProj] - struct Connection { - ctx: TCtx, - executor: Executor, - map: SubscriptionSet, - #[pin] - streams: StreamUnordered>, - - // TODO: Remove these cause disgusting messes - sub_id_to_stream: HashMap, - } + subscription_shutdown_rx: FuturesUnordered>, + pub(crate) subscription_shutdowns: HashMap, } impl Connection @@ -116,35 +62,34 @@ where TCtx: Clone + Send + 'static, { pub fn exec(&mut self, reqs: Vec) -> Vec { - let mut manager = Some(ConnectionSubscriptionManager { - map: &mut self.map, - to_abort: None, - queued: None, - }); + let mut resps = Vec::with_capacity(reqs.len()); + + for req in reqs { + let Some(res) = self + .router + .clone() + .execute(self.ctx.clone(), req, Some(self)) + else { + continue; + }; - let resps = self - .executor - .execute_batch(&self.ctx, reqs, &mut manager, |fut| { - let fut_id = fut.id(); - let token = self.streams.insert(fut.into()); - self.sub_id_to_stream.insert(fut_id, token); - }); + match res { + ExecutorResult::Task(task) => { + let task_id = task.id; + let stream_id = self.streams.insert(task); - let manager = manager.expect("rspc unreachable"); - if let Some(to_abort) = manager.to_abort { - for sub_id in to_abort { - if let Some(token) = self.sub_id_to_stream.remove(&sub_id) { - Pin::new(&mut self.streams).remove(token); - manager.map.take(&sub_id); - } - } - } + let (tx, rx) = oneshot::channel(); - if let Some(queued) = manager.queued { - for stream in queued { - let sub_id = stream.id(); - let token = self.streams.insert(stream); - self.sub_id_to_stream.insert(sub_id, token); + self.subscription_shutdowns + .insert(task_id, TaskShutdown { stream_id, tx }); + self.subscription_shutdown_rx.push(rx); + } + ExecutorResult::Future(fut) => { + self.streams.insert(fut.into()); + } + ExecutorResult::Response(resp) => { + resps.push(resp); + } } } @@ -152,290 +97,148 @@ where } } -type ClearSubscriptionsRx = Option) -> Poll> + Send>>; +fn batch_unbounded( + (tx, rx): (UnboundedSender, UnboundedReceiver), +) -> (UnboundedSender, impl Stream> + FusedStream) { + ( + tx, + stream::unfold(rx, |mut rx| async move { + let mut responses = vec![rx.next().await?]; -pin_project! { - #[project = ConnectionTaskProj] - /// An abstraction around a single "connection" which can execute rspc subscriptions. - /// - /// For Tauri a "connection" would be for each webpage and for HTTP that is a whole websocket connection. - /// - /// This future is spawned onto a thread and coordinates everything. It handles: - /// - Sending to connection - /// - Reading from connection - /// - Executing requests and subscriptions - /// - Batching responses - /// - pub(crate) struct ConnectionTask { - #[pin] - conn: Connection, - #[pin] - batch: Batcher, + 'batch: loop { + let timer = R::sleep_util(Instant::now() + BATCH_TIMEOUT).fuse(); - // Socket - #[pin] - socket: S, - tx_queue: Option>, + 'timer: loop { + pin_mut!(timer); - // External signal which when called will clear all active subscriptions. - // This is used by Tauri on window change as the "connection" never shuts down like a websocket would on page reload. - clear_subscriptions_rx: ClearSubscriptionsRx, + futures::select_biased! { + response = rx.next() => { + responses.push(response?); + break 'timer; + } + _ = timer => break 'batch, + } + } + } - phantom: PhantomData - } + Some((responses, rx)) + }), + ) } -impl< - R: AsyncRuntime, - TCtx: Clone + Send + 'static, - S: Sink, Error = E> + Stream> + Send + Unpin, - E: std::fmt::Debug + std::error::Error, - > ConnectionTask -{ - #[allow(dead_code)] - pub fn new( - ctx: TCtx, - executor: Executor, - socket: S, - clear_subscriptions_rx: ClearSubscriptionsRx, - ) -> Self { - Self { - conn: Connection { - ctx, - executor, - map: SubscriptionSet::new(), - streams: StreamUnordered::new(), - sub_id_to_stream: HashMap::new(), - }, - batch: Batcher { - batch: Vec::with_capacity(4), - batch_timer: PinnedOption::None, - }, - socket, - tx_queue: None, - clear_subscriptions_rx, - phantom: PhantomData, - } - } - - /// Poll sending - fn poll_send(this: &mut ConnectionTaskProj, cx: &mut Context<'_>) -> Poll<()> { - // If nothing in `tx_queue`, poll the batcher to populate it - if this.tx_queue.is_none() { - let mut batch = this.batch.as_mut().project(); - if let PinnedOptionProj::Some { v: batch_timer } = batch.batch_timer.as_mut().project() - { - ready!(batch_timer.poll(cx)); - - let queue = batch.batch.drain(0..batch.batch.len()).collect::>(); - batch.batch_timer.as_mut().set(PinnedOption::None); - - if !queue.is_empty() { - *this.tx_queue = Some(queue) +/// An abstraction around a single "connection" which can execute rspc subscriptions. +/// +/// For Tauri a "connection" would be for each webpage and for HTTP that is a whole websocket connection. +/// +/// This future is spawned onto a thread and coordinates everything. It handles: +/// - Sending to connection +/// - Reading from connection +/// - Executing requests and subscriptions +/// - Batching responses +pub async fn run_connection< + R: AsyncRuntime, + TCtx: Clone + Send + 'static, + S: Sink, Error = E> + Stream> + Send, + E: std::fmt::Debug + std::error::Error, +>( + ctx: TCtx, + router: Arc>, + socket: S, + mut clear_subscriptions_rx: Option>, +) { + let mut conn = Connection { + ctx, + router, + streams: Default::default(), + subscription_shutdown_rx: Default::default(), + subscription_shutdowns: Default::default(), + }; + + let (batch_tx, batch_stream) = batch_unbounded::(mpsc::unbounded()); + pin_mut!(batch_stream); + + let mut socket = pin!(socket.fuse()); + + loop { + futures::select_biased! { + recv = OptionFuture::from(clear_subscriptions_rx.as_mut().map(StreamExt::next)) => { + if let Some(Some(())) = recv { + for (_, shutdown) in conn.subscription_shutdowns.drain() { + shutdown.tx.send(shutdown.stream_id).ok(); + } } } - } - - // If something is queued to send - if this.tx_queue.is_some() { - // Wait until the socket is ready for sending - if let Err(_err) = ready!(this.socket.as_mut().poll_ready(cx)) { - #[cfg(feature = "tracing")] - tracing::error!("Error waiting for websocket to be ready: {}", _err); - - return ().into(); - }; - - let item = this - .tx_queue - .take() - // We check it is `Some(_)` every poll but defer taking it from the `Option` until the socket is ready - .expect("rspc unreachable"); - - if let Err(_err) = this.socket.as_mut().start_send(item) { - #[cfg(feature = "tracing")] - tracing::error!("Error sending message to websocket: {}", _err); + responses = batch_stream.next() => { + if let Some(responses) = responses { + if let Err(_err) = socket.send(responses).await { + #[cfg(feature = "tracing")] + tracing::error!("Error sending message to websocket: {}", _err); + } + } } - } - - // Flush the previously sent data if any is pending - if let Err(_err) = ready!(this.socket.as_mut().poll_flush(cx)) { - #[cfg(feature = "tracing")] - tracing::error!("Error flushing message to websocket: {}", _err); - } - - ().into() - } - - /// Poll receiving - fn poll_recv( - this: &mut ConnectionTaskProj, - cx: &mut Context<'_>, - ) -> Poll { - match ready!(this.socket.as_mut().poll_next(cx)) { - Some(Ok(msg)) => { - let res = match msg { - IncomingMessage::Msg(res) => res, - IncomingMessage::Close => return PollResult::Complete.into(), - IncomingMessage::Skip => return PollResult::Progressed.into(), - }; - - 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) => { - this.batch.as_mut().append(&mut this.conn.exec(reqs)); + // poll_recv + msg = socket.next() => { + match msg { + Some(Ok(msg)) => { + let res = match msg { + IncomingMessage::Msg(res) => res, + IncomingMessage::Close => { break }, + IncomingMessage::Skip => { continue }, + }; + + 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) => { + conn.exec(reqs) + .into_iter() + .for_each(|resp| { + batch_tx.unbounded_send(resp).expect("Failed to send on unbounded send"); + }); + } + Err(_err) => { + #[cfg(feature = "tracing")] + tracing::error!("Error parsing websocket message: {}", _err); + + // TODO: Send report of error to frontend but who do we correlated them???? + } + } } - Err(_err) => { + Some(Err(_err)) => { #[cfg(feature = "tracing")] - tracing::error!("Error parsing websocket message: {}", _err); + tracing::debug!("Error reading from websocket connection: {:?}", _err); // TODO: Send report of error to frontend but who do we correlated them???? + }, + None => { + break } } - - PollResult::QueueSend - } - Some(Err(_err)) => { - #[cfg(feature = "tracing")] - tracing::debug!("Error reading from websocket connection: {:?}", _err); - - // TODO: Send report of error to frontend but who do we correlated them???? - - PollResult::QueueSend } - None => PollResult::Complete, - } - .into() - } + // poll_streams + value = conn.streams.select_next_some() => { + let (yld, _) = value; - /// Poll active streams - fn poll_streams( - this: &mut ConnectionTaskProj, - cx: &mut Context<'_>, - ) -> Poll { - let mut conn = this.conn.as_mut().project(); - for _ in 0..conn.streams.len() { - match ready!(conn.streams.as_mut().poll_next(cx)) { - Some((a, _)) => match a { + match yld { StreamYield::Item(resp) => { - this.batch.as_mut().insert(resp); - return PollResult::QueueSend.into(); + batch_tx.unbounded_send(resp).ok(); } StreamYield::Finished(f) => { - if let Some(stream) = f.take(conn.streams.as_mut()) { - let sub_id = stream.id(); - conn.sub_id_to_stream.remove(&sub_id); - conn.map.take(&sub_id); + if let Some(stream) = f.take(Pin::new(&mut conn.streams)) { + let sub_id = stream.id; + conn.subscription_shutdowns.remove(&sub_id); } } - }, - // If no streams, fall asleep until a new subscription is queued - None => {} - } - } - PollResult::Progressed.into() - } - - fn complete(this: &mut ConnectionTaskProj) { - #[cfg(feature = "tracing")] - tracing::trace!("Shutting down websocket connection"); - - Self::shutdown_all_streams(this); - } - - fn shutdown_all_streams(this: &mut ConnectionTaskProj) { - let mut conn = this.conn.as_mut().project(); - - // TODO: This can be improved by: https://github.com/jonhoo/streamunordered/pull/5 - for (_, token) in conn.sub_id_to_stream.drain() { - conn.streams.as_mut().remove(token); - } - conn.map.drain().for_each(drop); - } -} - -impl< - R: AsyncRuntime, - TCtx: Clone + Send + 'static, - S: Sink, Error = E> + Stream> + Send + Unpin, - E: std::fmt::Debug + std::error::Error, - > Future for ConnectionTask -{ - type Output = (); - - fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { - let mut this = self.as_mut().project(); - let mut is_pending = false; - let mut is_done = false; - let mut should_send = false; - - while !is_pending || should_send { - should_send = false; - - if let Some(recv) = &mut this.clear_subscriptions_rx { - match (recv)(cx) { - Poll::Ready(Some(())) => Self::shutdown_all_streams(&mut this), - Poll::Ready(None) => *this.clear_subscriptions_rx = None, - Poll::Pending => is_pending = true, } } - - if Self::poll_send(&mut this, cx).is_pending() { - is_pending = true; - } - - if is_done { - if is_pending { - return Poll::Pending; - } - - #[cfg(debug_assertions)] - if !this.batch.batch.is_empty() { - unreachable!("`ConnectionTask::poll_send` is complete but did not send all queued messages"); - } - - return Poll::Ready(()); - } - - match Self::poll_recv(&mut this, cx) { - Poll::Ready(PollResult::Complete) => { - is_done = true; - Self::complete(&mut this); - continue; - } - Poll::Ready(PollResult::Progressed) => {} - Poll::Ready(PollResult::QueueSend) => { - should_send = true; - continue; - } - Poll::Pending => { - is_pending = true; - } - } - - match Self::poll_streams(&mut this, cx) { - Poll::Ready(PollResult::Complete) => { - #[cfg(debug_assertions)] - unreachable!( - "`ConnectionTask::poll_streams` attempted to complete the connection!" - ); - - #[cfg(not(debug_assertions))] - continue; - } - Poll::Ready(PollResult::Progressed) => {} - Poll::Ready(PollResult::QueueSend) => { - should_send = true; - continue; - } - Poll::Pending => { - is_pending = true; + shutdown = conn.subscription_shutdown_rx.select_next_some() => { + if let Ok(stream_id) = shutdown { + Pin::new(&mut conn.streams).remove(stream_id); } } } - - Poll::Pending } + + println!("Connection done!"); } diff --git a/src/internal/exec/execute.rs b/src/internal/exec/execute.rs index 70bbfc82..410e7671 100644 --- a/src/internal/exec/execute.rs +++ b/src/internal/exec/execute.rs @@ -1,243 +1,125 @@ -mod private { - use std::{ - borrow::Cow, - collections::{HashMap, HashSet}, - convert::Infallible, - future::{Future, Ready}, - marker::PhantomData, - ops::DerefMut, - pin::Pin, - sync::{Arc, Mutex}, - task::{Context, Poll, Waker}, - }; +use std::{ + borrow::Cow, + collections::{HashMap, HashSet}, + convert::Infallible, + fmt, + future::{Future, Ready}, + marker::PhantomData, + ops::{Deref, DerefMut}, + pin::Pin, + sync::{Arc, Mutex}, + task::{Context, Poll, Waker}, +}; - use futures::{future::poll_fn, stream::FuturesUnordered, Stream, StreamExt}; +use futures::{channel::oneshot, stream::FuturesUnordered, Stream, StreamExt}; - use serde_json::Value; +use serde_json::Value; - use crate::{ - internal::{ - exec::{AsyncRuntime, Request, RequestFuture, Response, ResponseInner, RspcTask}, - middleware::{ProcedureKind, RequestContext}, - procedure::{ProcedureStore, ProcedureTodo}, - FutureValueOrStream, +use crate::{ + internal::{ + exec::{ + arc_ref::{self, get_subscription, ArcRef}, + request_future::RequestFuture, + Request, Response, ResponseInner, Task, }, - BuiltRouter, ExecError, - }; - - /// Map for subscription id to task handle. - /// This is used for shutting down subscriptions. - pub type SubscriptionSet = HashSet; - - /// TODO - pub trait SubscriptionManager { - type Set<'m>: DerefMut + 'm - where - Self: 'm; - - // TODO: Replace this with the normal `queue` fn? - /// TODO - fn queue(&mut self, stream: RspcTask); - - /// TODO - fn subscriptions(&mut self) -> Self::Set<'_>; - - /// TODO - fn abort_subscription(&mut self, id: u32); - } - - /// TODO - #[derive(Clone)] - pub enum NoOpSubscriptionManager {} - - impl SubscriptionManager for NoOpSubscriptionManager { - type Set<'a> = &'a mut SubscriptionSet; - - fn queue(&mut self, _task: RspcTask) { - // Empty enum is unconstructable so this panics will never be hit. - unreachable!(); - } - - fn subscriptions(&mut self) -> Self::Set<'_> { - // Empty enum is unconstructable so this panics will never be hit. - unreachable!(); - } + middleware::{ProcedureKind, RequestContext}, + procedure::ProcedureTodo, + Body, FutureValueOrStream, + }, + ExecError, ProcedureMap, Router, +}; - fn abort_subscription(&mut self, _id: u32) { - // Empty enum is unconstructable so this panics will never be hit. - unreachable!(); - } - } +use super::{task, Connection, RequestData}; + +/// TODO +/// +// This means a thread is only spawned by us for subscriptions and by the caller for requests. +// If `execute` was async it would *usually* be spawned by the caller but if it were a subscription it would then be spawned again by us. +pub enum ExecutorResult { + /// A static response + Response(Response), + /// A future that will resolve to a response. + Future(RequestFuture), + /// A task that should be queued onto an async runtime. + Task(Task), +} +// TODO: Move this into `build_router.rs` and turn it into a module with all the other `exec::*` types +impl Router { /// TODO /// - // This means a thread is only spawned by us for subscriptions and by the caller for requests. - // If `execute` was async it would *usually* be spawned by the caller but if it were a subscription it would then be spawned again by us. - pub enum ExecutorResult { - /// A future that will resolve to a response. - FutureResponse(RequestFuture), - /// A static response - Response(Response), - /// A `None` result means the executor has no response to send back to the client. - /// This usually means the request was a subscription and a task was spawned to handle it. - /// It should not be treated as an error. - None, - } - - /// TODO - pub struct Executor { - router: Arc>, - } - - impl Clone for Executor { - fn clone(&self) -> Self { - Self { - router: self.router.clone(), - } - } - } - - impl Executor { - /// constructs a new [Executor] for your router. - pub fn new(router: Arc>) -> Self { - Self { router } - } - - /// TODO - /// - /// WARNING: The response to a batch WILL NOT match the order of the requests in the batch. - /// This is done for performance reasons and isn't something a proper client should need. - /// All non responses will be ignored so the response may not be the same length as the request. - /// - // WARNING: The result of this function will not contain all requests. - // Your expected to use the `queue` fn to push them onto the runtime and handle them when completed - pub fn execute_batch<'a, M>( - &'a self, - ctx: &TCtx, - reqs: Vec, - subscriptions: &mut Option, - mut queue: impl FnMut(RequestFuture) + 'a, - ) -> Vec - where - TCtx: Clone, - M: SubscriptionManager, - { - let mut resps = Vec::with_capacity(reqs.len()); - - // TODO: Probs catch panics so they don't take out the whole batch - - for req in reqs { - match self.execute(ctx.clone(), req, subscriptions) { - ExecutorResult::FutureResponse(fut) => queue(fut.into()), - ExecutorResult::Response(resp) => { - resps.push(resp); + /// A `None` result means the executor has no response to send back to the client. + /// This usually means the request was a subscription and a task was spawned to handle it. + /// It should not be treated as an error. + pub fn execute( + self: Arc, + ctx: TCtx, + req: Request, + conn: Option<&mut Connection>, + ) -> Option { + // TODO + // TODO: Configurable logging hook + // #[cfg(feature = "tracing")] + // tracing::trace!( + // "Executing operation '{}' with key '{}' with params {:?}", + // kind.to_str(), + // procedure_name, + // input + // ); + + Some(match req { + Request::Query(data) => map_fut(data.id, arc_ref::get_query(self, ctx, data)), + Request::Mutation(data) => map_fut(data.id, arc_ref::get_mutation(self, ctx, data)), + Request::Subscription(data) => { + let id = data.id; + + match conn { + None => Err(ExecError::ErrSubscriptionsNotSupported), + Some(conn) if conn.subscription_shutdowns.contains_key(&data.id) => { + Err(ExecError::ErrSubscriptionDuplicateId) } - ExecutorResult::None => {} + Some(_) => match get_subscription(self, ctx, data) { + None => Err(ExecError::OperationNotFound), + Some(stream) => Ok(ExecutorResult::Task(Task { + id, + stream, + status: task::Status::ShouldBePolled { done: false }, + })), + }, } - } - - resps - } - - /// TODO - /// - /// A `None` result means the executor has no response to send back to the client. - /// This usually means the request was a subscription and a task was spawned to handle it. - /// It should not be treated as an error. - pub fn execute>( - &self, - ctx: TCtx, - req: Request, - mut subscription_manager: &mut Option, - ) -> ExecutorResult { - // TODO - // #[cfg(feature = "tracing")] - // tracing::trace!( - // "Executing operation '{}' with key '{}' with params {:?}", - // kind.to_str(), - // procedure_name, - // input - // ); - - match req { - Request::Query { id, path, input } => RequestFuture::exec( - ctx, - &self.router.queries, - RequestContext::new(id, ProcedureKind::Query, path), - input, - ), - Request::Mutation { id, path, input } => RequestFuture::exec( - ctx, - &self.router.mutations, - RequestContext::new(id, ProcedureKind::Mutation, path), - input, - ), - Request::Subscription { id, path, input } => match subscription_manager { - Some(subscriptions) => self.exec_subscription( - ctx, - subscriptions, - RequestContext::new(id, ProcedureKind::Subscription, path), - input, - ), - None => ExecutorResult::Response(Response { + .unwrap_or_else(|e| { + ExecutorResult::Response(Response { id, - inner: ResponseInner::Error(ExecError::ErrSubscriptionsNotSupported.into()), - }), - }, - Request::SubscriptionStop { id } => { - if let Some(subscriptions) = &mut subscription_manager { - subscriptions.abort_subscription(id); - } - - ExecutorResult::None - } + inner: ResponseInner::Error(e.into()), + }) + }) } - } - - fn exec_subscription>( - &self, - ctx: TCtx, - subscription_manager: &mut M, - req: RequestContext, - input: Option, - ) -> ExecutorResult { - let mut subscriptions = subscription_manager.subscriptions(); - - if subscriptions.contains(&req.id) { - return ExecutorResult::Response(Response { - id: req.id, - inner: ResponseInner::Error(ExecError::ErrSubscriptionDuplicateId.into()), - }); + Request::SubscriptionStop { id } => match conn { + None => Err(ExecError::ErrSubscriptionsNotSupported), + Some(conn) => match conn.subscription_shutdowns.remove(&id) { + Some(shutdown) => match shutdown.send() { + Ok(()) => return None, + Err(_) => Err(ExecError::ErrSubscriptionAlreadyClosed), + }, + None => Err(ExecError::ErrSubscriptionNotFound), + }, } - - let id = req.id; - match RspcTask::new_stream(self.router.clone(), ctx, input, req) { - Ok(s) => { - subscriptions.insert(id); - drop(subscriptions); - - subscription_manager.queue(s); - - ExecutorResult::None - } - Err(id) => ExecutorResult::Response(Response { + .unwrap_or_else(|e| { + ExecutorResult::Response(Response { id, - inner: ResponseInner::Error(ExecError::OperationNotFound.into()), - }), - } - } - - // TODO: Handle subscription cleanup + inner: ResponseInner::Error(e.into()), + }) + }), + }) } } -#[cfg(feature = "unstable")] -#[cfg_attr(docsrs, doc(cfg(feature = "unstable")))] -pub use private::{ - Executor, ExecutorResult, NoOpSubscriptionManager, SubscriptionManager, SubscriptionSet, -}; - -#[cfg(not(feature = "unstable"))] -pub(crate) use private::{ - Executor, ExecutorResult, NoOpSubscriptionManager, SubscriptionManager, SubscriptionSet, -}; +fn map_fut(id: u32, fut: Option>>>) -> ExecutorResult { + match fut { + Some(stream) => ExecutorResult::Future(RequestFuture { id, stream }), + None => ExecutorResult::Response(Response { + id, + inner: ResponseInner::Error(ExecError::OperationNotFound.into()), + }), + } +} diff --git a/src/internal/exec/mod.rs b/src/internal/exec/mod.rs index 2e685850..e06a8b79 100644 --- a/src/internal/exec/mod.rs +++ b/src/internal/exec/mod.rs @@ -2,16 +2,20 @@ #![allow(unused_imports)] +pub(crate) mod arc_ref; mod async_runtime; mod connection; mod execute; -mod stream_or_fut; +mod request_future; +mod sink_and_stream; +mod task; mod types; pub use async_runtime::*; pub use connection::*; #[allow(unused_imports)] pub use execute::*; -pub use stream_or_fut::*; +pub use sink_and_stream::*; +pub(crate) use task::Task; #[allow(unused_imports)] pub use types::*; diff --git a/src/internal/exec/request_future.rs b/src/internal/exec/request_future.rs new file mode 100644 index 00000000..c7901110 --- /dev/null +++ b/src/internal/exec/request_future.rs @@ -0,0 +1,57 @@ +use std::{ + fmt, + future::Future, + pin::Pin, + sync::Arc, + task::{Context, Poll}, +}; + +use futures::{ready, Stream}; +use pin_project_lite::pin_project; +use serde_json::Value; + +use crate::{ + internal::{ + exec::{self, Response, ResponseInner}, + middleware::RequestContext, + Body, PinnedOption, PinnedOptionProj, + }, + ExecError, Router, +}; + +use super::arc_ref::ArcRef; + +// TODO: Can we have a public method to convert this into a `RspcTask` by internally grabbing `self.stream` and treating it as a stream???? -> Will we end up with subscriptions like start, done messages being sent? + +/// TODO +pub struct RequestFuture { + pub(crate) id: u32, + + // You will notice this is a `Stream` not a `Future` like would be implied by the struct. + // rspc's whole middleware system only uses `Stream`'s cause it makes life easier so we change to & from a `Future` at the start/end. + pub(crate) stream: ArcRef>>, +} + +impl fmt::Debug for RequestFuture { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct("RequestFuture") + .field("id", &self.id) + .finish() + } +} + +impl Future for RequestFuture { + type Output = Response; + + fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { + Poll::Ready(Response { + id: self.id, + inner: match self.stream.as_mut().poll_next(cx) { + Poll::Ready(Some(Ok(result))) => ResponseInner::Value(result), + Poll::Ready(Some(Err(err))) => ResponseInner::Error(err.into()), + Poll::Ready(None) => ResponseInner::Error(ExecError::ErrStreamEmpty.into()), + Poll::Pending => return Poll::Pending, + }, + }) + } +} diff --git a/src/internal/exec/sink_and_stream.rs b/src/internal/exec/sink_and_stream.rs new file mode 100644 index 00000000..ad1e889c --- /dev/null +++ b/src/internal/exec/sink_and_stream.rs @@ -0,0 +1,63 @@ +use std::{ + pin::Pin, + task::{Context, Poll}, +}; + +use futures::{Sink, Stream}; + +pin_project_lite::pin_project! { + pub struct SinkAndStream { + #[pin] + sink: TSink, + #[pin] + stream: TStream, + } +} + +impl SinkAndStream { + pub fn new(sink: TSink, stream: TStream) -> Self { + Self { sink, stream } + } +} + +impl Sink for SinkAndStream +where + TSink: Sink, +{ + type Error = TSink::Error; + + fn poll_ready(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { + let this = self.project(); + this.sink.poll_ready(cx) + } + + fn start_send(self: Pin<&mut Self>, item: TSinkItem) -> Result<(), Self::Error> { + let this = self.project(); + this.sink.start_send(item) + } + + fn poll_flush(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { + let this = self.project(); + this.sink.poll_flush(cx) + } + + fn poll_close(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { + let this = self.project(); + this.sink.poll_close(cx) + } +} + +impl Stream for SinkAndStream +where + TStream: Stream, +{ + type Item = TStream::Item; + + fn poll_next( + self: std::pin::Pin<&mut Self>, + cx: &mut std::task::Context<'_>, + ) -> std::task::Poll> { + let this = self.project(); + this.stream.poll_next(cx) + } +} diff --git a/src/internal/exec/stream_or_fut.rs b/src/internal/exec/stream_or_fut.rs deleted file mode 100644 index 9b204530..00000000 --- a/src/internal/exec/stream_or_fut.rs +++ /dev/null @@ -1,205 +0,0 @@ -use std::{ - future::Future, - pin::Pin, - sync::Arc, - task::{Context, Poll}, -}; - -use futures::{ready, Stream}; -use pin_project_lite::pin_project; -use serde_json::Value; - -use crate::{ - internal::{ - exec::{self, Response, ResponseInner}, - middleware::RequestContext, - procedure::ProcedureStore, - Body, PinnedOption, PinnedOptionProj, - }, - BuiltRouter, ExecError, -}; - -use super::ExecutorResult; - -/// TODO -pub struct RequestFuture { - id: u32, - - // You will notice this is a `Stream` not a `Future` like would be implied by the struct. - // rspc's whole middleware system only uses `Stream`'s cause it makes life easier so we change to & from a `Future` at the start/end. - stream: Pin>, -} - -impl RequestFuture { - pub fn id(&self) -> u32 { - self.id - } - - pub fn exec( - ctx: TCtx, - procedures: *const ProcedureStore, - req: RequestContext, - input: Option, - ) -> ExecutorResult { - // TODO: This unsafe is not coupled to the Arc which is bad - match unsafe { &*procedures }.store.get(req.path.as_ref()) { - Some(procedure) => ExecutorResult::FutureResponse(Self { - id: req.id, - stream: procedure - .exec - .dyn_call(ctx, input.unwrap_or(Value::Null), req), - }), - None => ExecutorResult::Response(Response { - id: req.id, - inner: ResponseInner::Error(ExecError::OperationNotFound.into()), - }), - } - } - - fn poll(&mut self, cx: &mut Context<'_>) -> Poll { - Poll::Ready(Response { - id: self.id, - inner: match self.stream.as_mut().poll_next(cx) { - Poll::Ready(Some(Ok(result))) => ResponseInner::Value(result), - Poll::Ready(Some(Err(err))) => ResponseInner::Error(err.into()), - Poll::Ready(None) => ResponseInner::Error(ExecError::ErrStreamEmpty.into()), - Poll::Pending => return Poll::Pending, - }, - }) - } -} - -impl Future for RequestFuture { - type Output = Response; - - fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { - Self::poll(&mut self, cx) - } -} - -/// TODO -pub struct RspcTask(Inner); - -impl From for RspcTask { - fn from(value: RequestFuture) -> Self { - Self(Inner::Future(value)) - } -} - -impl RspcTask { - // TODO: Break this out - pub(crate) fn new_stream( - router: Arc>, - ctx: TCtx, - input: Option, - req: RequestContext, - ) -> Result { - let stream: *const _ = match router.subscriptions.store.get(req.path.as_ref()) { - Some(v) => v, - None => return Err(req.id), - }; - - let id = req.id; - - // SAFETY: Trust me bro - let stream = unsafe { &*stream } - .exec - .dyn_call(ctx, input.unwrap_or(Value::Null), req); - - Ok(Self(Inner::Stream { - _arc: router, - reference: stream, - id, - })) - } - - pub fn id(&self) -> u32 { - match self.0 { - Inner::Stream { id, .. } => id, - Inner::Future(ref fut) => fut.id, - Inner::PendingDone { id } => id, - Inner::Done { id } => id, - } - } -} - -enum Inner { - Stream { - id: u32, - // We MUST hold the `Arc` so it doesn't get dropped while the stream exists from it. - _arc: Arc>, - // The stream to poll - reference: Pin>, - }, - Future(RequestFuture), - // When the underlying stream yields `None` we map it to a "complete" message and change to this state. - // This state will yield a `None` to tell the poller we are actually done. - PendingDone { - id: u32, - }, - Done { - id: u32, - }, -} - -impl Stream for RspcTask { - type Item = exec::Response; - - fn poll_next(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { - match &mut self.0 { - Inner::Stream { - id, - ref mut reference, - .. - } => { - Poll::Ready(Some(match ready!(reference.as_mut().poll_next(cx)) { - Some(r) => exec::Response { - id: *id, - inner: match r { - Ok(v) => exec::ResponseInner::Value(v), - Err(err) => exec::ResponseInner::Error(err.into()), - }, - }, - None => { - let id = *id; - cx.waker().wake_by_ref(); // No wakers set so we set one - self.set(Self(Inner::PendingDone { id })); - exec::Response { - id, - inner: exec::ResponseInner::Complete, - } - } - })) - } - Inner::Future(fut) => { - let id = fut.id; - fut.poll(cx).map(|v| { - cx.waker().wake_by_ref(); // No wakers set so we set one - self.set(Self(Inner::PendingDone { id })); - Some(v) - }) - } - Inner::PendingDone { id } => { - let id = *id; - self.set(Self(Inner::Done { id })); - Poll::Ready(None) - } - Inner::Done { .. } => { - #[cfg(debug_assertions)] - panic!("`StreamOrFut` polled after completion"); - - #[cfg(not(debug_assertions))] - Poll::Ready(None) - } - } - } - - fn size_hint(&self) -> (usize, Option) { - match self.0 { - Inner::Stream { ref reference, .. } => reference.size_hint(), - Inner::Future { .. } => (0, Some(1)), - Inner::PendingDone { .. } => (0, Some(0)), - Inner::Done { .. } => (0, Some(0)), - } - } -} diff --git a/src/internal/exec/task.rs b/src/internal/exec/task.rs new file mode 100644 index 00000000..c9663011 --- /dev/null +++ b/src/internal/exec/task.rs @@ -0,0 +1,99 @@ +use std::{fmt, pin::Pin, sync::Arc, task::Poll}; + +use futures::{ready, Stream}; + +use crate::{ + internal::{exec, Body}, + Router, +}; + +use super::{arc_ref::ArcRef, request_future::RequestFuture}; + +// TODO: Should this be called `Task` or `StreamWrapper`? Will depend on it's final form. + +pub enum Status { + ShouldBePolled { done: bool }, + DoNotPoll, +} + +// TODO: docs +pub struct Task { + pub(crate) id: u32, + // You will notice this is a `Stream` not a `Future` like would be implied by the struct. + // rspc's whole middleware system only uses `Stream`'s cause it makes life easier so we change to & from a `Future` at the start/end. + pub(crate) stream: ArcRef>>, + // pub(crate) shutdown + // Mark when the stream is done. This means `self.reference` returned `None` but we still had to yield the complete message so we haven't returned `None` yet. + pub(crate) status: Status, +} + +// pub enum Inner { +// Task(Task), +// Response(exec::Response), +// } + +impl fmt::Debug for Task { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct("StreamWrapper") + .field("id", &self.id) + .finish() + } +} + +impl Stream for Task { + type Item = exec::Response; + + fn poll_next( + mut self: Pin<&mut Self>, + cx: &mut std::task::Context<'_>, + ) -> std::task::Poll> { + match &self.status { + Status::DoNotPoll => { + #[cfg(debug_assertions)] + panic!("`StreamWrapper` polled after completion") + } + Status::ShouldBePolled { done } => { + if *done { + self.status = Status::DoNotPoll; + return Poll::Ready(None); + } + } + } + + Poll::Ready(Some(match ready!(self.stream.as_mut().poll_next(cx)) { + Some(r) => exec::Response { + id: self.id, + inner: match r { + Ok(v) => exec::ResponseInner::Value(v), + Err(err) => exec::ResponseInner::Error(err.into()), + }, + }, + None => { + let id = self.id; + cx.waker().wake_by_ref(); // We want the stream to be called again so we can return `None` and close it + self.status = Status::ShouldBePolled { done: true }; + exec::Response { + id, + inner: exec::ResponseInner::Complete, + } + } + })) + } + + fn size_hint(&self) -> (usize, Option) { + let (min, max) = self.stream.size_hint(); + (min, max.map(|v| v + 1)) + } +} + +impl From for Task { + fn from(value: RequestFuture) -> Self { + Self { + id: value.id, + stream: value.stream, + status: Status::ShouldBePolled { done: false }, + } + } +} + +// TODO: Unit test diff --git a/src/internal/exec/types.rs b/src/internal/exec/types.rs index 84d219b3..41315b3f 100644 --- a/src/internal/exec/types.rs +++ b/src/internal/exec/types.rs @@ -7,39 +7,26 @@ mod private { use crate::{ExecError, ProcedureError, ResolverError}; + #[derive(Clone, Debug, Deserialize, PartialEq, Eq, Type)] + pub struct RequestData { + /// A unique ID used to identify the request + /// It is the client's responsibility to ensure that this ID is unique. + /// When using the HTTP Link this will always be `0`. + pub id: u32, + pub path: Cow<'static, str>, + pub input: Option, + } + /// The type of a request to rspc. /// /// @internal - #[derive(Clone, Debug, Deserialize, PartialEq, Eq, Type)] #[serde(tag = "method", rename_all = "camelCase")] pub enum Request { - Query { - /// A unique ID used to identify the request - /// It is the client's responsibility to ensure that this ID is unique. - /// When using the HTTP Link this will always be `0`. - id: u32, - path: Cow<'static, str>, - input: Option, - }, - Mutation { - /// A unique ID used to identify the request - /// It is the client's responsibility to ensure that this ID is unique. - /// When using the HTTP Link this will always be `0`. - id: u32, - path: Cow<'static, str>, - input: Option, - }, - Subscription { - /// A unique ID used to identify the request - /// It is the client's responsibility to ensure that this ID is unique. - id: u32, - path: Cow<'static, str>, - input: Option, - }, - SubscriptionStop { - id: u32, - }, + Query(RequestData), + Mutation(RequestData), + Subscription(RequestData), + SubscriptionStop { id: u32 }, } /// A value that can be a successful result or an error. @@ -87,6 +74,8 @@ mod private { } } +// TODO: Should some of this stuff be public or private. Removing the `unstable` feature would be nice! + #[cfg(feature = "unstable")] #[cfg_attr(docsrs, doc(cfg(feature = "unstable")))] pub use private::*; diff --git a/src/internal/layer.rs b/src/internal/layer.rs index 09ca8fd2..126f461e 100644 --- a/src/internal/layer.rs +++ b/src/internal/layer.rs @@ -16,6 +16,7 @@ mod private { use super::*; + // TODO: Can we avoid the `TLayerCtx` by building it into the layer pub trait DynLayer: Send + Sync + 'static { fn dyn_call( &self, diff --git a/src/internal/procedure/dyn_procedure.rs b/src/internal/procedure/dyn_procedure.rs deleted file mode 100644 index 68c5caea..00000000 --- a/src/internal/procedure/dyn_procedure.rs +++ /dev/null @@ -1,15 +0,0 @@ -use crate::internal::procedure::ProcedureStore; - -// TODO: Make this `pub(crate)` instead of sealed. -mod private { - use super::*; - - /// TODO - pub struct BuildProceduresCtx<'a, TCtx> { - pub(crate) ty_store: &'a mut specta::TypeMap, - pub(crate) queries: &'a mut ProcedureStore, - pub(crate) mutations: &'a mut ProcedureStore, - pub(crate) subscriptions: &'a mut ProcedureStore, - } -} -pub(crate) use private::*; diff --git a/src/internal/procedure/mod.rs b/src/internal/procedure/mod.rs index d540ed71..b379d8ff 100644 --- a/src/internal/procedure/mod.rs +++ b/src/internal/procedure/mod.rs @@ -1,9 +1,7 @@ //! TODO: Docs -mod dyn_procedure; mod procedure; mod procedure_store; -pub(crate) use dyn_procedure::*; pub(crate) use procedure::*; pub(crate) use procedure_store::*; diff --git a/src/internal/procedure/procedure.rs b/src/internal/procedure/procedure.rs index ae3c24d3..1541b927 100644 --- a/src/internal/procedure/procedure.rs +++ b/src/internal/procedure/procedure.rs @@ -3,13 +3,18 @@ use std::{borrow::Cow, marker::PhantomData}; use serde::de::DeserializeOwned; use specta::Type; -use crate::internal::{ - middleware::{ConstrainedMiddleware, MiddlewareBuilder, MiddlewareLayerBuilder, ProcedureKind}, - procedure::{BuildProceduresCtx, ProcedureDef}, - resolver::{ - FutureMarkerType, HasResolver, RequestLayer, ResolverFunction, ResolverLayer, - StreamMarkerType, +use crate::{ + internal::{ + middleware::{ + ConstrainedMiddleware, MiddlewareBuilder, MiddlewareLayerBuilder, ProcedureKind, + }, + procedure::ProcedureDef, + resolver::{ + FutureMarkerType, HasResolver, RequestLayer, ResolverFunction, ResolverLayer, + StreamMarkerType, + }, }, + Router, }; /// TODO: Explain @@ -30,6 +35,8 @@ mod private { pub(crate) use private::Procedure; +use super::procedure_store; + impl Procedure where TMiddleware: MiddlewareBuilder, @@ -107,17 +114,13 @@ where TResultMarker: 'static, TMiddleware: MiddlewareBuilder, { - pub(crate) fn build( - self, - key: Cow<'static, str>, - ctx: &mut BuildProceduresCtx<'_, TMiddleware::Ctx>, - ) { + pub(crate) fn build(self, key: Cow<'static, str>, ctx: &mut Router) { let HasResolver(resolver, kind, _) = self.resolver; let m = match kind { - ProcedureKind::Query => &mut ctx.queries, - ProcedureKind::Mutation => &mut ctx.mutations, - ProcedureKind::Subscription => &mut ctx.subscriptions, + ProcedureKind::Query => (&mut ctx.queries, "query"), + ProcedureKind::Mutation => (&mut ctx.mutations, "mutation"), + ProcedureKind::Subscription => (&mut ctx.subscriptions, "subscription"), }; let key_str = key.to_string(); @@ -125,10 +128,11 @@ where TMiddleware::Arg, TResult::Result, TResult::Error, - >(key, ctx.ty_store) + >(key, &mut ctx.typ_store) .expect("error exporting types"); // TODO: Error handling using `#[track_caller]` - m.append( + procedure_store::append( + m, key_str, self.mw.build(ResolverLayer::new(move |ctx, input, _| { Ok((resolver)(ctx, input).exec()) diff --git a/src/internal/procedure/procedure_store.rs b/src/internal/procedure/procedure_store.rs index 92ce1aea..049c6821 100644 --- a/src/internal/procedure/procedure_store.rs +++ b/src/internal/procedure/procedure_store.rs @@ -1,5 +1,5 @@ // TODO: Probs unseal a heap of this -use std::{borrow::Cow, collections::BTreeMap, convert::Infallible}; +use std::{borrow::Cow, convert::Infallible}; use specta::{ ts::TsExportError, DataType, DataTypeFrom, DefOpts, NamedDataType, StructType, TupleType, Type, @@ -123,55 +123,9 @@ mod private { &self.ty } } - - pub type ProcedureMap = BTreeMap>; - - pub struct ProcedureStore { - pub(crate) name: &'static str, - pub(crate) store: ProcedureMap, - } - - impl ProcedureStore { - pub const fn new(name: &'static str) -> Self { - Self { - name, - store: BTreeMap::new(), - } - } - - // TODO: Using track caller style thing for the panics in this function - pub(crate) fn append>(&mut self, key: String, exec: L, ty: ProcedureDef) { - // TODO: Cleanup this logic and do better router merging - #[allow(clippy::panic)] - if key.is_empty() || key == "ws" || key.starts_with("rpc.") || key.starts_with("rspc.") - { - 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, - ProcedureTodo { - exec: exec.erase(), - ty, - }, - ); - } - } } -use crate::BuildErrorCause; +use crate::{BuildErrorCause, ProcedureMap}; pub(crate) fn is_valid_name(name: &str) -> Option { if name.is_empty() || name.len() > 255 { @@ -191,4 +145,31 @@ pub(crate) fn is_valid_name(name: &str) -> Option { None } -pub(crate) use private::{ProcedureDef, ProcedureStore, ProcedureTodo}; +// TODO: Using track caller style thing for the panics in this function +pub(crate) fn append>( + (map, type_name): (&mut ProcedureMap, &'static str), + key: String, + exec: L, + ty: ProcedureDef, +) { + // TODO: Cleanup this logic and do better router merging + #[allow(clippy::panic)] + if key.is_empty() || key == "ws" || key.starts_with("rpc.") || key.starts_with("rspc.") { + panic!("rspc error: attempted to create {type_name} operation named '{key}', however this name is not allowed."); + } + + #[allow(clippy::panic)] + if map.contains_key(&key) { + panic!("rspc error: {type_name} operation already has resolver with name '{key}'"); + } + + map.insert( + key, + ProcedureTodo { + exec: exec.erase(), + ty, + }, + ); +} + +pub(crate) use private::{ProcedureDef, ProcedureTodo}; diff --git a/src/internal/resolver/result.rs b/src/internal/resolver/result.rs index da1cd1bd..eb991abf 100644 --- a/src/internal/resolver/result.rs +++ b/src/internal/resolver/result.rs @@ -5,7 +5,7 @@ use std::{ task::{ready, Context, Poll}, }; -use crate::{internal::Body, Blob, Infallible, IntoResolverError}; +use crate::{internal::Body, Infallible, IntoResolverError}; use futures::{ stream::{once, Once}, Stream, @@ -63,26 +63,6 @@ mod private { impl> RequestLayer for T {} // For queries and mutations - - // TODO: Allow `Blob` with `futures::AsyncRead`/`futures:AsyncBufRead` traits - - #[doc(hidden)] - pub enum BlobAsyncBufReadMarker {} - #[cfg(feature = "tokio")] - impl SealedRequestLayer for Blob - where - S: tokio::io::AsyncBufRead + Send + 'static, - { - type Result = (); - type Error = crate::Infallible; - type Body = BlobStream; - type TypeMarker = FutureMarkerType; - - fn exec(self) -> Self::Body { - BlobStream { stream: self.0 } - } - } - #[doc(hidden)] pub enum ResultMarker {} impl SealedRequestLayer for Result @@ -107,33 +87,6 @@ mod private { } } - #[doc(hidden)] - pub struct FutureBlobAsyncBufReadMarker( - PhantomData<(S, TError)>, - // Prevents this type from being instantiated - Infallible, - ); - #[cfg(feature = "tokio")] - impl SealedRequestLayer> for TFut - where - TFut: Future> + Send + 'static, - S: tokio::io::AsyncBufRead + Send + 'static, - TError: IntoResolverError, - { - type Result = (); - type Error = TError; - type Body = FutureBlobStream; - type TypeMarker = FutureMarkerType; - - fn exec(self) -> Self::Body { - FutureBlobStream { - fut: self, - map: |v| v.0, - phantom: PhantomData, - } - } - } - #[doc(hidden)] pub enum FutureResultMarker {} impl SealedRequestLayer for TFut diff --git a/src/lib.rs b/src/lib.rs index be232f15..ff24bc5b 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -11,6 +11,7 @@ clippy::panic_in_result_fn, // missing_docs )] +// #![deny(unsafe_code)] // TODO: Enable this #![allow(clippy::module_inception)] #![allow(clippy::type_complexity)] // TODO: Fix this and disable it #![cfg_attr(docsrs, feature(doc_cfg))] @@ -19,23 +20,14 @@ #[cfg_attr(docsrs, doc(cfg(feature = "unstable")))] pub mod unstable; -mod blob; -mod built_router; mod error; mod router; +mod router_builder; mod rspc; pub use crate::rspc::*; -pub use built_router::*; pub use error::*; pub use router::*; +pub use router_builder::*; -pub mod integrations; pub mod internal; - -#[cfg(feature = "unstable")] -#[cfg_attr(docsrs, doc(cfg(feature = "unstable")))] -pub use blob::Blob; - -#[cfg(not(feature = "unstable"))] -pub(crate) use blob::Blob; diff --git a/src/built_router.rs b/src/router.rs similarity index 76% rename from src/built_router.rs rename to src/router.rs index 0da94852..eabf9c06 100644 --- a/src/built_router.rs +++ b/src/router.rs @@ -1,6 +1,7 @@ use std::{ borrow::Cow, collections::BTreeMap, + fmt, fs::{self, File}, io::Write, path::PathBuf, @@ -13,10 +14,11 @@ use specta::{ }; use crate::{ - internal::procedure::{ProcedureStore, ProcedureTodo, ProceduresDef}, + internal::procedure::{ProcedureTodo, ProceduresDef}, ExportError, }; +// TODO: Break this out into it's own file /// ExportConfig is used to configure how rspc will export your types. pub struct ExportConfig { export_path: PathBuf, @@ -48,18 +50,39 @@ impl ExportConfig { } } -/// BuiltRouter is a router that has been constructed and validated. It is ready to be attached to an integration to serve it to the outside world! -pub struct BuiltRouter { - pub(crate) queries: ProcedureStore, - pub(crate) mutations: ProcedureStore, - pub(crate) subscriptions: ProcedureStore, +pub(crate) type ProcedureMap = BTreeMap>; + +/// Router is a router that has been constructed and validated. It is ready to be attached to an integration to serve it to the outside world! +pub struct Router { + pub(crate) queries: ProcedureMap, + pub(crate) mutations: ProcedureMap, + pub(crate) subscriptions: ProcedureMap, pub(crate) typ_store: TypeMap, } -impl BuiltRouter +impl fmt::Debug for Router { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct("Router").finish() + } +} + +// This is to avoid needing to constrain `TCtx: Default` like the derive macro requires +impl Default for Router { + fn default() -> Self { + Self { + queries: Default::default(), + mutations: Default::default(), + subscriptions: Default::default(), + typ_store: Default::default(), + } + } +} + +impl Router where TCtx: Send + 'static, { + // TODO: Remove this and force it to always be `Arc`ed from the point it was constructed??? pub fn arced(self) -> Arc { Arc::new(self) } @@ -74,21 +97,6 @@ where self.typ_store.clone() } - #[cfg(feature = "unstable")] - pub fn queries(&self) -> &BTreeMap> { - &self.queries.store - } - - #[cfg(feature = "unstable")] - pub fn mutations(&self) -> &BTreeMap> { - &self.mutations.store - } - - #[cfg(feature = "unstable")] - pub fn subscriptions(&self) -> &BTreeMap> { - &self.subscriptions.store - } - #[allow(clippy::panic_in_result_fn)] // TODO: Error handling given we return `Result` #[cfg(feature = "typescript")] pub fn export_ts(&self, cfg: ExportConfig) -> Result<(), ExportError> { @@ -114,9 +122,9 @@ where ts::export_named_datatype( &config, &ProceduresDef::new( - self.queries.store.values(), - self.mutations.store.values(), - self.subscriptions.store.values() + self.queries.values(), + self.mutations.values(), + self.subscriptions.values() ) .to_named(), &self.typ_store() @@ -188,3 +196,19 @@ where Ok(()) } } + +// TODO: Plz try and get rid of these. They are escape hatches for Spacedrive's invalidation system that is dearly in need of a makeover. +#[cfg(feature = "unstable")] +impl Router { + pub fn queries(&self) -> &BTreeMap> { + &self.queries + } + + pub fn mutations(&self) -> &BTreeMap> { + &self.mutations + } + + pub fn subscriptions(&self) -> &BTreeMap> { + &self.subscriptions + } +} diff --git a/src/router/mod.rs b/src/router/mod.rs deleted file mode 100644 index 4b1389f4..00000000 --- a/src/router/mod.rs +++ /dev/null @@ -1,5 +0,0 @@ -mod error; -mod router; - -pub use error::*; -pub use router::*; diff --git a/src/router/error.rs b/src/router_builder/error.rs similarity index 95% rename from src/router/error.rs rename to src/router_builder/error.rs index ba201b89..b985af83 100644 --- a/src/router/error.rs +++ b/src/router_builder/error.rs @@ -2,7 +2,7 @@ use std::{borrow::Cow, panic::Location}; use thiserror::Error; -use crate::BuiltRouter; +use crate::Router; /// TODO #[derive(Debug, PartialEq, Eq)] @@ -40,7 +40,7 @@ pub(crate) enum BuildErrorCause { /// TODO pub enum BuildResult { - Ok(BuiltRouter), + Ok(Router), Err(Vec), } @@ -55,7 +55,7 @@ impl PartialEq for BuildResult { } impl BuildResult { - pub fn unwrap(self) -> BuiltRouter { + pub fn unwrap(self) -> Router { match self { Self::Ok(router) => router, Self::Err(errors) => { diff --git a/src/router_builder/mod.rs b/src/router_builder/mod.rs new file mode 100644 index 00000000..49de3a47 --- /dev/null +++ b/src/router_builder/mod.rs @@ -0,0 +1,5 @@ +mod error; +mod router_builder; + +pub use error::*; +pub use router_builder::*; diff --git a/src/router/router.rs b/src/router_builder/router_builder.rs similarity index 72% rename from src/router/router.rs rename to src/router_builder/router_builder.rs index ecb456f7..4ab7e604 100644 --- a/src/router/router.rs +++ b/src/router_builder/router_builder.rs @@ -1,20 +1,20 @@ use std::{borrow::Cow, panic::Location}; use serde::de::DeserializeOwned; -use specta::{Type, TypeMap}; +use specta::Type; use crate::{ internal::{ middleware::MiddlewareBuilder, - procedure::{is_valid_name, BuildProceduresCtx, Procedure, ProcedureStore}, + procedure::{is_valid_name, Procedure}, resolver::{HasResolver, RequestLayer}, }, - BuildError, BuildResult, BuiltRouter, + BuildError, BuildResult, Router, }; -type ProcedureBuildFn = Box, &mut BuildProceduresCtx<'_, TCtx>)>; +type ProcedureBuildFn = Box, &mut Router)>; -pub struct Router +pub struct RouterBuilder where TCtx: Send + Sync + 'static, { @@ -22,7 +22,7 @@ where errors: Vec, } -impl Router +impl RouterBuilder where TCtx: Send + Sync + 'static, { @@ -71,7 +71,7 @@ where #[track_caller] #[allow(unused_mut)] - pub fn merge(mut self, prefix: &'static str, mut r: Router) -> Self { + pub fn merge(mut self, prefix: &'static str, mut r: RouterBuilder) -> Self { if let Some(cause) = is_valid_name(prefix) { self.errors.push(BuildError { cause, @@ -109,31 +109,13 @@ where return BuildResult::Err(self.errors); } - // TODO: Eventually take these as an argument so we can access the plugin store from the parent router -> For this we do this for compat - let mut queries = ProcedureStore::new("queries"); // TODO: Take in as arg - let mut mutations = ProcedureStore::new("mutations"); // TODO: Take in as arg - let mut subscriptions = ProcedureStore::new("subscriptions"); // TODO: Take in as arg - let mut typ_store = TypeMap::new(); // TODO: Take in as arg - - let mut ctx = BuildProceduresCtx { - ty_store: &mut typ_store, - queries: &mut queries, - mutations: &mut mutations, - subscriptions: &mut subscriptions, - }; + let mut router = Router::default(); for (key, build_fn) in self.procedures.into_iter() { // TODO: Pass in the `key` here with the router merging prefixes already applied so it's the final runtime key - (build_fn)(key, &mut ctx); + (build_fn)(key, &mut router); } - let router = BuiltRouter { - queries, - mutations, - subscriptions, - typ_store, - }; - BuildResult::Ok(router) } } diff --git a/src/rspc.rs b/src/rspc.rs index 142ae495..3a802e73 100644 --- a/src/rspc.rs +++ b/src/rspc.rs @@ -8,7 +8,7 @@ use crate::{ procedure::{MissingResolver, Procedure}, resolver::{FutureMarkerType, RequestLayer, ResolverFunction, StreamMarkerType}, }, - Infallible, IntoResolverError, Router, + Infallible, IntoResolverError, RouterBuilder, }; /// Rspc is a starting point for constructing rspc procedures or routers. @@ -63,8 +63,8 @@ where TCtx: Send + Sync + 'static, TError: IntoResolverError, { - pub fn router(&self) -> Router { - Router::_internal_new() + pub fn router(&self) -> RouterBuilder { + RouterBuilder::_internal_new() } pub fn error(self) -> Procedure, BaseMiddleware> { diff --git a/tests/exec2.rs b/tests/exec2.rs new file mode 100644 index 00000000..b020f9cc --- /dev/null +++ b/tests/exec2.rs @@ -0,0 +1,37 @@ +// TODO: Unit testing with Tokio loom + +use streamunordered::StreamUnordered; + +// construct a basic router for testing the executor +fn router() { + todo!(); +} + +// Replicate a websocket-style setup where we have a `Stream + Sink` and wanna restrict each client to a single task. +#[tokio::test] +async fn test_executor_websocket_like() { + // let executor = todo!(); + + // tokio::spawn(async move { + // // let futs = StreamUnordered>::new(): + // // let conn = Connection::new(); + // tokio::select! { + // // _ = futs => { + // // TODO: tx.send(); + // // } + // // _ = rx.recv() => { + // // TODO: executor.execute(&mut conn, ctx, req); + // // TODO: either tx.send() or futs.push(); + // // } + // } + // // let + // }); +} + +// // Just doing regular in-memory query/mutations & subscriptions with a little code as possible +// #[tokio::test] +// async fn test_executor_minimal() { +// todo!(); +// } + +// TODO: Unit test batching