New Features
- The compiler is now type aware (with full type checking support):
- The transformers now know about interfaces
- The transformers are able to infer return types, and so they should no longer be explicitly needed for DI.
- Schema now supports simple types/interfaces for field definitions (also useful for SchemaQuery)
- Image manipulation is a new package and is no longer tied to the asset service, with additional support for JPEG optimization
- The docker portion of old Exec module has been moved to the Command module along with command line support for launching dev related resources via docker
- The program execution part of the old Exec module has been integrated into the Boot module. This provides basic program execution support across all libraries.
- The Test module now boasts a watchable test server, that will listen for changes in test files and automatically re-run them. This is what is used to power the new vscode plugin implementation.
- Extensions files are now part of the barrel export, and will throw errors if used without the appropriate import. E.g. import {SchemaQuery} from '@travetto/schema';
- Code transformation has been externalized to it's own module.
- Configuration now hides secret information at runtime when running in prod
- DI now supports `primary` designation to handle ambiguous situations when multiple candidates are available
- Production mode is now read only and will ensure code compilation and model changes will not occur at runtime. This allows the code to run appropriately in read only environments.
- All watch code is now only applied in dev environments, and is fully externalized to remove performance impact.
- Email templating rewrite no longer requires loading of SASS and parse5 at runtime. These are now dev dependencies and reduce the overall memory footprint. All email template compilation happens at build time.
- Test execution has been reworked to better handle execution failures and other unexpected issues.
Breaking Changes
The largest breaking changes are related to renaming, and are not functional. The full list of breaking changes:
- The code will now be precompiled on many operations now that all files are needed to appropriately typecheck
- *Provider / *Store classes have been renamed to *Source . This to make the sub-module model consistently named (Asseet, Cache, Identity, Model)
- The AssetStore methods have been renamed to match the cache model to provide a consistent API for similar functionality.
- Image manipulation is a new package and is no longer tied to the asset service
- The Email module has been simplified to only support mustache out of the box.
- The Email Template module has been overhauled. It is now a template compiler and there are command line tools to compile (watch and compile), and the UI for development has been overhauled
- The Exec module has been dismantled into various module.
- The Schedule module have been removed, use the node cron package if necessary
- The Worker module has been simplified, and now supports only one worker input source, with the ability to extend as needed.
- All ENV variables have been renamed from X to TRV_X except for DEBUG, and NODE_ENV
- The app module no longer supports isolated sub-apps, everything is always connected.
- The auto flag has been removed from the schema module
- The app cache is now located within the app directory as .trv_cache . Since the command line test run pre-compiles the tests, they use the same cache as well.
- console.trace is no longer supported by the logging infrastructure, and only debug is affected by DEBUG/TRV_DEBUG
Whats Next?
After this release, the framework will spend time solidifying and stabilizing. After a period of stability, the framework will focus on support for:
- Full text searching - Primarily Lucene. Now that MongoDB Atlas supports Lucene as a search index, a separate module focusing on full text indexing will allow for better searching.
- Simplistic Data Stores - Data stores with a subset of features considered to be standard
- DynamoDB - Cannot paginate, with limited sorting/searching capabilities
- FireStore - Cannot paginate, with limited sorting/searching capabilities
- Queues - Support for queue based processing, mainly focused on cloud infrastructure
- AWS SQS/SNS
- Kinesis/Kafka
- Firebase
- WebSocket support and integration with the REST module
No comments:
Post a Comment