Skip to content

v4.0.0-rc.1

Pre-release
Pre-release
Compare
Choose a tag to compare
@JozefFlakus JozefFlakus released this 26 Aug 14:00
· 50 commits to master since this release

Before you'll read

  • New, up to date marblejs.com documentation for Marble.js v4 will land just before official release.

What's new?

  • support for rxjs v7.1
  • support for typescript v4.3
  • corrected io-ts deprecation warnings
  • @marblejs/http - moved @marblejs/core HTTP-related protocol API's to separate @marblejs/http module (see related RFC)
  • @marblejs/http - introduced environment config provider
  • @marblejs/http - HttpOutputEffect's and HttpErrorEffect's are resolved eagerly during initial bootstrap
  • @marblejs/http - optimized request/response processing

Breaking changes

  • @marblejs/core - removed deprecated EffectFactory
  • @marblejs/core - removed legacy switchToProtocol operator
  • @marblejs/http - INTERNAL - changed X-Testing-Request-Id metadata header name from to X-Request-Metadata-Id
  • @marblejs/http - INTERNAL - changed MARBLE_TESTING_METADATA_ON env variable name to MARBLE_HTTP_REQUEST_METADATA
  • @marblejs/http - all HTTP headers are lower cased (normalized) unless MARBLE_HTTP_HEADERS_NORMALIZATION environment variable is set to false (resolves: #311)
  • @marblejs/http - Content-Type header is automatically guessed and provided only when it is not directly provided by the user (same in case of Content-Length header)
  • @marblejs/http - send/handleResponse function are evaluated lazily, which means that they will send the HTTP response only when the stream is subscribed
  • @marblejs/http - HttpResponse.send method returns Observable<boolean> instead of an Observable<never>
  • @marblejs/http - HttpOutputEffect interface change
  • @marblejs/http - HttpErrorEffect interface change

HTTP effect I/O flow after the change (see: #357):

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 }>
  • @marblejs/websockets - removed deprecated server connection$ attribute
  • @marblejs/websockets - lazy evaluation of emitEvent and broadcastEvent functions
  • @marblejs/middleware-joi, @marblejs/middleware-jwt - migrated packages to marblejs/contrib repository