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#![warn(rust_2018_idioms)]
9#![deny(unsafe_op_in_unsafe_fn)]
10// Allow specific clippy warnings that are intentional design choices
11#![allow(clippy::manual_div_ceil)] // Performance: manual div_ceil is faster
12#![allow(clippy::only_used_in_recursion)] // Recursive algorithms by design
13// Note: dead_code is now handled per-item with targeted annotations
14
15// Allocator FFI dependencies
16#[cfg(feature = "mimalloc")]
17extern crate libmimalloc_sys;
18#[cfg(feature = "jemalloc")]
19extern crate tikv_jemalloc_sys;
20
21pub mod application;
22pub mod compression;
23pub mod config;
24pub mod domain;
25pub mod error;
26pub mod frame;
27pub mod infrastructure;
28pub mod memory;
29pub mod parser;
30pub mod security;
31pub mod semantic;
32pub mod stream;
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    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        DecompressionContextStats, SecureCompressedData, SecureCompressor,
84        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::{ArenaJsonParser, 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;