diff --git a/engine/packages/config/src/config/runtime.rs b/engine/packages/config/src/config/runtime.rs index 8b22affa86..489b95507d 100644 --- a/engine/packages/config/src/config/runtime.rs +++ b/engine/packages/config/src/config/runtime.rs @@ -9,10 +9,10 @@ pub struct Runtime { /// Defaults to 30 seconds. worker_shutdown_duration: Option, /// Time (in seconds) to allow for guard to wait for pending requests after receiving SIGTERM. Defaults - // to 1 hour. + /// to 1 hour. guard_shutdown_duration: Option, /// Whether or not to allow running the engine when the previous version that was run is higher than - // the current version. + /// the current version. allow_version_rollback: Option, } diff --git a/engine/packages/gasoline/src/worker.rs b/engine/packages/gasoline/src/worker.rs index 2e650cfb27..98b9c8cdb5 100644 --- a/engine/packages/gasoline/src/worker.rs +++ b/engine/packages/gasoline/src/worker.rs @@ -323,7 +323,7 @@ impl Worker { if remaining_workflows == 0 { tracing::info!("all workflows evicted"); } else { - tracing::warn!(remaining_workflows=?self.running_workflows.len(), "not all workflows evicted"); + tracing::warn!(?remaining_workflows, "not all workflows evicted"); } tracing::info!("worker shutdown complete"); diff --git a/engine/packages/guard-core/src/lib.rs b/engine/packages/guard-core/src/lib.rs index 35207a8496..25f0d4a954 100644 --- a/engine/packages/guard-core/src/lib.rs +++ b/engine/packages/guard-core/src/lib.rs @@ -6,6 +6,7 @@ pub mod metrics; pub mod proxy_service; pub mod request_context; mod server; +mod task_group; pub mod types; pub mod websocket_handle; diff --git a/engine/packages/guard-core/src/proxy_service.rs b/engine/packages/guard-core/src/proxy_service.rs index 6a03749033..d025c0e0a4 100644 --- a/engine/packages/guard-core/src/proxy_service.rs +++ b/engine/packages/guard-core/src/proxy_service.rs @@ -35,6 +35,7 @@ use crate::{ custom_serve::{CustomServeTrait, HibernationResult}, errors, metrics, request_context::RequestContext, + task_group::TaskGroup, }; const X_RIVET_TARGET: HeaderName = HeaderName::from_static("x-rivet-target"); @@ -350,6 +351,7 @@ pub struct ProxyState { in_flight_counters: Cache<(Id, std::net::IpAddr), Arc>>, port_type: PortType, clickhouse_inserter: Option, + tasks: Arc, } impl ProxyState { @@ -377,6 +379,7 @@ impl ProxyState { .build(), port_type, clickhouse_inserter, + tasks: TaskGroup::new(), } } @@ -782,14 +785,6 @@ impl ProxyService { metrics::PROXY_REQUEST_PENDING.add(1, &[]); metrics::PROXY_REQUEST_TOTAL.add(1, &[]); - // Prepare to release in-flight counter when done - let state_clone = self.state.clone(); - crate::defer! { - tokio::spawn(async move { - state_clone.release_in_flight(client_ip, &actor_id).await; - }.instrument(tracing::info_span!("release_in_flight_task"))); - } - // Update request context with target info if let Some(actor_id) = actor_id { request_context.service_actor_id = Some(actor_id); @@ -814,6 +809,15 @@ impl ProxyService { metrics::PROXY_REQUEST_PENDING.add(-1, &[]); + // Release in-flight counter when done + let state_clone = self.state.clone(); + tokio::spawn( + async move { + state_clone.release_in_flight(client_ip, &actor_id).await; + } + .instrument(tracing::info_span!("release_in_flight_task")), + ); + res } @@ -1254,7 +1258,7 @@ impl ProxyService { match target { ResolveRouteOutput::Target(mut target) => { tracing::debug!("Spawning task to handle WebSocket communication"); - tokio::spawn( + self.state.tasks.spawn( async move { // Set up a timeout for the entire operation let timeout_duration = Duration::from_secs(30); // 30 seconds timeout @@ -1837,7 +1841,7 @@ impl ProxyService { let req_path = req_path.clone(); let req_host = req_host.clone(); - tokio::spawn( + self.state.tasks.spawn( async move { let request_id = Uuid::new_v4(); let mut ws_hibernation_close = false; @@ -2194,7 +2198,7 @@ impl ProxyService { Ok((client_response, client_ws)) => { tracing::debug!("Client WebSocket upgrade for error proxy successful"); - tokio::spawn( + self.state.tasks.spawn( async move { let ws_handle = match WebSocketHandle::new(client_ws).await { Ok(ws_handle) => ws_handle, @@ -2337,11 +2341,14 @@ impl ProxyService { // Insert analytics event asynchronously let mut context_clone = request_context.clone(); - tokio::spawn(async move { - if let Err(error) = context_clone.insert_event().await { - tracing::warn!(?error, "failed to insert guard analytics event"); + tokio::spawn( + async move { + if let Err(error) = context_clone.insert_event().await { + tracing::warn!(?error, "failed to insert guard analytics event"); + } } - }); + .instrument(tracing::info_span!("insert_event_task")), + ); let content_length = res .headers() @@ -2407,24 +2414,10 @@ impl ProxyServiceFactory { pub fn create_service(&self, remote_addr: SocketAddr) -> ProxyService { ProxyService::new(self.state.clone(), remote_addr) } -} -// Helper macro for defer-like functionality -#[macro_export] -macro_rules! defer { - ($($body:tt)*) => { - let _guard = { - struct Guard(Option); - impl Drop for Guard { - fn drop(&mut self) { - if let Some(f) = self.0.take() { - f() - } - } - } - Guard(Some(|| { $($body)* })) - }; - }; + pub async fn wait_idle(&self) { + self.state.tasks.wait_idle().await + } } fn add_proxy_headers_with_addr( diff --git a/engine/packages/guard-core/src/server.rs b/engine/packages/guard-core/src/server.rs index cb05688dcd..333a61ad0d 100644 --- a/engine/packages/guard-core/src/server.rs +++ b/engine/packages/guard-core/src/server.rs @@ -4,9 +4,6 @@ use std::{ time::{Duration, Instant}, }; -use crate::cert_resolver::{CertResolverFn, create_tls_config}; -use crate::metrics; -use crate::proxy_service::{CacheKeyFn, MiddlewareFn, ProxyServiceFactory, RoutingFn}; use anyhow::Result; use futures_util::FutureExt; use hyper::service::service_fn; @@ -14,6 +11,10 @@ use rivet_runtime::TermSignal; use tokio_rustls::TlsAcceptor; use tracing::Instrument; +use crate::cert_resolver::{CertResolverFn, create_tls_config}; +use crate::metrics; +use crate::proxy_service::{CacheKeyFn, MiddlewareFn, ProxyServiceFactory, RoutingFn}; + // Start the server #[tracing::instrument(skip_all)] pub async fn run_server( @@ -72,11 +73,8 @@ pub async fn run_server( (None, None, None, None) }; - // Set up server builder and graceful shutdown let server = hyper_util::server::conn::auto::Builder::new(hyper_util::rt::TokioExecutor::new()); let graceful = hyper_util::server::graceful::GracefulShutdown::new(); - - // Set up signal handling for graceful shutdown let mut term_signal = TermSignal::new().await; tracing::info!("HTTP server listening on {}", http_addr); @@ -252,11 +250,23 @@ pub async fn run_server( let shutdown_duration = config.runtime.guard_shutdown_duration(); tracing::info!(duration=?shutdown_duration, "starting guard shutdown"); - let mut graceful_fut = async move { graceful.shutdown().await }.boxed(); + let mut complete_fut = async move { + // Wait until remaining requests finish + graceful.shutdown().await; + + // Wait until remaining tasks finish + http_factory.wait_idle().await; + + if let Some(https_factory) = https_factory { + https_factory.wait_idle().await; + } + } + .boxed(); + let shutdown_start = Instant::now(); loop { tokio::select! { - _ = &mut graceful_fut => { + _ = &mut complete_fut => { tracing::info!("all guard requests completed"); break; } diff --git a/engine/packages/guard-core/src/task_group.rs b/engine/packages/guard-core/src/task_group.rs new file mode 100644 index 0000000000..c99666bd82 --- /dev/null +++ b/engine/packages/guard-core/src/task_group.rs @@ -0,0 +1,57 @@ +use std::sync::Arc; +use std::sync::atomic::{AtomicUsize, Ordering}; + +use futures::Future; +use tokio::sync::Notify; +use tracing::Instrument; + +pub struct TaskGroup { + running_count: AtomicUsize, + notify: Notify, +} + +impl TaskGroup { + pub fn new() -> Arc { + Arc::new(Self { + running_count: AtomicUsize::new(0), + notify: Notify::new(), + }) + } + + pub fn spawn(self: &Arc, fut: F) + where + F: Future + Send + 'static, + { + self.running_count.fetch_add(1, Ordering::Relaxed); + + // TODO: Handle panics + let self2 = self.clone(); + tokio::spawn( + async move { + fut.await; + + // Decrement and notify any waiters if the count hits zero + if self2.running_count.fetch_sub(1, Ordering::AcqRel) == 1 { + self2.notify.notify_waiters(); + } + } + .in_current_span(), + ); + } + + #[tracing::instrument(skip_all)] + pub async fn wait_idle(&self) { + // Fast path + if self.running_count.load(Ordering::Acquire) == 0 { + return; + } + + // Wait for notifications until the count reaches zero + loop { + self.notify.notified().await; + if self.running_count.load(Ordering::Acquire) == 0 { + break; + } + } + } +} diff --git a/engine/packages/service-manager/Cargo.toml b/engine/packages/service-manager/Cargo.toml index d80027f74b..d32fe6f86b 100644 --- a/engine/packages/service-manager/Cargo.toml +++ b/engine/packages/service-manager/Cargo.toml @@ -16,4 +16,4 @@ rivet-pools.workspace = true rivet-runtime.workspace = true tokio-cron-scheduler.workspace = true tokio.workspace = true -tracing.workspace = true \ No newline at end of file +tracing.workspace = true diff --git a/engine/packages/service-manager/src/lib.rs b/engine/packages/service-manager/src/lib.rs index e3970f01ae..638aee72e5 100644 --- a/engine/packages/service-manager/src/lib.rs +++ b/engine/packages/service-manager/src/lib.rs @@ -160,9 +160,9 @@ pub async fn start( loop { match (service.run)(config.clone(), pools.clone()).await { - Result::Ok(res) => { + Result::Ok(_) => { if shutting_down.load(Ordering::SeqCst) { - tracing::info!(service=%service.name, ?res, "service exited"); + tracing::info!(service=%service.name, "service exited"); break; } else { tracing::error!(service=%service.name, "service exited unexpectedly"); diff --git a/frontend/src/routeTree.gen.ts b/frontend/src/routeTree.gen.ts index 70ac67d4b7..4b0ecb902e 100644 --- a/frontend/src/routeTree.gen.ts +++ b/frontend/src/routeTree.gen.ts @@ -8,567 +8,568 @@ // You should NOT make any changes in this file as it will be overwritten. // Additionally, you should also exclude this file from your linter and/or formatter to prevent it from being checked or modified. -import { Route as rootRouteImport } from './routes/__root' -import { Route as SsoCallbackRouteImport } from './routes/sso-callback' -import { Route as OnboardingRouteImport } from './routes/onboarding' -import { Route as LoginRouteImport } from './routes/login' -import { Route as JoinRouteImport } from './routes/join' -import { Route as ContextRouteImport } from './routes/_context' -import { Route as ContextIndexRouteImport } from './routes/_context/index' -import { Route as OnboardingChooseOrganizationRouteImport } from './routes/onboarding/choose-organization' -import { Route as OnboardingAcceptInvitationRouteImport } from './routes/onboarding/accept-invitation' -import { Route as ContextEngineRouteImport } from './routes/_context/_engine' -import { Route as ContextCloudRouteImport } from './routes/_context/_cloud' -import { Route as ContextEngineNsNamespaceRouteImport } from './routes/_context/_engine/ns.$namespace' -import { Route as ContextCloudOrgsOrganizationRouteImport } from './routes/_context/_cloud/orgs.$organization' -import { Route as ContextEngineNsNamespaceIndexRouteImport } from './routes/_context/_engine/ns.$namespace/index' -import { Route as ContextCloudOrgsOrganizationIndexRouteImport } from './routes/_context/_cloud/orgs.$organization/index' -import { Route as ContextEngineNsNamespaceConnectRouteImport } from './routes/_context/_engine/ns.$namespace/connect' -import { Route as ContextCloudOrgsOrganizationProjectsIndexRouteImport } from './routes/_context/_cloud/orgs.$organization/projects.index' -import { Route as ContextCloudOrgsOrganizationProjectsProjectRouteImport } from './routes/_context/_cloud/orgs.$organization/projects.$project' -import { Route as ContextCloudOrgsOrganizationProjectsProjectIndexRouteImport } from './routes/_context/_cloud/orgs.$organization/projects.$project/index' -import { Route as ContextCloudOrgsOrganizationProjectsProjectNsNamespaceRouteImport } from './routes/_context/_cloud/orgs.$organization/projects.$project/ns.$namespace' -import { Route as ContextCloudOrgsOrganizationProjectsProjectNsNamespaceIndexRouteImport } from './routes/_context/_cloud/orgs.$organization/projects.$project/ns.$namespace/index' -import { Route as ContextCloudOrgsOrganizationProjectsProjectNsNamespaceConnectRouteImport } from './routes/_context/_cloud/orgs.$organization/projects.$project/ns.$namespace/connect' +import { Route as rootRouteImport } from "./routes/__root"; +import { Route as ContextRouteImport } from "./routes/_context"; +import { Route as ContextCloudRouteImport } from "./routes/_context/_cloud"; +import { Route as ContextCloudOrgsOrganizationRouteImport } from "./routes/_context/_cloud/orgs.$organization"; +import { Route as ContextCloudOrgsOrganizationIndexRouteImport } from "./routes/_context/_cloud/orgs.$organization/index"; +import { Route as ContextCloudOrgsOrganizationProjectsProjectRouteImport } from "./routes/_context/_cloud/orgs.$organization/projects.$project"; +import { Route as ContextCloudOrgsOrganizationProjectsProjectIndexRouteImport } from "./routes/_context/_cloud/orgs.$organization/projects.$project/index"; +import { Route as ContextCloudOrgsOrganizationProjectsProjectNsNamespaceRouteImport } from "./routes/_context/_cloud/orgs.$organization/projects.$project/ns.$namespace"; +import { Route as ContextCloudOrgsOrganizationProjectsProjectNsNamespaceConnectRouteImport } from "./routes/_context/_cloud/orgs.$organization/projects.$project/ns.$namespace/connect"; +import { Route as ContextCloudOrgsOrganizationProjectsProjectNsNamespaceIndexRouteImport } from "./routes/_context/_cloud/orgs.$organization/projects.$project/ns.$namespace/index"; +import { Route as ContextCloudOrgsOrganizationProjectsIndexRouteImport } from "./routes/_context/_cloud/orgs.$organization/projects.index"; +import { Route as ContextEngineRouteImport } from "./routes/_context/_engine"; +import { Route as ContextEngineNsNamespaceRouteImport } from "./routes/_context/_engine/ns.$namespace"; +import { Route as ContextEngineNsNamespaceConnectRouteImport } from "./routes/_context/_engine/ns.$namespace/connect"; +import { Route as ContextEngineNsNamespaceIndexRouteImport } from "./routes/_context/_engine/ns.$namespace/index"; +import { Route as ContextIndexRouteImport } from "./routes/_context/index"; +import { Route as JoinRouteImport } from "./routes/join"; +import { Route as LoginRouteImport } from "./routes/login"; +import { Route as OnboardingRouteImport } from "./routes/onboarding"; +import { Route as OnboardingAcceptInvitationRouteImport } from "./routes/onboarding/accept-invitation"; +import { Route as OnboardingChooseOrganizationRouteImport } from "./routes/onboarding/choose-organization"; +import { Route as SsoCallbackRouteImport } from "./routes/sso-callback"; const SsoCallbackRoute = SsoCallbackRouteImport.update({ - id: '/sso-callback', - path: '/sso-callback', - getParentRoute: () => rootRouteImport, -} as any) + id: "/sso-callback", + path: "/sso-callback", + getParentRoute: () => rootRouteImport, +} as any); const OnboardingRoute = OnboardingRouteImport.update({ - id: '/onboarding', - path: '/onboarding', - getParentRoute: () => rootRouteImport, -} as any) + id: "/onboarding", + path: "/onboarding", + getParentRoute: () => rootRouteImport, +} as any); const LoginRoute = LoginRouteImport.update({ - id: '/login', - path: '/login', - getParentRoute: () => rootRouteImport, -} as any) + id: "/login", + path: "/login", + getParentRoute: () => rootRouteImport, +} as any); const JoinRoute = JoinRouteImport.update({ - id: '/join', - path: '/join', - getParentRoute: () => rootRouteImport, -} as any) + id: "/join", + path: "/join", + getParentRoute: () => rootRouteImport, +} as any); const ContextRoute = ContextRouteImport.update({ - id: '/_context', - getParentRoute: () => rootRouteImport, -} as any) + id: "/_context", + getParentRoute: () => rootRouteImport, +} as any); const ContextIndexRoute = ContextIndexRouteImport.update({ - id: '/', - path: '/', - getParentRoute: () => ContextRoute, -} as any) + id: "/", + path: "/", + getParentRoute: () => ContextRoute, +} as any); const OnboardingChooseOrganizationRoute = - OnboardingChooseOrganizationRouteImport.update({ - id: '/choose-organization', - path: '/choose-organization', - getParentRoute: () => OnboardingRoute, - } as any) + OnboardingChooseOrganizationRouteImport.update({ + id: "/choose-organization", + path: "/choose-organization", + getParentRoute: () => OnboardingRoute, + } as any); const OnboardingAcceptInvitationRoute = - OnboardingAcceptInvitationRouteImport.update({ - id: '/accept-invitation', - path: '/accept-invitation', - getParentRoute: () => OnboardingRoute, - } as any) + OnboardingAcceptInvitationRouteImport.update({ + id: "/accept-invitation", + path: "/accept-invitation", + getParentRoute: () => OnboardingRoute, + } as any); const ContextEngineRoute = ContextEngineRouteImport.update({ - id: '/_engine', - getParentRoute: () => ContextRoute, -} as any) + id: "/_engine", + getParentRoute: () => ContextRoute, +} as any); const ContextCloudRoute = ContextCloudRouteImport.update({ - id: '/_cloud', - getParentRoute: () => ContextRoute, -} as any) + id: "/_cloud", + getParentRoute: () => ContextRoute, +} as any); const ContextEngineNsNamespaceRoute = - ContextEngineNsNamespaceRouteImport.update({ - id: '/ns/$namespace', - path: '/ns/$namespace', - getParentRoute: () => ContextEngineRoute, - } as any) + ContextEngineNsNamespaceRouteImport.update({ + id: "/ns/$namespace", + path: "/ns/$namespace", + getParentRoute: () => ContextEngineRoute, + } as any); const ContextCloudOrgsOrganizationRoute = - ContextCloudOrgsOrganizationRouteImport.update({ - id: '/orgs/$organization', - path: '/orgs/$organization', - getParentRoute: () => ContextCloudRoute, - } as any) + ContextCloudOrgsOrganizationRouteImport.update({ + id: "/orgs/$organization", + path: "/orgs/$organization", + getParentRoute: () => ContextCloudRoute, + } as any); const ContextEngineNsNamespaceIndexRoute = - ContextEngineNsNamespaceIndexRouteImport.update({ - id: '/', - path: '/', - getParentRoute: () => ContextEngineNsNamespaceRoute, - } as any) + ContextEngineNsNamespaceIndexRouteImport.update({ + id: "/", + path: "/", + getParentRoute: () => ContextEngineNsNamespaceRoute, + } as any); const ContextCloudOrgsOrganizationIndexRoute = - ContextCloudOrgsOrganizationIndexRouteImport.update({ - id: '/', - path: '/', - getParentRoute: () => ContextCloudOrgsOrganizationRoute, - } as any) + ContextCloudOrgsOrganizationIndexRouteImport.update({ + id: "/", + path: "/", + getParentRoute: () => ContextCloudOrgsOrganizationRoute, + } as any); const ContextEngineNsNamespaceConnectRoute = - ContextEngineNsNamespaceConnectRouteImport.update({ - id: '/connect', - path: '/connect', - getParentRoute: () => ContextEngineNsNamespaceRoute, - } as any) + ContextEngineNsNamespaceConnectRouteImport.update({ + id: "/connect", + path: "/connect", + getParentRoute: () => ContextEngineNsNamespaceRoute, + } as any); const ContextCloudOrgsOrganizationProjectsIndexRoute = - ContextCloudOrgsOrganizationProjectsIndexRouteImport.update({ - id: '/projects/', - path: '/projects/', - getParentRoute: () => ContextCloudOrgsOrganizationRoute, - } as any) + ContextCloudOrgsOrganizationProjectsIndexRouteImport.update({ + id: "/projects/", + path: "/projects/", + getParentRoute: () => ContextCloudOrgsOrganizationRoute, + } as any); const ContextCloudOrgsOrganizationProjectsProjectRoute = - ContextCloudOrgsOrganizationProjectsProjectRouteImport.update({ - id: '/projects/$project', - path: '/projects/$project', - getParentRoute: () => ContextCloudOrgsOrganizationRoute, - } as any) + ContextCloudOrgsOrganizationProjectsProjectRouteImport.update({ + id: "/projects/$project", + path: "/projects/$project", + getParentRoute: () => ContextCloudOrgsOrganizationRoute, + } as any); const ContextCloudOrgsOrganizationProjectsProjectIndexRoute = - ContextCloudOrgsOrganizationProjectsProjectIndexRouteImport.update({ - id: '/', - path: '/', - getParentRoute: () => ContextCloudOrgsOrganizationProjectsProjectRoute, - } as any) + ContextCloudOrgsOrganizationProjectsProjectIndexRouteImport.update({ + id: "/", + path: "/", + getParentRoute: () => ContextCloudOrgsOrganizationProjectsProjectRoute, + } as any); const ContextCloudOrgsOrganizationProjectsProjectNsNamespaceRoute = - ContextCloudOrgsOrganizationProjectsProjectNsNamespaceRouteImport.update({ - id: '/ns/$namespace', - path: '/ns/$namespace', - getParentRoute: () => ContextCloudOrgsOrganizationProjectsProjectRoute, - } as any) + ContextCloudOrgsOrganizationProjectsProjectNsNamespaceRouteImport.update({ + id: "/ns/$namespace", + path: "/ns/$namespace", + getParentRoute: () => ContextCloudOrgsOrganizationProjectsProjectRoute, + } as any); const ContextCloudOrgsOrganizationProjectsProjectNsNamespaceIndexRoute = - ContextCloudOrgsOrganizationProjectsProjectNsNamespaceIndexRouteImport.update( - { - id: '/', - path: '/', - getParentRoute: () => - ContextCloudOrgsOrganizationProjectsProjectNsNamespaceRoute, - } as any, - ) + ContextCloudOrgsOrganizationProjectsProjectNsNamespaceIndexRouteImport.update( + { + id: "/", + path: "/", + getParentRoute: () => + ContextCloudOrgsOrganizationProjectsProjectNsNamespaceRoute, + } as any, + ); const ContextCloudOrgsOrganizationProjectsProjectNsNamespaceConnectRoute = - ContextCloudOrgsOrganizationProjectsProjectNsNamespaceConnectRouteImport.update( - { - id: '/connect', - path: '/connect', - getParentRoute: () => - ContextCloudOrgsOrganizationProjectsProjectNsNamespaceRoute, - } as any, - ) + ContextCloudOrgsOrganizationProjectsProjectNsNamespaceConnectRouteImport.update( + { + id: "/connect", + path: "/connect", + getParentRoute: () => + ContextCloudOrgsOrganizationProjectsProjectNsNamespaceRoute, + } as any, + ); export interface FileRoutesByFullPath { - '/join': typeof JoinRoute - '/login': typeof LoginRoute - '/onboarding': typeof OnboardingRouteWithChildren - '/sso-callback': typeof SsoCallbackRoute - '/onboarding/accept-invitation': typeof OnboardingAcceptInvitationRoute - '/onboarding/choose-organization': typeof OnboardingChooseOrganizationRoute - '/': typeof ContextIndexRoute - '/orgs/$organization': typeof ContextCloudOrgsOrganizationRouteWithChildren - '/ns/$namespace': typeof ContextEngineNsNamespaceRouteWithChildren - '/ns/$namespace/connect': typeof ContextEngineNsNamespaceConnectRoute - '/orgs/$organization/': typeof ContextCloudOrgsOrganizationIndexRoute - '/ns/$namespace/': typeof ContextEngineNsNamespaceIndexRoute - '/orgs/$organization/projects/$project': typeof ContextCloudOrgsOrganizationProjectsProjectRouteWithChildren - '/orgs/$organization/projects': typeof ContextCloudOrgsOrganizationProjectsIndexRoute - '/orgs/$organization/projects/$project/': typeof ContextCloudOrgsOrganizationProjectsProjectIndexRoute - '/orgs/$organization/projects/$project/ns/$namespace': typeof ContextCloudOrgsOrganizationProjectsProjectNsNamespaceRouteWithChildren - '/orgs/$organization/projects/$project/ns/$namespace/connect': typeof ContextCloudOrgsOrganizationProjectsProjectNsNamespaceConnectRoute - '/orgs/$organization/projects/$project/ns/$namespace/': typeof ContextCloudOrgsOrganizationProjectsProjectNsNamespaceIndexRoute + "/join": typeof JoinRoute; + "/login": typeof LoginRoute; + "/onboarding": typeof OnboardingRouteWithChildren; + "/sso-callback": typeof SsoCallbackRoute; + "/onboarding/accept-invitation": typeof OnboardingAcceptInvitationRoute; + "/onboarding/choose-organization": typeof OnboardingChooseOrganizationRoute; + "/": typeof ContextIndexRoute; + "/orgs/$organization": typeof ContextCloudOrgsOrganizationRouteWithChildren; + "/ns/$namespace": typeof ContextEngineNsNamespaceRouteWithChildren; + "/ns/$namespace/connect": typeof ContextEngineNsNamespaceConnectRoute; + "/orgs/$organization/": typeof ContextCloudOrgsOrganizationIndexRoute; + "/ns/$namespace/": typeof ContextEngineNsNamespaceIndexRoute; + "/orgs/$organization/projects/$project": typeof ContextCloudOrgsOrganizationProjectsProjectRouteWithChildren; + "/orgs/$organization/projects": typeof ContextCloudOrgsOrganizationProjectsIndexRoute; + "/orgs/$organization/projects/$project/": typeof ContextCloudOrgsOrganizationProjectsProjectIndexRoute; + "/orgs/$organization/projects/$project/ns/$namespace": typeof ContextCloudOrgsOrganizationProjectsProjectNsNamespaceRouteWithChildren; + "/orgs/$organization/projects/$project/ns/$namespace/connect": typeof ContextCloudOrgsOrganizationProjectsProjectNsNamespaceConnectRoute; + "/orgs/$organization/projects/$project/ns/$namespace/": typeof ContextCloudOrgsOrganizationProjectsProjectNsNamespaceIndexRoute; } export interface FileRoutesByTo { - '/join': typeof JoinRoute - '/login': typeof LoginRoute - '/onboarding': typeof OnboardingRouteWithChildren - '/sso-callback': typeof SsoCallbackRoute - '/onboarding/accept-invitation': typeof OnboardingAcceptInvitationRoute - '/onboarding/choose-organization': typeof OnboardingChooseOrganizationRoute - '/': typeof ContextIndexRoute - '/ns/$namespace/connect': typeof ContextEngineNsNamespaceConnectRoute - '/orgs/$organization': typeof ContextCloudOrgsOrganizationIndexRoute - '/ns/$namespace': typeof ContextEngineNsNamespaceIndexRoute - '/orgs/$organization/projects': typeof ContextCloudOrgsOrganizationProjectsIndexRoute - '/orgs/$organization/projects/$project': typeof ContextCloudOrgsOrganizationProjectsProjectIndexRoute - '/orgs/$organization/projects/$project/ns/$namespace/connect': typeof ContextCloudOrgsOrganizationProjectsProjectNsNamespaceConnectRoute - '/orgs/$organization/projects/$project/ns/$namespace': typeof ContextCloudOrgsOrganizationProjectsProjectNsNamespaceIndexRoute + "/join": typeof JoinRoute; + "/login": typeof LoginRoute; + "/onboarding": typeof OnboardingRouteWithChildren; + "/sso-callback": typeof SsoCallbackRoute; + "/onboarding/accept-invitation": typeof OnboardingAcceptInvitationRoute; + "/onboarding/choose-organization": typeof OnboardingChooseOrganizationRoute; + "/": typeof ContextIndexRoute; + "/ns/$namespace/connect": typeof ContextEngineNsNamespaceConnectRoute; + "/orgs/$organization": typeof ContextCloudOrgsOrganizationIndexRoute; + "/ns/$namespace": typeof ContextEngineNsNamespaceIndexRoute; + "/orgs/$organization/projects": typeof ContextCloudOrgsOrganizationProjectsIndexRoute; + "/orgs/$organization/projects/$project": typeof ContextCloudOrgsOrganizationProjectsProjectIndexRoute; + "/orgs/$organization/projects/$project/ns/$namespace/connect": typeof ContextCloudOrgsOrganizationProjectsProjectNsNamespaceConnectRoute; + "/orgs/$organization/projects/$project/ns/$namespace": typeof ContextCloudOrgsOrganizationProjectsProjectNsNamespaceIndexRoute; } export interface FileRoutesById { - __root__: typeof rootRouteImport - '/_context': typeof ContextRouteWithChildren - '/join': typeof JoinRoute - '/login': typeof LoginRoute - '/onboarding': typeof OnboardingRouteWithChildren - '/sso-callback': typeof SsoCallbackRoute - '/_context/_cloud': typeof ContextCloudRouteWithChildren - '/_context/_engine': typeof ContextEngineRouteWithChildren - '/onboarding/accept-invitation': typeof OnboardingAcceptInvitationRoute - '/onboarding/choose-organization': typeof OnboardingChooseOrganizationRoute - '/_context/': typeof ContextIndexRoute - '/_context/_cloud/orgs/$organization': typeof ContextCloudOrgsOrganizationRouteWithChildren - '/_context/_engine/ns/$namespace': typeof ContextEngineNsNamespaceRouteWithChildren - '/_context/_engine/ns/$namespace/connect': typeof ContextEngineNsNamespaceConnectRoute - '/_context/_cloud/orgs/$organization/': typeof ContextCloudOrgsOrganizationIndexRoute - '/_context/_engine/ns/$namespace/': typeof ContextEngineNsNamespaceIndexRoute - '/_context/_cloud/orgs/$organization/projects/$project': typeof ContextCloudOrgsOrganizationProjectsProjectRouteWithChildren - '/_context/_cloud/orgs/$organization/projects/': typeof ContextCloudOrgsOrganizationProjectsIndexRoute - '/_context/_cloud/orgs/$organization/projects/$project/': typeof ContextCloudOrgsOrganizationProjectsProjectIndexRoute - '/_context/_cloud/orgs/$organization/projects/$project/ns/$namespace': typeof ContextCloudOrgsOrganizationProjectsProjectNsNamespaceRouteWithChildren - '/_context/_cloud/orgs/$organization/projects/$project/ns/$namespace/connect': typeof ContextCloudOrgsOrganizationProjectsProjectNsNamespaceConnectRoute - '/_context/_cloud/orgs/$organization/projects/$project/ns/$namespace/': typeof ContextCloudOrgsOrganizationProjectsProjectNsNamespaceIndexRoute + __root__: typeof rootRouteImport; + "/_context": typeof ContextRouteWithChildren; + "/join": typeof JoinRoute; + "/login": typeof LoginRoute; + "/onboarding": typeof OnboardingRouteWithChildren; + "/sso-callback": typeof SsoCallbackRoute; + "/_context/_cloud": typeof ContextCloudRouteWithChildren; + "/_context/_engine": typeof ContextEngineRouteWithChildren; + "/onboarding/accept-invitation": typeof OnboardingAcceptInvitationRoute; + "/onboarding/choose-organization": typeof OnboardingChooseOrganizationRoute; + "/_context/": typeof ContextIndexRoute; + "/_context/_cloud/orgs/$organization": typeof ContextCloudOrgsOrganizationRouteWithChildren; + "/_context/_engine/ns/$namespace": typeof ContextEngineNsNamespaceRouteWithChildren; + "/_context/_engine/ns/$namespace/connect": typeof ContextEngineNsNamespaceConnectRoute; + "/_context/_cloud/orgs/$organization/": typeof ContextCloudOrgsOrganizationIndexRoute; + "/_context/_engine/ns/$namespace/": typeof ContextEngineNsNamespaceIndexRoute; + "/_context/_cloud/orgs/$organization/projects/$project": typeof ContextCloudOrgsOrganizationProjectsProjectRouteWithChildren; + "/_context/_cloud/orgs/$organization/projects/": typeof ContextCloudOrgsOrganizationProjectsIndexRoute; + "/_context/_cloud/orgs/$organization/projects/$project/": typeof ContextCloudOrgsOrganizationProjectsProjectIndexRoute; + "/_context/_cloud/orgs/$organization/projects/$project/ns/$namespace": typeof ContextCloudOrgsOrganizationProjectsProjectNsNamespaceRouteWithChildren; + "/_context/_cloud/orgs/$organization/projects/$project/ns/$namespace/connect": typeof ContextCloudOrgsOrganizationProjectsProjectNsNamespaceConnectRoute; + "/_context/_cloud/orgs/$organization/projects/$project/ns/$namespace/": typeof ContextCloudOrgsOrganizationProjectsProjectNsNamespaceIndexRoute; } export interface FileRouteTypes { - fileRoutesByFullPath: FileRoutesByFullPath - fullPaths: - | '/join' - | '/login' - | '/onboarding' - | '/sso-callback' - | '/onboarding/accept-invitation' - | '/onboarding/choose-organization' - | '/' - | '/orgs/$organization' - | '/ns/$namespace' - | '/ns/$namespace/connect' - | '/orgs/$organization/' - | '/ns/$namespace/' - | '/orgs/$organization/projects/$project' - | '/orgs/$organization/projects' - | '/orgs/$organization/projects/$project/' - | '/orgs/$organization/projects/$project/ns/$namespace' - | '/orgs/$organization/projects/$project/ns/$namespace/connect' - | '/orgs/$organization/projects/$project/ns/$namespace/' - fileRoutesByTo: FileRoutesByTo - to: - | '/join' - | '/login' - | '/onboarding' - | '/sso-callback' - | '/onboarding/accept-invitation' - | '/onboarding/choose-organization' - | '/' - | '/ns/$namespace/connect' - | '/orgs/$organization' - | '/ns/$namespace' - | '/orgs/$organization/projects' - | '/orgs/$organization/projects/$project' - | '/orgs/$organization/projects/$project/ns/$namespace/connect' - | '/orgs/$organization/projects/$project/ns/$namespace' - id: - | '__root__' - | '/_context' - | '/join' - | '/login' - | '/onboarding' - | '/sso-callback' - | '/_context/_cloud' - | '/_context/_engine' - | '/onboarding/accept-invitation' - | '/onboarding/choose-organization' - | '/_context/' - | '/_context/_cloud/orgs/$organization' - | '/_context/_engine/ns/$namespace' - | '/_context/_engine/ns/$namespace/connect' - | '/_context/_cloud/orgs/$organization/' - | '/_context/_engine/ns/$namespace/' - | '/_context/_cloud/orgs/$organization/projects/$project' - | '/_context/_cloud/orgs/$organization/projects/' - | '/_context/_cloud/orgs/$organization/projects/$project/' - | '/_context/_cloud/orgs/$organization/projects/$project/ns/$namespace' - | '/_context/_cloud/orgs/$organization/projects/$project/ns/$namespace/connect' - | '/_context/_cloud/orgs/$organization/projects/$project/ns/$namespace/' - fileRoutesById: FileRoutesById + fileRoutesByFullPath: FileRoutesByFullPath; + fullPaths: + | "/join" + | "/login" + | "/onboarding" + | "/sso-callback" + | "/onboarding/accept-invitation" + | "/onboarding/choose-organization" + | "/" + | "/orgs/$organization" + | "/ns/$namespace" + | "/ns/$namespace/connect" + | "/orgs/$organization/" + | "/ns/$namespace/" + | "/orgs/$organization/projects/$project" + | "/orgs/$organization/projects" + | "/orgs/$organization/projects/$project/" + | "/orgs/$organization/projects/$project/ns/$namespace" + | "/orgs/$organization/projects/$project/ns/$namespace/connect" + | "/orgs/$organization/projects/$project/ns/$namespace/"; + fileRoutesByTo: FileRoutesByTo; + to: + | "/join" + | "/login" + | "/onboarding" + | "/sso-callback" + | "/onboarding/accept-invitation" + | "/onboarding/choose-organization" + | "/" + | "/ns/$namespace/connect" + | "/orgs/$organization" + | "/ns/$namespace" + | "/orgs/$organization/projects" + | "/orgs/$organization/projects/$project" + | "/orgs/$organization/projects/$project/ns/$namespace/connect" + | "/orgs/$organization/projects/$project/ns/$namespace"; + id: + | "__root__" + | "/_context" + | "/join" + | "/login" + | "/onboarding" + | "/sso-callback" + | "/_context/_cloud" + | "/_context/_engine" + | "/onboarding/accept-invitation" + | "/onboarding/choose-organization" + | "/_context/" + | "/_context/_cloud/orgs/$organization" + | "/_context/_engine/ns/$namespace" + | "/_context/_engine/ns/$namespace/connect" + | "/_context/_cloud/orgs/$organization/" + | "/_context/_engine/ns/$namespace/" + | "/_context/_cloud/orgs/$organization/projects/$project" + | "/_context/_cloud/orgs/$organization/projects/" + | "/_context/_cloud/orgs/$organization/projects/$project/" + | "/_context/_cloud/orgs/$organization/projects/$project/ns/$namespace" + | "/_context/_cloud/orgs/$organization/projects/$project/ns/$namespace/connect" + | "/_context/_cloud/orgs/$organization/projects/$project/ns/$namespace/"; + fileRoutesById: FileRoutesById; } export interface RootRouteChildren { - ContextRoute: typeof ContextRouteWithChildren - JoinRoute: typeof JoinRoute - LoginRoute: typeof LoginRoute - OnboardingRoute: typeof OnboardingRouteWithChildren - SsoCallbackRoute: typeof SsoCallbackRoute + ContextRoute: typeof ContextRouteWithChildren; + JoinRoute: typeof JoinRoute; + LoginRoute: typeof LoginRoute; + OnboardingRoute: typeof OnboardingRouteWithChildren; + SsoCallbackRoute: typeof SsoCallbackRoute; } -declare module '@tanstack/react-router' { - interface FileRoutesByPath { - '/sso-callback': { - id: '/sso-callback' - path: '/sso-callback' - fullPath: '/sso-callback' - preLoaderRoute: typeof SsoCallbackRouteImport - parentRoute: typeof rootRouteImport - } - '/onboarding': { - id: '/onboarding' - path: '/onboarding' - fullPath: '/onboarding' - preLoaderRoute: typeof OnboardingRouteImport - parentRoute: typeof rootRouteImport - } - '/login': { - id: '/login' - path: '/login' - fullPath: '/login' - preLoaderRoute: typeof LoginRouteImport - parentRoute: typeof rootRouteImport - } - '/join': { - id: '/join' - path: '/join' - fullPath: '/join' - preLoaderRoute: typeof JoinRouteImport - parentRoute: typeof rootRouteImport - } - '/_context': { - id: '/_context' - path: '' - fullPath: '' - preLoaderRoute: typeof ContextRouteImport - parentRoute: typeof rootRouteImport - } - '/_context/': { - id: '/_context/' - path: '/' - fullPath: '/' - preLoaderRoute: typeof ContextIndexRouteImport - parentRoute: typeof ContextRoute - } - '/onboarding/choose-organization': { - id: '/onboarding/choose-organization' - path: '/choose-organization' - fullPath: '/onboarding/choose-organization' - preLoaderRoute: typeof OnboardingChooseOrganizationRouteImport - parentRoute: typeof OnboardingRoute - } - '/onboarding/accept-invitation': { - id: '/onboarding/accept-invitation' - path: '/accept-invitation' - fullPath: '/onboarding/accept-invitation' - preLoaderRoute: typeof OnboardingAcceptInvitationRouteImport - parentRoute: typeof OnboardingRoute - } - '/_context/_engine': { - id: '/_context/_engine' - path: '' - fullPath: '' - preLoaderRoute: typeof ContextEngineRouteImport - parentRoute: typeof ContextRoute - } - '/_context/_cloud': { - id: '/_context/_cloud' - path: '' - fullPath: '' - preLoaderRoute: typeof ContextCloudRouteImport - parentRoute: typeof ContextRoute - } - '/_context/_engine/ns/$namespace': { - id: '/_context/_engine/ns/$namespace' - path: '/ns/$namespace' - fullPath: '/ns/$namespace' - preLoaderRoute: typeof ContextEngineNsNamespaceRouteImport - parentRoute: typeof ContextEngineRoute - } - '/_context/_cloud/orgs/$organization': { - id: '/_context/_cloud/orgs/$organization' - path: '/orgs/$organization' - fullPath: '/orgs/$organization' - preLoaderRoute: typeof ContextCloudOrgsOrganizationRouteImport - parentRoute: typeof ContextCloudRoute - } - '/_context/_engine/ns/$namespace/': { - id: '/_context/_engine/ns/$namespace/' - path: '/' - fullPath: '/ns/$namespace/' - preLoaderRoute: typeof ContextEngineNsNamespaceIndexRouteImport - parentRoute: typeof ContextEngineNsNamespaceRoute - } - '/_context/_cloud/orgs/$organization/': { - id: '/_context/_cloud/orgs/$organization/' - path: '/' - fullPath: '/orgs/$organization/' - preLoaderRoute: typeof ContextCloudOrgsOrganizationIndexRouteImport - parentRoute: typeof ContextCloudOrgsOrganizationRoute - } - '/_context/_engine/ns/$namespace/connect': { - id: '/_context/_engine/ns/$namespace/connect' - path: '/connect' - fullPath: '/ns/$namespace/connect' - preLoaderRoute: typeof ContextEngineNsNamespaceConnectRouteImport - parentRoute: typeof ContextEngineNsNamespaceRoute - } - '/_context/_cloud/orgs/$organization/projects/': { - id: '/_context/_cloud/orgs/$organization/projects/' - path: '/projects' - fullPath: '/orgs/$organization/projects' - preLoaderRoute: typeof ContextCloudOrgsOrganizationProjectsIndexRouteImport - parentRoute: typeof ContextCloudOrgsOrganizationRoute - } - '/_context/_cloud/orgs/$organization/projects/$project': { - id: '/_context/_cloud/orgs/$organization/projects/$project' - path: '/projects/$project' - fullPath: '/orgs/$organization/projects/$project' - preLoaderRoute: typeof ContextCloudOrgsOrganizationProjectsProjectRouteImport - parentRoute: typeof ContextCloudOrgsOrganizationRoute - } - '/_context/_cloud/orgs/$organization/projects/$project/': { - id: '/_context/_cloud/orgs/$organization/projects/$project/' - path: '/' - fullPath: '/orgs/$organization/projects/$project/' - preLoaderRoute: typeof ContextCloudOrgsOrganizationProjectsProjectIndexRouteImport - parentRoute: typeof ContextCloudOrgsOrganizationProjectsProjectRoute - } - '/_context/_cloud/orgs/$organization/projects/$project/ns/$namespace': { - id: '/_context/_cloud/orgs/$organization/projects/$project/ns/$namespace' - path: '/ns/$namespace' - fullPath: '/orgs/$organization/projects/$project/ns/$namespace' - preLoaderRoute: typeof ContextCloudOrgsOrganizationProjectsProjectNsNamespaceRouteImport - parentRoute: typeof ContextCloudOrgsOrganizationProjectsProjectRoute - } - '/_context/_cloud/orgs/$organization/projects/$project/ns/$namespace/': { - id: '/_context/_cloud/orgs/$organization/projects/$project/ns/$namespace/' - path: '/' - fullPath: '/orgs/$organization/projects/$project/ns/$namespace/' - preLoaderRoute: typeof ContextCloudOrgsOrganizationProjectsProjectNsNamespaceIndexRouteImport - parentRoute: typeof ContextCloudOrgsOrganizationProjectsProjectNsNamespaceRoute - } - '/_context/_cloud/orgs/$organization/projects/$project/ns/$namespace/connect': { - id: '/_context/_cloud/orgs/$organization/projects/$project/ns/$namespace/connect' - path: '/connect' - fullPath: '/orgs/$organization/projects/$project/ns/$namespace/connect' - preLoaderRoute: typeof ContextCloudOrgsOrganizationProjectsProjectNsNamespaceConnectRouteImport - parentRoute: typeof ContextCloudOrgsOrganizationProjectsProjectNsNamespaceRoute - } - } +declare module "@tanstack/react-router" { + interface FileRoutesByPath { + "/sso-callback": { + id: "/sso-callback"; + path: "/sso-callback"; + fullPath: "/sso-callback"; + preLoaderRoute: typeof SsoCallbackRouteImport; + parentRoute: typeof rootRouteImport; + }; + "/onboarding": { + id: "/onboarding"; + path: "/onboarding"; + fullPath: "/onboarding"; + preLoaderRoute: typeof OnboardingRouteImport; + parentRoute: typeof rootRouteImport; + }; + "/login": { + id: "/login"; + path: "/login"; + fullPath: "/login"; + preLoaderRoute: typeof LoginRouteImport; + parentRoute: typeof rootRouteImport; + }; + "/join": { + id: "/join"; + path: "/join"; + fullPath: "/join"; + preLoaderRoute: typeof JoinRouteImport; + parentRoute: typeof rootRouteImport; + }; + "/_context": { + id: "/_context"; + path: ""; + fullPath: ""; + preLoaderRoute: typeof ContextRouteImport; + parentRoute: typeof rootRouteImport; + }; + "/_context/": { + id: "/_context/"; + path: "/"; + fullPath: "/"; + preLoaderRoute: typeof ContextIndexRouteImport; + parentRoute: typeof ContextRoute; + }; + "/onboarding/choose-organization": { + id: "/onboarding/choose-organization"; + path: "/choose-organization"; + fullPath: "/onboarding/choose-organization"; + preLoaderRoute: typeof OnboardingChooseOrganizationRouteImport; + parentRoute: typeof OnboardingRoute; + }; + "/onboarding/accept-invitation": { + id: "/onboarding/accept-invitation"; + path: "/accept-invitation"; + fullPath: "/onboarding/accept-invitation"; + preLoaderRoute: typeof OnboardingAcceptInvitationRouteImport; + parentRoute: typeof OnboardingRoute; + }; + "/_context/_engine": { + id: "/_context/_engine"; + path: ""; + fullPath: ""; + preLoaderRoute: typeof ContextEngineRouteImport; + parentRoute: typeof ContextRoute; + }; + "/_context/_cloud": { + id: "/_context/_cloud"; + path: ""; + fullPath: ""; + preLoaderRoute: typeof ContextCloudRouteImport; + parentRoute: typeof ContextRoute; + }; + "/_context/_engine/ns/$namespace": { + id: "/_context/_engine/ns/$namespace"; + path: "/ns/$namespace"; + fullPath: "/ns/$namespace"; + preLoaderRoute: typeof ContextEngineNsNamespaceRouteImport; + parentRoute: typeof ContextEngineRoute; + }; + "/_context/_cloud/orgs/$organization": { + id: "/_context/_cloud/orgs/$organization"; + path: "/orgs/$organization"; + fullPath: "/orgs/$organization"; + preLoaderRoute: typeof ContextCloudOrgsOrganizationRouteImport; + parentRoute: typeof ContextCloudRoute; + }; + "/_context/_engine/ns/$namespace/": { + id: "/_context/_engine/ns/$namespace/"; + path: "/"; + fullPath: "/ns/$namespace/"; + preLoaderRoute: typeof ContextEngineNsNamespaceIndexRouteImport; + parentRoute: typeof ContextEngineNsNamespaceRoute; + }; + "/_context/_cloud/orgs/$organization/": { + id: "/_context/_cloud/orgs/$organization/"; + path: "/"; + fullPath: "/orgs/$organization/"; + preLoaderRoute: typeof ContextCloudOrgsOrganizationIndexRouteImport; + parentRoute: typeof ContextCloudOrgsOrganizationRoute; + }; + "/_context/_engine/ns/$namespace/connect": { + id: "/_context/_engine/ns/$namespace/connect"; + path: "/connect"; + fullPath: "/ns/$namespace/connect"; + preLoaderRoute: typeof ContextEngineNsNamespaceConnectRouteImport; + parentRoute: typeof ContextEngineNsNamespaceRoute; + }; + "/_context/_cloud/orgs/$organization/projects/": { + id: "/_context/_cloud/orgs/$organization/projects/"; + path: "/projects"; + fullPath: "/orgs/$organization/projects"; + preLoaderRoute: typeof ContextCloudOrgsOrganizationProjectsIndexRouteImport; + parentRoute: typeof ContextCloudOrgsOrganizationRoute; + }; + "/_context/_cloud/orgs/$organization/projects/$project": { + id: "/_context/_cloud/orgs/$organization/projects/$project"; + path: "/projects/$project"; + fullPath: "/orgs/$organization/projects/$project"; + preLoaderRoute: typeof ContextCloudOrgsOrganizationProjectsProjectRouteImport; + parentRoute: typeof ContextCloudOrgsOrganizationRoute; + }; + "/_context/_cloud/orgs/$organization/projects/$project/": { + id: "/_context/_cloud/orgs/$organization/projects/$project/"; + path: "/"; + fullPath: "/orgs/$organization/projects/$project/"; + preLoaderRoute: typeof ContextCloudOrgsOrganizationProjectsProjectIndexRouteImport; + parentRoute: typeof ContextCloudOrgsOrganizationProjectsProjectRoute; + }; + "/_context/_cloud/orgs/$organization/projects/$project/ns/$namespace": { + id: "/_context/_cloud/orgs/$organization/projects/$project/ns/$namespace"; + path: "/ns/$namespace"; + fullPath: "/orgs/$organization/projects/$project/ns/$namespace"; + preLoaderRoute: typeof ContextCloudOrgsOrganizationProjectsProjectNsNamespaceRouteImport; + parentRoute: typeof ContextCloudOrgsOrganizationProjectsProjectRoute; + }; + "/_context/_cloud/orgs/$organization/projects/$project/ns/$namespace/": { + id: "/_context/_cloud/orgs/$organization/projects/$project/ns/$namespace/"; + path: "/"; + fullPath: "/orgs/$organization/projects/$project/ns/$namespace/"; + preLoaderRoute: typeof ContextCloudOrgsOrganizationProjectsProjectNsNamespaceIndexRouteImport; + parentRoute: typeof ContextCloudOrgsOrganizationProjectsProjectNsNamespaceRoute; + }; + "/_context/_cloud/orgs/$organization/projects/$project/ns/$namespace/connect": { + id: "/_context/_cloud/orgs/$organization/projects/$project/ns/$namespace/connect"; + path: "/connect"; + fullPath: "/orgs/$organization/projects/$project/ns/$namespace/connect"; + preLoaderRoute: typeof ContextCloudOrgsOrganizationProjectsProjectNsNamespaceConnectRouteImport; + parentRoute: typeof ContextCloudOrgsOrganizationProjectsProjectNsNamespaceRoute; + }; + } } interface ContextCloudOrgsOrganizationProjectsProjectNsNamespaceRouteChildren { - ContextCloudOrgsOrganizationProjectsProjectNsNamespaceConnectRoute: typeof ContextCloudOrgsOrganizationProjectsProjectNsNamespaceConnectRoute - ContextCloudOrgsOrganizationProjectsProjectNsNamespaceIndexRoute: typeof ContextCloudOrgsOrganizationProjectsProjectNsNamespaceIndexRoute + ContextCloudOrgsOrganizationProjectsProjectNsNamespaceConnectRoute: typeof ContextCloudOrgsOrganizationProjectsProjectNsNamespaceConnectRoute; + ContextCloudOrgsOrganizationProjectsProjectNsNamespaceIndexRoute: typeof ContextCloudOrgsOrganizationProjectsProjectNsNamespaceIndexRoute; } const ContextCloudOrgsOrganizationProjectsProjectNsNamespaceRouteChildren: ContextCloudOrgsOrganizationProjectsProjectNsNamespaceRouteChildren = - { - ContextCloudOrgsOrganizationProjectsProjectNsNamespaceConnectRoute: - ContextCloudOrgsOrganizationProjectsProjectNsNamespaceConnectRoute, - ContextCloudOrgsOrganizationProjectsProjectNsNamespaceIndexRoute: - ContextCloudOrgsOrganizationProjectsProjectNsNamespaceIndexRoute, - } + { + ContextCloudOrgsOrganizationProjectsProjectNsNamespaceConnectRoute: + ContextCloudOrgsOrganizationProjectsProjectNsNamespaceConnectRoute, + ContextCloudOrgsOrganizationProjectsProjectNsNamespaceIndexRoute: + ContextCloudOrgsOrganizationProjectsProjectNsNamespaceIndexRoute, + }; const ContextCloudOrgsOrganizationProjectsProjectNsNamespaceRouteWithChildren = - ContextCloudOrgsOrganizationProjectsProjectNsNamespaceRoute._addFileChildren( - ContextCloudOrgsOrganizationProjectsProjectNsNamespaceRouteChildren, - ) + ContextCloudOrgsOrganizationProjectsProjectNsNamespaceRoute._addFileChildren( + ContextCloudOrgsOrganizationProjectsProjectNsNamespaceRouteChildren, + ); interface ContextCloudOrgsOrganizationProjectsProjectRouteChildren { - ContextCloudOrgsOrganizationProjectsProjectIndexRoute: typeof ContextCloudOrgsOrganizationProjectsProjectIndexRoute - ContextCloudOrgsOrganizationProjectsProjectNsNamespaceRoute: typeof ContextCloudOrgsOrganizationProjectsProjectNsNamespaceRouteWithChildren + ContextCloudOrgsOrganizationProjectsProjectIndexRoute: typeof ContextCloudOrgsOrganizationProjectsProjectIndexRoute; + ContextCloudOrgsOrganizationProjectsProjectNsNamespaceRoute: typeof ContextCloudOrgsOrganizationProjectsProjectNsNamespaceRouteWithChildren; } const ContextCloudOrgsOrganizationProjectsProjectRouteChildren: ContextCloudOrgsOrganizationProjectsProjectRouteChildren = - { - ContextCloudOrgsOrganizationProjectsProjectIndexRoute: - ContextCloudOrgsOrganizationProjectsProjectIndexRoute, - ContextCloudOrgsOrganizationProjectsProjectNsNamespaceRoute: - ContextCloudOrgsOrganizationProjectsProjectNsNamespaceRouteWithChildren, - } + { + ContextCloudOrgsOrganizationProjectsProjectIndexRoute: + ContextCloudOrgsOrganizationProjectsProjectIndexRoute, + ContextCloudOrgsOrganizationProjectsProjectNsNamespaceRoute: + ContextCloudOrgsOrganizationProjectsProjectNsNamespaceRouteWithChildren, + }; const ContextCloudOrgsOrganizationProjectsProjectRouteWithChildren = - ContextCloudOrgsOrganizationProjectsProjectRoute._addFileChildren( - ContextCloudOrgsOrganizationProjectsProjectRouteChildren, - ) + ContextCloudOrgsOrganizationProjectsProjectRoute._addFileChildren( + ContextCloudOrgsOrganizationProjectsProjectRouteChildren, + ); interface ContextCloudOrgsOrganizationRouteChildren { - ContextCloudOrgsOrganizationIndexRoute: typeof ContextCloudOrgsOrganizationIndexRoute - ContextCloudOrgsOrganizationProjectsProjectRoute: typeof ContextCloudOrgsOrganizationProjectsProjectRouteWithChildren - ContextCloudOrgsOrganizationProjectsIndexRoute: typeof ContextCloudOrgsOrganizationProjectsIndexRoute + ContextCloudOrgsOrganizationIndexRoute: typeof ContextCloudOrgsOrganizationIndexRoute; + ContextCloudOrgsOrganizationProjectsProjectRoute: typeof ContextCloudOrgsOrganizationProjectsProjectRouteWithChildren; + ContextCloudOrgsOrganizationProjectsIndexRoute: typeof ContextCloudOrgsOrganizationProjectsIndexRoute; } const ContextCloudOrgsOrganizationRouteChildren: ContextCloudOrgsOrganizationRouteChildren = - { - ContextCloudOrgsOrganizationIndexRoute: - ContextCloudOrgsOrganizationIndexRoute, - ContextCloudOrgsOrganizationProjectsProjectRoute: - ContextCloudOrgsOrganizationProjectsProjectRouteWithChildren, - ContextCloudOrgsOrganizationProjectsIndexRoute: - ContextCloudOrgsOrganizationProjectsIndexRoute, - } + { + ContextCloudOrgsOrganizationIndexRoute: + ContextCloudOrgsOrganizationIndexRoute, + ContextCloudOrgsOrganizationProjectsProjectRoute: + ContextCloudOrgsOrganizationProjectsProjectRouteWithChildren, + ContextCloudOrgsOrganizationProjectsIndexRoute: + ContextCloudOrgsOrganizationProjectsIndexRoute, + }; const ContextCloudOrgsOrganizationRouteWithChildren = - ContextCloudOrgsOrganizationRoute._addFileChildren( - ContextCloudOrgsOrganizationRouteChildren, - ) + ContextCloudOrgsOrganizationRoute._addFileChildren( + ContextCloudOrgsOrganizationRouteChildren, + ); interface ContextCloudRouteChildren { - ContextCloudOrgsOrganizationRoute: typeof ContextCloudOrgsOrganizationRouteWithChildren + ContextCloudOrgsOrganizationRoute: typeof ContextCloudOrgsOrganizationRouteWithChildren; } const ContextCloudRouteChildren: ContextCloudRouteChildren = { - ContextCloudOrgsOrganizationRoute: - ContextCloudOrgsOrganizationRouteWithChildren, -} + ContextCloudOrgsOrganizationRoute: + ContextCloudOrgsOrganizationRouteWithChildren, +}; const ContextCloudRouteWithChildren = ContextCloudRoute._addFileChildren( - ContextCloudRouteChildren, -) + ContextCloudRouteChildren, +); interface ContextEngineNsNamespaceRouteChildren { - ContextEngineNsNamespaceConnectRoute: typeof ContextEngineNsNamespaceConnectRoute - ContextEngineNsNamespaceIndexRoute: typeof ContextEngineNsNamespaceIndexRoute + ContextEngineNsNamespaceConnectRoute: typeof ContextEngineNsNamespaceConnectRoute; + ContextEngineNsNamespaceIndexRoute: typeof ContextEngineNsNamespaceIndexRoute; } const ContextEngineNsNamespaceRouteChildren: ContextEngineNsNamespaceRouteChildren = - { - ContextEngineNsNamespaceConnectRoute: ContextEngineNsNamespaceConnectRoute, - ContextEngineNsNamespaceIndexRoute: ContextEngineNsNamespaceIndexRoute, - } + { + ContextEngineNsNamespaceConnectRoute: + ContextEngineNsNamespaceConnectRoute, + ContextEngineNsNamespaceIndexRoute: ContextEngineNsNamespaceIndexRoute, + }; const ContextEngineNsNamespaceRouteWithChildren = - ContextEngineNsNamespaceRoute._addFileChildren( - ContextEngineNsNamespaceRouteChildren, - ) + ContextEngineNsNamespaceRoute._addFileChildren( + ContextEngineNsNamespaceRouteChildren, + ); interface ContextEngineRouteChildren { - ContextEngineNsNamespaceRoute: typeof ContextEngineNsNamespaceRouteWithChildren + ContextEngineNsNamespaceRoute: typeof ContextEngineNsNamespaceRouteWithChildren; } const ContextEngineRouteChildren: ContextEngineRouteChildren = { - ContextEngineNsNamespaceRoute: ContextEngineNsNamespaceRouteWithChildren, -} + ContextEngineNsNamespaceRoute: ContextEngineNsNamespaceRouteWithChildren, +}; const ContextEngineRouteWithChildren = ContextEngineRoute._addFileChildren( - ContextEngineRouteChildren, -) + ContextEngineRouteChildren, +); interface ContextRouteChildren { - ContextCloudRoute: typeof ContextCloudRouteWithChildren - ContextEngineRoute: typeof ContextEngineRouteWithChildren - ContextIndexRoute: typeof ContextIndexRoute + ContextCloudRoute: typeof ContextCloudRouteWithChildren; + ContextEngineRoute: typeof ContextEngineRouteWithChildren; + ContextIndexRoute: typeof ContextIndexRoute; } const ContextRouteChildren: ContextRouteChildren = { - ContextCloudRoute: ContextCloudRouteWithChildren, - ContextEngineRoute: ContextEngineRouteWithChildren, - ContextIndexRoute: ContextIndexRoute, -} + ContextCloudRoute: ContextCloudRouteWithChildren, + ContextEngineRoute: ContextEngineRouteWithChildren, + ContextIndexRoute: ContextIndexRoute, +}; const ContextRouteWithChildren = - ContextRoute._addFileChildren(ContextRouteChildren) + ContextRoute._addFileChildren(ContextRouteChildren); interface OnboardingRouteChildren { - OnboardingAcceptInvitationRoute: typeof OnboardingAcceptInvitationRoute - OnboardingChooseOrganizationRoute: typeof OnboardingChooseOrganizationRoute + OnboardingAcceptInvitationRoute: typeof OnboardingAcceptInvitationRoute; + OnboardingChooseOrganizationRoute: typeof OnboardingChooseOrganizationRoute; } const OnboardingRouteChildren: OnboardingRouteChildren = { - OnboardingAcceptInvitationRoute: OnboardingAcceptInvitationRoute, - OnboardingChooseOrganizationRoute: OnboardingChooseOrganizationRoute, -} + OnboardingAcceptInvitationRoute: OnboardingAcceptInvitationRoute, + OnboardingChooseOrganizationRoute: OnboardingChooseOrganizationRoute, +}; const OnboardingRouteWithChildren = OnboardingRoute._addFileChildren( - OnboardingRouteChildren, -) + OnboardingRouteChildren, +); const rootRouteChildren: RootRouteChildren = { - ContextRoute: ContextRouteWithChildren, - JoinRoute: JoinRoute, - LoginRoute: LoginRoute, - OnboardingRoute: OnboardingRouteWithChildren, - SsoCallbackRoute: SsoCallbackRoute, -} + ContextRoute: ContextRouteWithChildren, + JoinRoute: JoinRoute, + LoginRoute: LoginRoute, + OnboardingRoute: OnboardingRouteWithChildren, + SsoCallbackRoute: SsoCallbackRoute, +}; export const routeTree = rootRouteImport - ._addFileChildren(rootRouteChildren) - ._addFileTypes() + ._addFileChildren(rootRouteChildren) + ._addFileTypes();