Releases: nestjs/nest
Releases · nestjs/nest
v5.1.0
Features
- common:
FileFieldsInterceptor
upload multiple files with different names (multer.fields
) #741 - core: support async dynamic modules #800
- core: exclude routes in the
MiddlewareBuilder
#790 - core: support
RouteInfo
in theMiddlewareBuilder
(restrict middleware to certain request method)
forRoutes(
{ path: 'cats', method: RequestMethod.GET },
{ path: 'cats', method: RequestMethod.POST },
)
Bug Fixes
- common: empty body ends up with 500 error (
ValidationPipe
) #734 - core: the last one of
APP_
providers get registered #812 - core: middleware runs more than once #779
- core: custom decorators not being treated as default ones #765
- microservices: allow gRPC stream cancellation #773
Improvements
v5.0.1
Bug Fixes
- common: add missing
forbidUnknownValues
property (ValidationPipe
) #706 - core: support circular structures in the dynamic module #678
- core: global prefix and middleware incompatibility #718
- core: exceptions are not handled in cascade way #729
- core: validate route path passed in
forRoutes()
#692 - websockets:
@WebSocketGateway
and@SubscribeMessage
do not properly handle errors #683 - testing: fix misssing logger
v5.0.0
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
v5.0.0-beta.4
v5.0.0-beta.3
v5.0.0-beta.0
5.0.0-beta.0
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: improve existing transporters (TCP, Redis), provide new strategies: Nats, MQTT, gRPC
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 (make use of pipeable operators)
- 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) - core: deprecate
modules: []
property (useimports: []
instead) - core: deprecate
components: []
property (useproviders: []
instead)
Notes
- move from traditional express middleware model: each middleware is solely bounded to a particular path, regardless of the request method
v4.6.6
v4.6.5
Bug Fixes
- common:
File(s)Interceptor
does not populate thrown exception #437 - core:
NestFactory.create()
returnsany
- core: use
ApplicationConfig
withinExternalContextCreator
#434
Improvements
- common:
HttpException
extendsError
- core: make
cors
middleware customizable (enableCors()
,{ cors }
) #457 - microservices:
RpcException
extendsError
- websockets:
WsException
extendsError
v4.6.4
Bug Fixes
- common: logger overrides custom logger scope #435
- common:
FileInterceptor
supports only one options at once #429 - common: support
symbol
as a token (NestApplicationContext
) - core: fix exception handler (exceception thrown in the
done()
callback) #431 - core: incorrect HTTP response on
SyntaxError
#430 - microservices: can't select/get from context when using
NestFactory.createMicroservice
#398
v4.6.1
Features
- common:
ValidationPipe
improvements #383 - common:
ParseIntPipe
improvements #385 - common: add
FileInterceptor
,FilesInterceptor
,@UploadedFile()
and@UploadedFiles()
(multer
integration) - common: add
HttpModule
that exposesHttpService
(axios
integration) - core: add
app.disable()
andapp.enable()
wrappers aroundexpress
app - core: add ability to inject
express
reference (EXPRESS_REF
token) - core: enable possibility to extend metadata (inheritance support) #228
- core:
NestFactory.create()
now accepts third argumentHttpsOptions
- core: add
app.enableCors()
toINestApplication
(cors
integration) - core: add
@Render()
decorator (MVC applications) - core: provide
Logger.overrideLogger()
#247 - core: [feature] add
appOptions
property tocreate[..]
methods ofNestFactory
- microservices: add
listenAsync()
toINestMicroservice
instance
Bugfixes
- core: simplify HTTPS protocol usage
- core: custom transport strategy - thrown exceptions issue #290
- core: injector fails silently #287
- core: secure websockets (
wss://
) #384 - core: can't select/get from context when using
NestFactory.createMicroservice()
#398 - core: interceptor
$stream
observable returns another observable instead of the response object #376 - core:
Observable.throw
from controller results in unhandled rejection promise #373
Improvements
- common: create
ModuleMetadata
interface - core: majority of methods (
INestApplication
,INestMicroservice
, andINestApplicationContext
) returnthis
instead ofvoid
- core: remove static dependencies & relationships inside
NestFactory