flowchart LR
Start([HTTP Request]) --> Middleware[Middleware]
Middleware --> Guards[Guards]
Guards --> InterceptorsPre[Interceptors<br/>Pre-process]
InterceptorsPre --> Pipes[Pipes<br/>Validation]
Pipes --> Controller[Controller<br/>Handler]
Controller --> InterceptorsCatch{Interceptor<br/>catches?}
InterceptorsCatch --> HandleError[Process Error<br/>with catchError]
InterceptorsCatch --> InterceptorsPost[Interceptors<br/>Post-process]
HandleError --> InterceptorsPost
InterceptorsPost --> Response[HTTP Response]
%% Exception paths - magenta lines
Middleware --> ExceptionFilters[Exception Filters]
Guards --> ExceptionFilters
InterceptorsPre --> ExceptionFilters
Pipes --> InterceptorsCatch
HandleError --> ExceptionFilters
InterceptorsPost --> ExceptionFilters
ExceptionFilters --> ErrorResponse[HTTP Error]
Response --> Success([Client Success])
ErrorResponse --> Error([Client Error])
%% Styling
linkStyle 0 stroke:#2196f3,stroke-width:2px
linkStyle 1 stroke:#2196f3,stroke-width:2px
linkStyle 2 stroke:#2196f3,stroke-width:2px
linkStyle 3 stroke:#2196f3,stroke-width:2px
linkStyle 4 stroke:#2196f3,stroke-width:2px
linkStyle 5 stroke:#2196f3,stroke-width:2px
linkStyle 6 stroke:#2196f3,stroke-width:2px
linkStyle 7 stroke:#2196f3,stroke-width:2px
linkStyle 8 stroke:#2196f3,stroke-width:2px
linkStyle 10 stroke:#e91e63,stroke-width:2px
linkStyle 11 stroke:#e91e63,stroke-width:2px
linkStyle 12 stroke:#e91e63,stroke-width:2px
linkStyle 13 stroke:#e91e63,stroke-width:2px
linkStyle 14 stroke:#e91e63,stroke-width:2px
linkStyle 15 stroke:#e91e63,stroke-width:2px
style Start fill:#e1f5fe
style Success fill:#c8e6c9
style Error fill:#ffcdd2
style ExceptionFilters fill:#fff3e0
style InterceptorsCatch fill:#f3e5f5
style HandleError fill:#f3e5f5