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#![warn(rust_2018_idioms)]
9#![deny(unsafe_op_in_unsafe_fn)]
10// Allow some non-critical clippy warnings for production code
11#![allow(clippy::manual_div_ceil)]
12#![allow(clippy::only_used_in_recursion)]
13// Allow dead code for fields and methods that will be used in future features
14#![allow(dead_code)]
15
16// Allocator FFI dependencies
17#[cfg(feature = "mimalloc")]
18extern crate libmimalloc_sys;
19#[cfg(feature = "jemalloc")]
20extern crate tikv_jemalloc_sys;
21
22pub mod application;
23pub mod compression;
24pub mod config;
25pub mod domain;
26pub mod error;
27pub mod frame;
28pub mod infrastructure;
29pub mod memory;
30pub mod parser;
31pub mod security;
32pub mod semantic;
33pub mod stream;
34
35// Domain layer exports
36pub use domain::{
37    DomainError,
38    DomainEvent,
39    DomainResult,
40    Frame as DomainFrame,
41    JsonPath,
42    Priority,
43    SessionId,
44    Stream,
45    StreamId,
46    StreamSession,
47    // GAT-based domain ports (zero-cost async abstractions)
48    ports::{
49        EventPublisherGat, FrameSinkGat, FrameSinkGatExt, FrameSourceGat, StreamRepositoryGat,
50        StreamStoreGat,
51    },
52    services::{
53        GatOrchestratorFactory, GatStreamingOrchestrator, HealthStatus, OrchestratorConfig,
54        ValidationService,
55    },
56    value_objects::{
57        JsonData, Schema, SchemaId, SchemaType, SchemaValidationError, SchemaValidationResult,
58    },
59};
60
61// Events exports
62pub use domain::events::{PriorityDistribution, PriorityPercentages};
63
64// Application layer exports (some temporarily disabled for GAT migration)
65pub use application::{
66    ApplicationError,
67    ApplicationResult,
68    commands,
69    dto::{
70        SchemaDefinitionDto, SchemaMetadataDto, SchemaRegistrationDto, ValidationErrorDto,
71        ValidationRequestDto, ValidationResultDto,
72    },
73    // handlers::{CommandHandler, QueryHandler}, // Disabled: migrate to GAT when implementing CQRS
74    queries,
75    // services::{SessionService, StreamingService}, // Disabled: replaced by SessionManager
76};
77
78// Configuration exports
79pub use config::{
80    ParserConfig, PjsConfig, SecurityConfig, SimdConfig, StreamingConfig,
81    security::{BufferLimits, JsonLimits, NetworkLimits, RateLimitingConfig, SessionLimits},
82};
83
84// Compression exports
85pub use compression::{
86    CompressedData, CompressionConfig, CompressionStrategy, SchemaAnalyzer, SchemaCompressor,
87    secure::{
88        DecompressionContextStats, SecureCompressedData, SecureCompressor,
89        SecureDecompressionContext,
90    },
91};
92
93// Streaming exports
94pub use error::{Error, Result};
95pub use frame::{Frame, FrameFlags, FrameHeader};
96#[cfg(any(feature = "websocket-client", feature = "websocket-server"))]
97pub use infrastructure::websocket::SecureWebSocketHandler;
98pub use memory::{ArenaJsonParser, CombinedArenaStats, JsonArena};
99pub use parser::{
100    LazyParser, ParseConfig, ParseStats, Parser, SimpleParser, SonicParser, ZeroCopyParser,
101};
102pub use security::{
103    CompressionBombConfig, CompressionBombDetector, CompressionBombProtector,
104    CompressionStats as BombCompressionStats, DepthTracker, RateLimitConfig, RateLimitError,
105    RateLimitGuard, RateLimitStats, SecurityValidator, WebSocketRateLimiter,
106};
107pub use semantic::{SemanticMeta, SemanticType};
108pub use stream::{
109    CompressedFrame, CompressionStats, DecompressionMetadata, DecompressionStats,
110    JsonReconstructor, PriorityStreamer, ProcessResult, StreamConfig, StreamFrame, StreamProcessor,
111    StreamStats, StreamingCompressor, StreamingDecompressor,
112};
113// Legacy stream exports (will be deprecated)
114// pub use stream::{
115//     JsonPath as StreamJsonPath, JsonReconstructor, Priority as StreamPriority, PriorityStreamer,
116//     ProcessResult, StreamFrame, StreamProcessor, StreamerConfig,
117// };
118
119/// Re-export commonly used types
120pub mod prelude {
121    pub use super::{
122        ApplicationError,
123        // Application layer
124        ApplicationResult,
125        // CommandHandler, // TODO: migrate to GAT
126        DomainError,
127        DomainEvent,
128        DomainFrame,
129        // Domain layer
130        DomainResult,
131        // Core types
132        Error,
133        Frame,
134        FrameFlags,
135        FrameHeader,
136        JsonData,
137        JsonPath,
138        // TODO: Re-add when legacy modules are reconciled
139        JsonReconstructor,
140        Priority,
141        PriorityDistribution,
142        PriorityPercentages,
143        // PriorityStreamer,
144        ProcessResult,
145        // QueryHandler, // TODO: migrate to GAT
146        Result,
147        Schema,
148        SchemaId,
149        SchemaRepository,
150        SchemaType,
151        SchemaValidationError,
152        SemanticMeta,
153        SemanticType,
154        SessionId,
155        // SessionService, // TODO: migrate to GAT
156        Stream,
157        StreamId,
158        StreamProcessor,
159        StreamSession,
160        // StreamingService, // TODO: migrate to GAT
161        ValidationService,
162    };
163}
164
165// Infrastructure exports for schema validation
166pub use infrastructure::SchemaRepository;