Expressive Tea Logo

We are excited to announce our production release 1.2.2, this minor release includes some bug fixing and little improvements to stabilize the project and code, also, this release does not break anything from previous versions.


Features

Plugin’s constructor arguments.

An important feature allows passing information in the design mode from the decorator, this new feature will allow making more dynamic Plugins adding external context or important settings for better functionality.

@Pour(GenericPlugin, {test: 12}, true)
class Bootstrap{}

// Will pass to the next plugin constructor.
class GenericPlugin extends Plugin {
  // {test: 12} and true will passing to settings and isDebug respectively.
  constructor(settings: IDynamicObject, isDebug: boolean) {}
}

Module’s providers optional declaration.

Under Module declaration, the “providers” property are mandatory, even if you are not used. On this version we rolled back from our beta release this feature to flag the “providers” property to be optional, so instead to declare the module as:

@Module({
  controllers: [RootController],
  providers: [],
  mountpoint: '/'
})
export default class RootModule {
}

now you can declare as:

@Module({
  controllers: [RootController],
  mountpoint: '/'
})
export default class RootModule {
}

Bug Fixes.

Handling Numbers.

When a decorated controller method returns a number as a response to a request the Express engine interprets this as a response code instead of just a response to the request with a number value. This issue has been addressed in this release.

@Get('/response-number')
async numberResponse() {
  return 300;
}

Correct Error Handling.

Before this version, an issue was detected on the error handling on the autoresponse feature. This error makes autoresponse only return “500” Errors to the requests that contain an Exception, even if using Expressive Tea dedicated Exceptions. The issue has been addressed on this version and now should work correctly.

@Get('/response-number')
async numberResponse() {
  throw new BadRequestException('return correctly');
}

Enhancements.

Bring down vulnerabilities.

Vulnerabilities reported by our automated process using Snyk were addressed by updating our dependencies to the latest supported version; our mission is to maintain a vulnerability-free code base, which is why we put the effort to bring that vulnerability counter down 0.


Home Improvements.

We try to improve our home (our code) on every release, and as soon we realize we need to change, enhance or improve something, we all in to do it. We started with improving our grammar in our README file to communicate better and learn writing, not just better code, if not an excellent way to give you a better understanding of our work.

Another important thing is that after we moved on as a stand-alone entity, we did not modify our Github URL or broken URLs; we corrected that on this new release.

Also, unfortunately, we drop Travis CI as our leading CI service; this is mainly because the latest changes to move on all their operation from their ORG website make us trouble setting up their service in our Open Source project again. Therefore, we move on into Circle CI, and now we have peace of mind in having our automation test rely again on a CI service, which is fantastic; this new service is an incredible tool, and we like it that much.

We are using Yarn as the principal dependency’s manager and as a primary builder; as we move into Yarn, we will drop the use of Gulp and replace it with pure yarn commands. This will reduce our external dependencies and also be susceptible to external vulnerabilities.


Related Post

Leave a Comment