Skip to main content
OrionJS 4.5 separates Echoes from the rest of the framework. @orion-js/echoes can now run in a plain Node.js service without loading Orion’s schema, services, HTTP, environment, helpers, or logger packages. OrionJS minor releases are coordinated: every @orion-js/* package is published as 4.5.0. Upgrade all OrionJS packages used by an application together instead of mixing 4.4 and 4.5 package dependencies inside the same process. Existing Orion applications keep the same schema cleaning and validation, dependency injection, HTTP routes, logger context, and error classes through the new @orion-js/echoes-orion adapter. The event and request wire formats have not changed, so 4.4 and 4.5 services can communicate while you deploy the migration incrementally.

Choose your migration path

Applications using Components

Upgrade Echoes and Components, along with the rest of the OrionJS packages used by the application:
@orion-js/components installs and initializes the Orion adapter automatically. Existing Echoes controllers can continue using raw Orion schemas and @Inject():
No controller rewrite is required.

Orion applications using Echoes directly

If the application does not import @orion-js/components, install the adapter explicitly:
Import it once in the application entrypoint, before importing any module that declares an Echoes controller:
Import order matters for decorated classes. The adapter must be installed before @Echoes() runs so Orion can capture @Inject() metadata for that controller.

Services that do not use Orion

Install only the standalone package:
Echoes accepts SimpleSchema-compatible objects with clean() and validate() methods. Use typedEchoesSchema() when you want to attach a TypeScript value type to the runtime schema:
For another schema library, install an adapter once with configureEchoesRuntime():

Runtime schema behavior is preserved

Echoes 4.5 still executes this pipeline for every handler:
  1. Deserialize the incoming value.
  2. Clean handler parameters.
  3. Validate handler parameters.
  4. Run the resolver.
  5. Clean the return value.
  6. Serialize the response.
The Orion adapter delegates parameter cleaning and validation to @orion-js/schema.cleanAndValidate() and return cleaning to @orion-js/schema.clean(). Defaults, custom cleaners, custom validators, field types, and ValidationError therefore behave as they did in 4.4.

Install the event transports you use

Kafka and Pulse are now optional peers. Neither is loaded when a service only uses synchronous Echoes requests. For Kafka:
For Pulse:
The existing configuration remains valid:
If you are migrating event traffic from Kafka to Pulse, follow the incremental Kafka-to-Pulse rollout.

Standalone HTTP receivers

Orion applications continue registering /echoes-services through @orion-js/http. Standalone services provide a small registrar for their HTTP framework:
The default request client now uses Node.js HTTP and HTTPS directly, including redirects, retries, and timeouts. Axios and jssha are no longer required application dependencies.
  1. Upgrade listener services first.
  2. Verify that Orion apps load @orion-js/echoes-orion, directly or through Components.
  3. Install kafkajs explicitly in every service that still uses Kafka.
  4. Deploy publishers after listeners are healthy.
  5. Run the compiler, build, and application tests.
Because the wire format is unchanged, this can be a normal rolling deployment. No MongoDB data migration, Kafka topic migration, or coordinated downtime is required for the 4.5 package upgrade.