marblejs / marble

Marble.js - functional reactive Node.js framework for building server-side applications, based on TypeScript and RxJS.
https://marblejs.com
MIT License
2.15k stars 73 forks source link

refactor(http): eagerly loaded `HttpOutputEffect` and `HttpErrorEffect` #357

Closed JozefFlakus closed 3 years ago

JozefFlakus commented 3 years ago

PR Type

What kind of change does this PR introduce?

[ ] Bugfix
[x] Feature
[x] Code style update (formatting, local variables)
[x] Refactoring (no functional changes, no api changes)
[ ] Build related changes
[ ] CI related changes
[ ] Documentation content changes
[ ] Other... Please describe:

What is the current behavior?

Current HTTP effect I/O flow:

1. HttpMiddlewareEffect
Observable<req> -> Observable<req>

2. HttpEffect
Observable<req> -> Observable<{ status, body, headers }>
Observable<req> -> Observable<{ status, body, headers, request }>

3. HttpOutputEffect  ## here is the inconsistency 👇 
Observable<{ req, res: { status, body, headers } }> -> Observable<{ status, body, headers }>

4. HttpErrorEffect  ## here is the inconsistency 👇 
Observable<{ req, error }> -> Observable<{ status, body, headers }>

What is the new behavior?

HTTP effect I/O flow after the change:

1. HttpMiddlewareEffect
Observable<req> -> Observable<req>

2. HttpEffect
Observable<req> -> Observable<{ status, body, headers }>
Observable<req> -> Observable<{ status, body, headers, response }>

3. HttpOutputEffect  ## 👇 
Observable<{ status, body, headers, request }> -> Observable<{ status, body, headers, request }>

4. HttpErrorEffect ## 👇 
Observable<{ error, request }> -> Observable<{ status, body, headers, request }>

Does this PR introduce a breaking change?

[x] Yes
[ ] No
codecov[bot] commented 3 years ago

Codecov Report

Merging #357 (b012be6) into next (46befd6) will decrease coverage by 0.70%. The diff coverage is 93.37%.

Impacted file tree graph

@@            Coverage Diff             @@
##             next     #357      +/-   ##
==========================================
- Coverage   94.91%   94.21%   -0.71%     
==========================================
  Files         135      159      +24     
  Lines        2242     3092     +850     
  Branches      301      353      +52     
==========================================
+ Hits         2128     2913     +785     
- Misses        110      175      +65     
  Partials        4        4              
Impacted Files Coverage Δ
packages/core/src/logger/logger.interface.ts 100.00% <ø> (ø)
packages/core/src/operators/use/use.operator.ts 50.00% <ø> (-50.00%) :arrow_down:
packages/http/src/http.interface.ts 100.00% <ø> (ø)
packages/http/src/index.ts 0.00% <0.00%> (ø)
packages/http/src/router/http.router.matcher.ts 100.00% <ø> (ø)
...messaging/src/transport/strategies/tcp.strategy.ts 0.00% <0.00%> (ø)
packages/middleware-cors/src/applyHeaders.ts 100.00% <ø> (ø)
packages/middleware-cors/src/checkOrigin.ts 100.00% <ø> (ø)
packages/middleware-cors/src/configureResponse.ts 100.00% <ø> (ø)
packages/middleware-cors/src/index.ts 100.00% <ø> (ø)
... and 164 more

Continue to review full report at Codecov.

Legend - Click here to learn more Δ = absolute <relative> (impact), ø = not affected, ? = missing data Powered by Codecov. Last update 6973ec5...b012be6. Read the comment docs.