#![forbid(unsafe_code)]
pub use jerrycan_core::path_param;
pub use jerrycan_core::*;
pub use jerrycan_macros::main;
#[cfg(feature = "db")]
pub use jerrycan_db as db;
#[cfg(feature = "validate")]
pub use jerrycan_validate as validate;
#[cfg(feature = "auth")]
pub use jerrycan_auth as auth;
#[cfg(feature = "rate-limit")]
pub use jerrycan_ratelimit as ratelimit;
#[cfg(feature = "observe")]
pub use jerrycan_observe as observe;
#[cfg(feature = "jobs")]
pub use jerrycan_jobs as jobs;
#[cfg(feature = "storage")]
pub use jerrycan_storage as storage;
#[cfg(feature = "realtime")]
pub use jerrycan_realtime as realtime;
#[cfg(feature = "cli")]
pub mod platform;
pub mod prelude {
pub use jerrycan_core::prelude::*;
pub use jerrycan_macros::main;
}
#[cfg(doctest)]
mod doc_tests {
macro_rules! doc_page {
($name:ident, $path:literal) => {
#[doc = include_str!($path)]
mod $name {}
};
}
doc_page!(page_00_designing, "../../../docs/ai/00-designing.md");
doc_page!(page_01_app, "../../../docs/ai/01-app.md");
doc_page!(page_02_modules, "../../../docs/ai/02-modules.md");
doc_page!(page_03_extractors, "../../../docs/ai/03-extractors.md");
doc_page!(page_04_dependencies, "../../../docs/ai/04-dependencies.md");
doc_page!(page_05_errors, "../../../docs/ai/05-errors.md");
doc_page!(page_06_middleware, "../../../docs/ai/06-middleware.md");
doc_page!(page_07_testing, "../../../docs/ai/07-testing.md");
#[cfg(feature = "db")]
doc_page!(page_08_database, "../../../docs/ai/08-database.md");
#[cfg(feature = "validate")]
doc_page!(page_09_validation, "../../../docs/ai/09-validation.md");
#[cfg(feature = "auth")]
doc_page!(page_10_auth, "../../../docs/ai/10-auth.md");
#[cfg(feature = "observe")]
doc_page!(
page_11_observability,
"../../../docs/ai/11-observability.md"
);
doc_page!(page_12_packaging, "../../../docs/ai/12-packaging.md");
#[cfg(all(feature = "db", feature = "auth"))]
doc_page!(page_14_tenancy, "../../../docs/ai/14-tenancy.md");
#[cfg(feature = "jobs")]
doc_page!(page_15_jobs, "../../../docs/ai/15-jobs.md");
#[cfg(feature = "mock-idp")]
doc_page!(
page_16_auth_advanced,
"../../../docs/ai/16-auth-advanced.md"
);
doc_page!(
page_17_response_types,
"../../../docs/ai/17-response-types.md"
);
#[cfg(feature = "storage")]
doc_page!(page_18_storage, "../../../docs/ai/18-storage.md");
#[cfg(all(feature = "realtime", feature = "auth"))]
doc_page!(page_18_realtime, "../../../docs/ai/18-realtime.md");
}
#[cfg(all(test, feature = "realtime"))]
mod realtime_facade {
#[test]
fn facade_paths_resolve() {
fn _typecheck(rt: crate::realtime::Realtime) -> crate::realtime::Realtime {
rt.broadcast("room", crate::realtime::TopicScope::Tenant)
}
}
}