1use std::collections::{BTreeMap, BTreeSet, HashMap};
2use std::time::Duration;
3
4use aes_gcm::aead::Aead;
5use aes_gcm::{Aes256Gcm, KeyInit, Nonce};
6use base64::Engine as _;
7use base64::engine::general_purpose::URL_SAFE_NO_PAD;
8use coil_a11y::{NavigationContract, ThemeAccessibilityContract};
9use coil_auth::{AuthModelPackage, Capability};
10use coil_cache::{CachePlanner, CacheTopology, DistributedCacheBackend};
11use coil_config::{
12 CookieConfig as HttpCookieConfig, CookieProtection as ConfigCookieProtection,
13 CsrfConfig as HttpCsrfConfig, DistributedCache, PlatformConfig, SameSitePolicy,
14 SessionStore as ConfigSessionStore, TlsMode,
15};
16use coil_data::{
17 DataRuntime, MigrationPlan, PageRequest, PublicationVisibility, QueryCacheScope, RepositorySpec,
18};
19use coil_i18n::{
20 CurrencyCode, LocaleContext, LocaleRouter, LocaleTag, LocaleUrlConfig, TimeZoneId,
21 TranslationCatalog, TranslationRuntime,
22};
23use coil_jobs::{JobsRuntime, RetryPolicy};
24use coil_observability::{
25 DependencyKind, DependencyStatus, HealthProbeKind, HealthReport, MaintenanceMode,
26 ObservabilityRuntime,
27};
28use coil_seo::HeadMetadata;
29use coil_template::{TemplateNamespace, TemplateRegistry, TemplateRuntime};
30use coil_tls::TlsRuntime;
31use coil_wasm::{ExtensionPointKind, ResourceLimits};
32use hmac::{Hmac, Mac};
33use rand::{RngCore, rngs::OsRng};
34use sha2::{Digest, Sha256};
35use thiserror::Error;
36
37type HmacSha256 = Hmac<Sha256>;
38
39mod bootstrap;
40mod browser;
41mod manifest;
42mod registry;
43#[cfg(test)]
44mod tests;
45mod validation;
46
47pub use bootstrap::*;
48pub use browser::*;
49pub use manifest::*;
50pub use registry::*;
51pub use validation::*;