Skip to main content

pjson_rs/
lib.rs

1//! # PJS Core
2//!
3//! Core types and protocols for the Priority JSON Streaming Protocol.
4//! This crate provides high-performance JSON parsing with SIMD optimizations,
5//! zero-copy operations, and semantic type hints for automatic optimization.
6
7#![feature(impl_trait_in_assoc_type)]
8#![cfg_attr(feature = "metrics", feature(once_cell_try))]
9#![warn(rust_2018_idioms)]
10#![warn(missing_docs)]
11#![deny(unsafe_op_in_unsafe_fn)]
12// Allow specific clippy warnings that are intentional design choices
13#![allow(clippy::manual_div_ceil)] // Performance: manual div_ceil is faster
14#![allow(clippy::only_used_in_recursion)] // Recursive algorithms by design
15// Note: dead_code is now handled per-item with targeted annotations
16
17pub mod application;
18pub mod compression;
19pub mod config;
20pub mod domain;
21pub mod error;
22pub mod frame;
23pub mod global_alloc;
24pub mod infrastructure;
25pub mod memory;
26pub mod parser;
27pub mod security;
28pub mod semantic;
29pub mod stream;
30
31// Global allocator diagnostics
32pub use global_alloc::global_allocator_name;
33
34// Domain layer exports
35pub use domain::{
36    DomainError,
37    DomainEvent,
38    DomainResult,
39    Frame as DomainFrame,
40    JsonPath,
41    Priority,
42    SessionId,
43    Stream,
44    StreamId,
45    StreamSession,
46    // GAT-based domain ports (zero-cost async abstractions)
47    ports::{
48        EventPublisherGat, FrameSinkGat, FrameSinkGatExt, FrameSourceGat, StreamRepositoryGat,
49        StreamStoreGat,
50    },
51    services::{
52        GatOrchestratorFactory, GatStreamingOrchestrator, HealthStatus, OrchestratorConfig,
53        ValidationService,
54    },
55    value_objects::{
56        JsonData, Schema, SchemaId, SchemaType, SchemaValidationError, SchemaValidationResult,
57    },
58};
59
60// Events exports
61pub use domain::events::{PriorityDistribution, PriorityPercentages};
62
63// Application layer exports
64pub use application::{
65    ApplicationError, ApplicationResult, commands,
66    dto::{
67        SchemaDefinitionDto, SchemaMetadataDto, SchemaRegistrationDto, ValidationErrorDto,
68        ValidationRequestDto, ValidationResultDto,
69    },
70    queries,
71};
72
73// Configuration exports
74pub use config::{
75    ConfigError, ParserConfig, PjsConfig, SecurityConfig, SimdConfig, StreamingConfig,
76    security::{BufferLimits, JsonLimits, NetworkLimits, RateLimitingConfig, SessionLimits},
77};
78
79// Compression exports
80pub use compression::{
81    CompressedData, CompressionConfig, CompressionStrategy, SchemaAnalyzer, SchemaCompressor,
82    secure::{
83        ByteCodec, CompressionQuality, DecompressionContextStats, SecureCompressedData,
84        SecureCompressor, SecureDecompressionContext,
85    },
86};
87
88// Streaming exports
89pub use error::{Error, Result};
90pub use frame::{Frame, FrameFlags, FrameHeader};
91#[cfg(any(feature = "websocket-client", feature = "websocket-server"))]
92pub use infrastructure::websocket::SecureWebSocketHandler;
93pub use memory::{CombinedArenaStats, JsonArena};
94pub use parser::{
95    LazyParser, ParseConfig, ParseStats, Parser, SimpleParser, SonicParser, ZeroCopyParser,
96};
97pub use security::{
98    CompressionBombConfig, CompressionBombDetector, CompressionBombProtector,
99    CompressionStats as BombCompressionStats, DepthTracker, RateLimitConfig, RateLimitError,
100    RateLimitGuard, RateLimitStats, SecurityValidator, WebSocketRateLimiter,
101};
102pub use semantic::{SemanticMeta, SemanticType};
103pub use stream::{
104    CompressedFrame, CompressionStats, DecompressionMetadata, DecompressionStats,
105    JsonReconstructor, PriorityStreamer, ProcessResult, StreamConfig, StreamFrame, StreamProcessor,
106    StreamStats, StreamingCompressor, StreamingDecompressor,
107};
108
109/// Re-export commonly used types
110pub mod prelude {
111    pub use super::{
112        ApplicationError, ApplicationResult, DomainError, DomainEvent, DomainFrame, DomainResult,
113        Error, Frame, FrameFlags, FrameHeader, JsonData, JsonPath, JsonReconstructor, Priority,
114        PriorityDistribution, PriorityPercentages, ProcessResult, Result, Schema, SchemaId,
115        SchemaRepository, SchemaType, SchemaValidationError, SemanticMeta, SemanticType, SessionId,
116        Stream, StreamId, StreamProcessor, StreamSession, ValidationService,
117    };
118}
119
120// Infrastructure exports for schema validation
121pub use infrastructure::SchemaRepository;