All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Note: Some version numbers may be skipped to align feature set with the Java version.
-
getError() method added in EventEnvelope to return encoded error message. This is required for distributed trace processing and proper error handling of subflows.
-
Generic resilience handler with alternative path and backoff features
N/A
Delete file when mapping a null value from the LHS to the RHS that is defined as a file, thus allowing clearing of temporary data files in a flow.
N/A
N/A
For security, the parent state machine (namespace "model.parent") is a protected resource. It can only be shared by the primary flow and all sub-flow instances that are instantiated from it.
N/A
Dependency for "execa" is not required
All sub-flows instantiated from a primary flow can access the same parent state machine using the "model.parent" namespace
- Support flow and function for external state machine
- Parent state machine for sub-flow
- Validation rules to reject access to the whole model or parent namespace
N/A
N/A
- simple type matching feature is extended with a new string 'concat' method
- default REST endpoints for /api/event and actuator services
N/A
- Sort REST endpoints for orderly loading
- Drop "async.http.request" RPC traces to reduce observability noise
Support scanning of TypeScript source file and compiled JavaScript files with class scanners (TypeScriptClassScanner and JavaScriptClassScanner)
N/A
preloader.js and developer guide updated
N/A
N/A
- Improved class scanner and loader
- Filter out event metadata to propagate as HTTP response headers
- Extract version from package.json to override info.app.version in application.yml
- Fork-n-Join parallel RPC request API in PostOffice
N/A
Updated Developer Guide's Chapter 5 to describe publishing mercury-composable core library to enterprise npm artifactory
- Log application initialization time
- Two additional actuator endpoints (/info/routes and /env)
N/A
- use different route names for various actuator services to avoid hardcode of URLs
- bugfix for Singleton pattern
Actuator REST endpoints are now configurable in rest.yaml
N/A
Update actuator services to serve REST requests directly
N/A
N/A
Update Actuator function and REST automation's static HTML file handler to address 2 security vulnerabilities reported by a Snyk scan.
- uuid v4 generator in the "simple type matching" feature
- event annotation feature
- tagging feature in the EventEnvelope
The "extra" field has been retired from EventEnvelope
Filter out protected metadata from RPC response to user functions (my_route, my_instance, my_trace_id, my_trace_path)
N/A
N/A
endFlow method of TaskExecutor sends event to distributed trace instead of logging
Added log.always feature in logger
N/A
Update distributed trace function to log in "always" mode
Add 3-part syntax for Event Script's data mapping processing.
Supports the following data mapping syntax:
- LHS -> RHS
- LHS -> model.variable -> RHS
N/A
- Make input event immutable to PostOffice's send and request API
- Consistent temporary stream folder name for Java and Node.js under /tmp/composable
Support of negate operator of a model value in event script added to the "simple type matching" feature
N/A
N/A
N/A
N/A
For consistency with the Composable Java version, do not use pretty JSON print when log.format=text
N/A
N/A
reconfigure logger to json or compact format early when app starts
This is a milestone release for consistent features and behaviors between Java and Node.js versions
- Composable methodology in developer guide
- Event Script engine for event choreography
- Composable example application
N/A
N/A
- Composable class scanner for the source folder
- Added "web.component.scan" parameter to support scanning of dependency libaries
N/A
N/A
AppConfig will resolve key-values from system properties and environment variables at startup
Eliminate preload.yaml configuration file
- Streamlined configuration management
- Updated preload annotation for developer to define concurrency
Support parsing of multiple environment variables and base system properties for a single key-value in Config Reader.
N/A
- Improved environment variable parsing logic and detection of config loops.
- Compatibility with Unix, Mac and Windows OS
Upgraded to sync with Mercury-Composable for the foundation event-driven and Event-over-HTTP design. Tested with Node.js version 22.12.0 (LTS). Backward compatible to version 20.18.1 (LTS).
Event-over-HTTP compatibility tests conducted with Mercury-Composable version 4.0.32.
N/A
N/A
- Refactored Event-over-HTTP to use standardized HTTP headers X-Stream-Id and X-Ttl
- Updated OSS dependencies to latest version
- Configured for EsLint version 9.16.0
Ported composable core features from Mercury 3.0 Java version
- Unit and end-to-end tests for Mercury 3.0 Node.js and for the example app project.
- For backward compatibility, added optional "setupMiddleware" method in the rest-automation module.
Threshold feature in REST automation
N/A
Minimal viable product
N/A
N/A