Skip to content

Releases: nestjs/nest

v5.3.0

31 Aug 11:16
Compare
Choose a tag to compare

Features

  • common: caching mechanism - add CacheModule module #695
  • common: serialization - add ClassSerializerInterceptor interceptor
  • common: add MulterModule module
  • core: ExternalContextCreator now supports pipes
  • websockets: support acknowledgments in socketio IoAdapter #982

Bug Fixes

  • core: expose valid HttpServer within ExpressAdapter #1017

Improvements

  • core: injector improvements (mainly circular dependencies)
  • websockets: improve adapters (WsAdapter and IoAdapter)

v5.2.0

22 Aug 14:29
Compare
Choose a tag to compare

Features

  • common: provide global config for axios instance HttpModule.register() #846
  • core: use default exception filter handler on condition (extend core class) #860
  • core: add @Optional() decorator #847
  • core: enhance ExternalContextCreator (for 3rd-party libraries purposes)
  • core: allow ModuleRef to get imported providers (strict/non-strict mode) #832
  • core: support DynamicModule in NestFactory.create[..]() #671

Bug Fixes

  • common: multiple FileInterceptor interceptors per class #935
  • common: custom decorators shouldn't require "data" parameter #892
  • core: fastify & middleware wildcards bug #972
  • core: innherited guards not being applied #879
  • microservices: NATS subject wrapping no longer messing wildcards up #948

Improvements

  • core: allow using single Logger instance #926
  • core: hierarchical module resolution #938
  • microservices: use @grpc-loader withing gRPC transport #980
  • testing: recursively trigger OnModuleDestroy hook for testing module #899

v5.1.0

05 Jul 12:52
Compare
Choose a tag to compare

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 the MiddlewareBuilder (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

  • common: expose axiosRef from HttpService#842
  • common: make MiddlewareFunction generic #778
  • microservices: propagate internal gRPC error #844
  • testing: type signature for TestModule.get() is too restrictive #772

v5.0.1

26 May 10:43
Compare
Choose a tag to compare

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

13 May 09:11
Compare
Choose a tag to compare

Features

  • core: support async lifecycle hooks (OnModuleInit and OnModuleDestroy) #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 and typeorm 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 (use MiddlewareFunction)
  • core: deprecate modules: [] property (use imports: [] instead)
  • core: deprecate components: [] property (use providers: [] instead)
  • core: removed MiddlewaresConsumer (use MiddlewareConsumer)

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

28 Apr 13:27
Compare
Choose a tag to compare

5.0.0-beta.4

Bug Fixes

  • core: param pipes aren't working correctly #592
  • microservices: unnecessary modules required #594

Improvements

  • all: upgrade RxJS version (v6.0.0)

v5.0.0-beta.3

22 Apr 10:13
Compare
Choose a tag to compare

5.0.0-beta.3

Bug Fixes

  • core: incorrect ExpressAdapter method wrappers #585
  • core: the fastify-formbody is no longer a required dependency #575
  • core: incorrect createApplication() typings (unable to pass express instance directly) #575

v5.0.0-beta.0

22 Apr 10:13
Compare
Choose a tag to compare

5.0.0-beta.0

Features

  • core: support async lifecycle hooks (OnModuleInit and OnModuleDestroy) #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 and typeorm 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 (use imports: [] instead)
  • core: deprecate components: [] property (use providers: [] 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

11 Mar 12:52
Compare
Choose a tag to compare

Bug Fixes:

  • common: File(s)Interceptor throws http status code 500 #465
  • core: e2e testing, EXPRESS_REF injector issue #484
  • microservices: NO_PATTERN_MESSAGE bugfix #491

Improvements:

  • common: class-transformer update #483
  • common: HttpService improvements, remove duplicated axios interfaces #470
  • core: far more meaningful exception when not available component is exported (module inconsistency) #479

v4.6.5

01 Mar 21:37
Compare
Choose a tag to compare

Bug Fixes

  • common: File(s)Interceptor does not populate thrown exception #437
  • core: NestFactory.create() returns any
  • core: use ApplicationConfig within ExternalContextCreator #434

Improvements

  • common: HttpException extends Error
  • core: make cors middleware customizable (enableCors(), { cors }) #457
  • microservices: RpcException extends Error
  • websockets: WsException extends Error