v5.0.0
kamilmysliwiec
released this
13 May 09:11
·
15918 commits
to master
since this release
Features
- core: support async lifecycle hooks (
OnModuleInit
andOnModuleDestroy
) #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
ArgumentsHost
to exception filters (ability to access each argument) - core: pass enhanced
ExecutionContext
to 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
multer
dependency #532 - core: hanging
NestApplicationContext
process #503 - microservices: concurrency issues (both TCP and Redis transporters) #505
Improvements
- all: remove
reflect-metadata
peer 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-validator
andtypeorm
packages) #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