Monday, July 15, 2019

v0.7.0 More is Beta-er

With this next release of the Travetto framework, we march even closer to the release candidate phase. At this point in time there should not be any new major functionality in the next release. The next release should primarily be bug fixes and underlying architectural improvements. The two final areas that need to be tackled for RC are:

AWS Lambda Support

Already in progress, just need to find a good way of splitting out modules if possible. The goal is for initially to have one AWS lambda per Rest endpoint, and to only include the dependencies necessary for that endpoint. This should allow for minimal size of lambda functions, which should also help with cold start performance. In the long run, the goal is to support all serverless implementations, but AWS is an easy starting point.

(Attempt to) Integrate the Typescript type checker

As it stands now, the code transformations (Schema/Model/Rest/Logging/etc.) now work off of single files, and do not do any type resolution. While this works well enough, there are quite a few corner cases, specifically with things like return types and interfaces. The goal is to be 100% correct with the Typescript compiler, but that generally comes at a performance cost for application startup. Hopefully we can integrate the type checker to provide a richer developer experience (and maybe even supporting interfaces in lieu of classes where applicable).
This is a big step forward for the project as nearly every major component has been rewritten at least once, and real world projects are proving out the stability and robustness of the framework at large.

To get started, just use our getting started guide.

Changes

Version 0.7.0 changes (since 0.6.0):

Major Changes

  • Updated to Node v12 and Typescript 3.5.x as a minimum requirement
  • SQL support in the Model Service (postgres and mysql for initial rollout)
  • Moved to async stack traces, which resulted in a substantial performance improvement
    • Requires node 12.x for full stack traces now
  • Added xUnit as test format output for better integration with build systems
  • Proper GEO distance/within queries for Mongo and Elasticsearch
    • SQL support is pending
  • Swagger/Client Generation Fixes for ALL endpoints as well as endpoints with path parameters
    • Switched over to openapitools as swagger-codegen-cli was out of date
  • Rewrote all code transformers to follow specific pattern/framework
    • Code visiting is now in a single pass
    • Focuses on methods/fields/classes as specific type of visitation
    • Makes it very clear what each transformer does and how to modify it

Minor Fixes

  • Changes to ModelService to support rest-session being able to persist properly
  • Yeoman Genenrator has been updated, and the internal dependency management has been rewritten
  • Library updates to maintain latest working versions
  • Brought support for Map/Set to route serialization as JSON objects and arrays
  • Resolved issues with fastify and path determination
  • Properly support redirects in Net util
  • Worker pools now support async operations fully
  • Resolved CORS issue with headers/methods
  • General bug fixes

Saturday, April 20, 2019

v0.6.0 Beta: Soft Launch

With the launch of v0.6.0, the Travetto framework is now in soft beta.

There have been quite a few changes since 0.5.0 (and 0.4.0).  The primary push has been around API stabilization, and general cleanup of many of the core modules (base, compiler, registry, config, test, rest).  Error handling has been overhauled and locked down, as well as testing.

To get started, just use our getting started guide.

Changes

Version 0.6.0 changes (since 0.5.0): 

  • Dependency updates
    • Update to the latest typescript
    • All dependencies have been updated to latest, for all modules
    • Node 11+ is required to run 0.6.0
  • Converted most javascript within the codebase to typescript
    • Only a few entry points are still javascript, and are minimal code
  • CLI Changes
    • Reworked codebase
    • Windows support in progress
    • Supporting color output
    • Standardizing architecture
    • Converting all code to typescript
    • Supports tab completion in bash
  • Testing
    • General stability
    • Assertions and output cleanup
    • Supports capturing unhandled promises
    • Fixed outstanding issue with assert.rejects
    • Worker module breakout/rewrite
  • Auth module rewrite
    • Session is now a separate module and works consistently on all providers
    • Now differentiates between identity and principal
  • Rest module rewrite, 
    • interceptors overhauled
    • endpoint invocation now supports parameters directly vs reading from the request object
  • Base Module rewrite
    • Now 100% in typescript
    •  logging now provides filename and line even if not using the logging module
    • Providing the ability to filter logging by package, folder etc.
  • Boot module 
    • Separated bootstrap code from base to take on the bootstrapping process for the application
    • Is now the core dependency for any module
      • Yaml, config
  • Reworked compiler
    • handling unloading properly now
  • Reworked config
    • Cleaned up code
  • Upgraded the Yeoman generator
    • Supports authentication
    • Dropped ejs in favor of mustache
    • Easier to modify in the future

Version 0.5.0 changes (since 0.4.0):

  • Full test cleans up after self
  • Development DOCS updated
  • Simple caching enhancements
    •   Cache dir now computed differently
    •   Tests use unique cache dir for test runner
  • Streamlined dev vs watch usage
  • Enhanced app entry point usage
    • Detect parameters
    • Reset app cache on change
    • Application decorator with transformer
  • vscode Plugin migration
    • Support all the things
  • Testing stability
  • Schema modifications
    •  All view changes
    •  New view management
  • Unified file path usage and resource loading