nest-rs 1.0.0

NestRS framework umbrella — re-exports the core and the surface crates an app reaches for, with a `prelude` for the common case.
Documentation
//! `nestrs` — umbrella crate that re-exports the framework's surface so an
//! application can write a single `use nest_rs::prelude::*;` instead of a
//! handful of per-crate imports.
//!
//! The per-crate split (`nest-rs-core`, `nest-rs-http`, …) stays the public,
//! versioned source of truth. This crate adds no API of its own — it only
//! collects what already exists behind Cargo features, with one feature per
//! surface so an app pays only for what it uses.
#![warn(missing_docs)]

pub use nest_rs_core as core;

#[cfg(feature = "http")]
pub use nest_rs_http as http;

#[cfg(feature = "config")]
pub use nest_rs_config as config;

#[cfg(feature = "database")]
pub use nest_rs_database as database;

#[cfg(feature = "seaorm")]
pub use nest_rs_seaorm as seaorm;

#[cfg(feature = "graphql")]
pub use nest_rs_graphql as graphql;

#[cfg(feature = "ws")]
pub use nest_rs_ws as ws;

#[cfg(feature = "mcp")]
pub use nest_rs_mcp as mcp;

#[cfg(feature = "queue")]
pub use nest_rs_queue as queue;

#[cfg(feature = "redis")]
pub use nest_rs_redis as redis;

#[cfg(feature = "schedule")]
pub use nest_rs_schedule as schedule;

#[cfg(feature = "events")]
pub use nest_rs_events as events;

#[cfg(feature = "authn")]
pub use nest_rs_authn as authn;

#[cfg(feature = "authz")]
pub use nest_rs_authz as authz;

#[cfg(feature = "social")]
pub use nest_rs_social as social;

#[cfg(feature = "opentelemetry")]
pub use nest_rs_opentelemetry as opentelemetry;

#[cfg(feature = "openapi")]
pub use nest_rs_openapi as openapi;

#[cfg(feature = "health")]
pub use nest_rs_health as health;

#[cfg(feature = "throttler")]
pub use nest_rs_throttler as throttler;

#[cfg(feature = "server-timing")]
pub use nest_rs_server_timing as server_timing;

#[cfg(feature = "testing")]
pub use nest_rs_testing as testing;

// Layer-System extension-point crates — re-exported so writing a custom
// `Guard`/`Pipe`/`Interceptor`/`Filter`/`ExceptionFilter` (or a `#[resource]`/
// worker provider) needs no direct per-crate dep (FACADE-I11).
#[cfg(feature = "guards")]
pub use nest_rs_guards as guards;

#[cfg(feature = "pipes")]
pub use nest_rs_pipes as pipes;

#[cfg(feature = "interceptors")]
pub use nest_rs_interceptors as interceptors;

#[cfg(feature = "filters")]
pub use nest_rs_filters as filters;

#[cfg(feature = "exception-filters")]
pub use nest_rs_exception_filters as exception_filters;

#[cfg(feature = "resource")]
pub use nest_rs_resource as resource;

#[cfg(feature = "storage")]
pub use nest_rs_storage as storage;

#[cfg(feature = "worker")]
pub use nest_rs_worker as worker;

/// The everyday import — covers the decorators and types an app reaches for
/// on every controller, service, and module.
///
/// ```ignore
/// use nest_rs::prelude::*;
/// ```
///
/// Items behind Cargo features are pulled in only when the matching feature
/// is enabled. The default features (`http`, `config`) cover the typical
/// HTTP-API case.
pub mod prelude {
    pub use nest_rs_core::{
        App, AppBuilder, Container, ContainerBuilder, Module, hooks, injectable, module,
    };

    #[cfg(feature = "http")]
    pub use nest_rs_http::{
        ClientIp, Ctx, HttpConfig, HttpModule, RawBody, Reflector, Scoped, Valid, controller,
        http_code, input, redirect, response_header, routes,
    };

    // `Json`/`Path`/`Query` are `poem` extractors re-exported through
    // `nest_rs_http::poem`. This is a deliberate part of the declared
    // poem-coupling contract (see the root `Cargo.toml` pinned-major policy:
    // poem's major version is tied to the nestrs major), not an accidental leak.
    #[cfg(feature = "http")]
    pub use nest_rs_http::poem::web::{Json, Path, Query};

    #[cfg(feature = "config")]
    pub use nest_rs_config::{Config, Namespaced, config};
}