graph LR
Streams["fa:fa-stream Node.js Streams"]
%% Main Stream Types
Readable["fa:fa-arrow-down Readable"]
Writable["fa:fa-arrow-up Writable"]
Duplex["fa:fa-exchange-alt Duplex"]
Transform["fa:fa-random Transform"]
%% Core Events
Events["fa:fa-bolt Events"]
%% Main Operations
Pipe["fa:fa-project-diagram Pipe"]
%% Relationships
Streams --> |"Read data from source"| Readable
Streams --> |"Write data to destination"| Writable
Streams --> |"Read and Write data"| Duplex
Streams --> |"Modify data while flowing"| Transform
%% Event Types
Events --> |"When data available"| Events1["fa:fa-play data"]
Events --> |"When completed"| Events2["fa:fa-stop end/finish"]
Events --> |"When error occurs"| Events3["fa:fa-exclamation-triangle error"]
%% Common Examples
Readable --> |"File reading"| R1["fa:fa-file File Stream"]
Writable --> |"File writing"| W1["fa:fa-save File Stream"]
Duplex --> |"Network communication"| D1["fa:fa-network-wired Socket"]
Transform --> |"Data modification"| T1["fa:fa-font Text Transform"]
%% Pipe Operation
Pipe --> |"Connect streams"| P1["fa:fa-long-arrow-alt-right pipe()"]
%% Style
style Streams fill:#f9f,stroke:#333,stroke-width:4px
style Events fill:#bbf,stroke:#333,stroke-width:2px
style Pipe fill:#fbf,stroke:#333,stroke-width:2px