vorma 0.86.0-pre.3

Vorma framework.
Documentation
use std::collections::BTreeMap;
use std::sync::Arc;
use std::sync::atomic::{AtomicUsize, Ordering};
use std::time::Duration;

use http::{HeaderName, HeaderValue, Method, StatusCode};
use serde_json::Value;
use tokio::sync::Notify;
use vorma_tasks::{CancelToken, Error as TaskError, ExecCtx, Task, Tasks, TasksOptions};

use crate::mux::{
	InputError, InputParser, NestedOptions, NestedRouter, None, RawRequest, RequestCtx,
	RouteExecutionError, Router, ViewStackTerminalBoundary,
};

#[derive(Clone)]
struct TestEnv {
	shared_runs: Arc<AtomicUsize>,
}

#[derive(Clone, Debug, Eq, Hash, PartialEq)]
struct SharedInput;

fn default_runtime() -> (Arc<TestEnv>, ExecCtx<&'static str>) {
	let tasks = Tasks::new(TasksOptions::default());
	(
		Arc::new(TestEnv {
			shared_runs: Arc::new(AtomicUsize::new(0)),
		}),
		tasks.exec_ctx(CancelToken::new()),
	)
}

fn test_runtime(shared_runs: Arc<AtomicUsize>) -> (Arc<TestEnv>, ExecCtx<&'static str>) {
	let tasks = Tasks::new(TasksOptions::default());
	(
		Arc::new(TestEnv { shared_runs }),
		tasks.exec_ctx(CancelToken::new()),
	)
}

fn no_input() -> InputParser<()> {
	InputParser::default_input()
}

fn empty_public_filemap() -> Arc<BTreeMap<String, String>> {
	Arc::new(BTreeMap::new())
}

fn api_request(path: &str) -> RawRequest {
	if path == "/" {
		return RawRequest::get("/api");
	}
	RawRequest::get(format!("/api{path}"))
}

#[derive(Clone, Default)]
struct GreetingInput {
	name: String,
}

mod middleware;
mod nested_views;
mod router_and_resources;