v5.0.0
·
18716 commits
to master
since this release
Features
- core: support async lifecycle hooks (
OnModuleInitandOnModuleDestroy) #569 - core: HTTP server independence, fastify integration (
FastifyAdapter) - core: allow binding global interceptors, filters, pipes, and guards from any module. Example:
{
provide: APP_INTERCEPTOR,
useClass: LoggerInterceptor,
}- core:
@UseGuards(),@UsePipes(),@UseFilters(), and@UseInterceptors()extend metadata, instead of overriding existing one - core: dependency injection everywhere (pipes, filters, interceptors, and guards)
- core: pass
ArgumentsHostto exception filters (ability to access each argument) - core: pass enhanced
ExecutionContextto both interceptors and guards (ability to access each argument and execution context) - microservices: rewrite existing transporters (TCP, Redis), provide new strategies: Nats, MQTT, gRPC
- all: improve execution context performance (http, ws, microservices)
Bug Fixes
- common: incorrent
multerdependency #532 - core: hanging
NestApplicationContextprocess #503 - microservices: concurrency issues (both TCP and Redis transporters) #505
Improvements
- all: remove
reflect-metadatapeer dependency #563 - all: upgrade RxJS to 6.0.0
- all: move to Node.js >= 8.9.0 (TypeScript target
es2017) - core: more descriptive exceptions (circular dependency) #493
- core: Nest container compatible with
useContainer()(class-validatorandtypeormpackages) #528 - core: remove static dependencies (webpack compatibility)
- websockets:
@WebSocketGateway()takes options argument that is passed to socket.io instance #508
Deprecations
- common: deprecate
@Component(),@Middleware(),@Interceptor(),@Pipe(), and@Guard()decorators (use@Injectable()instead) - common: removed
ExpressMiddleware(useMiddlewareFunction) - core: deprecate
modules: []property (useimports: []instead) - core: deprecate
components: []property (useproviders: []instead) - core: removed
MiddlewaresConsumer(useMiddlewareConsumer)
Notes
- move from traditional express middleware model: each middleware is solely bounded to a particular path, regardless of the request method
Migration guide: https://docs.nestjs.com/migration-guide