Changelog

Release history and notable changes for node-cqrs.

1.2.0-beta.1 (2026-07-17)

1.2.0-beta.0 (2026-06-17)

Features

  • Add sqlite-workers submodule for async SQLite reads (1987a40)
  • Allow SQLite worker connections to be created with a custom factory (fb39cf1)

Internal Fixes

  • Move duplicate worker utils into src/shared/worker-utils/ (8b3c383)

1.1.1 (2026-07-17)

Fixes

  • Chained pipelines not preserving FIFO action start order (ba27d1d)

1.2.0-beta.0 (2026-06-17)

Features

  • Add sqlite-workers submodule for async SQLite reads (1987a40)
  • Allow SQLite worker connections to be created with a custom factory (fb39cf1)

Internal Fixes

  • Move duplicate worker utils into src/shared/worker-utils/ (8b3c383)

1.1.0 (2026-05-26)

Features

  • Integrate OpenTelemetry for command and event tracing (b03997f)
  • RabbitMQ trace context propagation via W3C TraceContext AMQP headers (1db354a)
  • Redis-backed projection views with distributed locking (experimental) (8ff0f1e)
  • SqliteEventStorage (ffaf766)
  • MongoDB-backed event storage (53fb5e1)
  • MongoDb-backed view model (MongoObjectView, AbstractMongoObjectProjection) (4995bfe)
  • Option for rabbitmq queue-level message TTL (d4461e6)

Changes

  • Remove “md5” from peer dependencies (87600bc)
  • Expose restorePromises on DI container for tracking async projection restoring processes (ebdaa2c)
  • Use Identifier as id type in redis and sqlite views (dfbe964)
  • Add default queueName for RabbitMqCommandBus (ee4b5a1)
  • Add error handling and drain functionality to event publishing process (d23ea62)
  • Allow extra command parameters to be passed to AbstractAggregate handler as 3rd argument (ae11b7e)
  • Deliver events to worker in batches during restoring phase (212e353)

Fixes

  • Defer aggregate cache pre-warm to avoid orphaned async operations on command error (677ed29)

Documentation

  • Remove readme code samples in favor of runnable ./examples/ (73417c3)
  • Rearrange examples to use same aggregate and projection implementation (5325901)
  • Add detailed documentation for redis and mongodb modules (72e66f5)
  • Detailed sqlite and rabbitmq instructions (dd242fd)
  • Minor spec update (6a2883a)
  • Add index.html for publishing with gh pages (cac88ed)
  • Fix homepage styles cdn (6ab1ff2)

Build System

  • Add “rebuild” npm script (2e5e977)

Internal Fixes

  • Rename telemetry metadata span field to otelSpan, enhance typings (2ca2494)
  • Compiled AbstractWorkerProjection type compatibility (bf8ca08)
  • Enhance message payload typing (7911acc)
  • Expose viewLocker on WorkerProxyProjection (628fbe3)
  • Make getHandler to throw error if handler is not defined (ecbd73e)
  • Allow disposing worker projection proxy more than once (768f73a)

1.0.2 (2026-04-03)

Changes

  • Set x-consumer-timeout on MQ according to configured handlerProcessTimeout (3e272ea)
  • Disable DLQ setup for RabbitMqEventBus by default (b953829)

Internal Fixes

  • Event description formatting in logging (419cc7d)
  • Fix vulnerabilities in dev dependencies (203ef19)

1.0.1 (2026-03-31)

Fixes

  • Use setImmediate in Node.js for nextCycle to avoid setTimeout performance overhead (4b63706)

Internal Fixes

  • Fix vulnerability in dev dependency (610757b)

1.0.0 (2026-03-21)

Features

  • RabbitMQ integration classes to support event publishing and subscription (991c223)
  • Run projections derived from AbstractWorkerProjection in worker threads with remote view access (3d4c56a)
  • Support selective restore event loading (3a74da6)
  • Multi-saga correlation via message.sagaOrigins + simplified ISaga (mutate/handle) with AbstractSaga state support (ae67594)
  • Re-process commands on concurrency errors in EventStorage (8a60560)
  • Add RabbitMQ command bus implementation and enhance MQ configuration options (a565c59)

Changes

  • Remove publishAsync setting, simplify publishing sequence (79257e5)
  • Support persistent views; Add SQLite infrastructure (c235573)
  • Move validation, snapshot and event persistence to EventDispatcher pipeline (e781f7c)
  • Cache immediate aggregates to handle concurrent commands (e193c4c)
  • Enhance type safety in CqrsContainerBuilder with generics (025765c)
  • Move reconnect logic to rabbitMqConnectionFactory; re-establish subscriptions on reconnect (a42d138)
  • Auto-reconnect to RabbitMQ (ba80536)
  • Apache-2.0 License (576869b)
  • Publish events asynchronously without awaiting for subscribers to complete (025edb8)
  • Make saga startsWith optional to reduce boilerplate (34cc162)
  • Exclude getHandledMessageTypes from export (afa1cf6)
  • Use di0 resolvers to avoid explicit type alias declarations (efcbc77)
  • Add an option for ES concurrency errors ignoring (5189ba0)
  • Allow extending WorkerProxyProjection via workerProxyFactory custom proxy type (c9860b6)
  • Resolve RabbitMQ appId from injected rabbitMqAppId provider (56c2fe1)
  • Return established subscription details from subscribe method of RabbitMqGateway (7768256)
  • Add option for queue expiration (7073832)
  • Add option to disable handler timeout on rabbitmq subscription (dd76d5e)
  • Pass event meta through projection chain, allow skipping last event update for internal-origin events (dd36395)

Fixes

  • Asserting db connection in prolongLock and unlock methods (b272473)
  • Proper milliseconds calculation for Event Locker (ca4016a)
  • Concurrent operations handling in SqliteObjectStorage updateEnforcingNew (bab7807)
  • Failing synchronous event handler may prevent execution of other handlers (fb026e5)
  • All errors being ignored with concurrency resolution set to ‘ignore’ (0cb10bc)
  • Avoid finalization of already finalized MQ messages (a9a1ea6)

Documentation

  • Rename GH workflow and corresponding badge (8dd82df)
  • Add CONTRIBUTING.md symlinks for coding agents (878f25f)
  • Update package description and keywords (15ef847)
  • Add AbstractWorkerProjection description to readme.md (dd3952c)

Tests

  • Improve test coverage (b13e51d)
  • Allow running individual integration tests with npm t (cfef9a8)
  • Fix broken AbstractWorkerProjection example (5320b97)
  • Migrate chai+sinon tests to pure jest and remove legacy deps (86840dd)

Build System

  • Update changelog titles and commit message prefixes (8c6ead0)
  • Add ESM, CJS, and Browser builds (e83018f)
  • Add pull_request trigger to Coveralls workflow (8c7b95a)
  • Add eslint to github actions; cleanup eslint rules (405efb0)
  • Update the CI workflow to request an OIDC ID token (f4f86c7)
  • Remove comments from compiled dists (d7124bd)
  • Refactor NPM publish step to handle pre-release and release tagging dynamically (3f35a79)
  • Fix browser build with rollup (cc70f71)
  • Default npm publish tag to “alpha” for numeric pre-ids; rework tag cleanup hierarchy (6d89e7b)

Internal Fixes

  • Use structuredClone for snapshot creation (1d0e827)
  • Simplify aggregate interface (3e141fd)
  • Use “quorum” type for durable queues (f617149)
  • Vulnerability in js-yaml dev dependency (0e9b25e)
  • Ensure proper subscription management in TerminationHandler (506acc2)
  • Refactor subscription handling, improve logging on subscription removing (72c5370)
  • Close rabbitmq connection on SIGINT/SIGTERM (21686be)
  • MQ consumption starts before handler is properly recorded (35a974b)
  • Enhance logging in RabbitMqGateway and AbstractProjection for better traceability (57d3f30)
  • RabbitMQ connection not auto-closing on SIGTERM (63b4f48)
  • Update Lock interface to support resource management with using keyword (196332e)
  • Expose connection state events on RabbitMqGateway (42fe349)
  • Move workers tests to “integration/”, letting unit tests to run without build (9038356)
  • Update di0 with fixed resolvers (c4dcb4f)
  • Split AbstractWorkerProjection into worker-side and main-thread proxy (751bfcf)
  • Rename InMemoryLock event to match IViewLocker interface (1fe2eb1)
  • Separate projection restoring from subscription; start explicitly in DI container (3ddc649)
  • Allow EventStore to resolve reader from eventStorage alias (91cd778)
  • Update dependencies (8c7478e)
  • Consolidate CommandBus into InMemoryMessageBus (62b1b0a)
  • Upgrade di0 to latest stable version with resolvers (5f2c9ad)
  • Enable “x-single-active-consumer” on event queues (6cf8e74)

0.17.0 (2025-08-12)

Changes

  • Add InMemoryView.prototype.getSync method (5d4adb9)

Fixes

  • Vulnerability in minimist dependency (07b8c68)

Build System

  • Add NPM publishing script (3372990)
  • Suppress audit and test for tags (574a00c)

Internal Fixes

  • Migrate to TS and Jest (6737d55)
  • EventStore not subscribing to events emitted by storage (84eaea1)

0.16.4 (2022-08-28)

Internal Fixes

  • Use di package from npm (0e8db91)

0.16.3 (2022-01-28)

Changes

  • Update dev dependencies (e76db7b)
  • Remove InMemoryView data size calculation (fb4260b)

0.16.2 (2021-07-06)

Fixes

  • Vulnerabilities in dependencies (1bdd491)

0.16.1 (2021-05-28)

Changes

  • Postpone view.get responses to next loop iteration (950c2e4)

Fixes

  • Mark aggregateId optional on command send (f496ecf)

0.16.0 (2020-03-18)

Features

  • Accept logger as an optional dependency (65fe5ad)
  • Detect circular dependencies in DI container (1490b51)

Changes

  • Move DI container to a separate package (350f3f4)
  • Do not bind masterHandler to observer automatically (d2ec79d)
  • Remove deprecated InMemoryView..markAsReady method (23015ec)
  • Remove IProjectionView interface (eb8e723)
  • Remove dependency to nodejs EventEmitter (3fd7cd8)
  • Wrap types in NodeCqrs namespace (74e9b67)

Fixes

  • Debug output not using toString in Node 12 (ca0d32f)
  • Debug output on one time subscriptions (2fd7601)
  • Correctly set type of the extended container builder created from container (1f2f632)
  • Moderate security issue in “minimist” dev dependency (579d523)

Documentation

Tests

  • Fix tests in Node 12 (beeb471)
  • Run example domain tests with unit tests (5ffdb43)
  • Run eslint for entire project folder (d9055a1)

Build System

  • Prevent git push on version (3ea9e38)
  • Add conventional-changelog script (da26a1c)
  • Run tests in NodeJS 12 env (1d4239c)
  • Replace changelog eslint preset with custom one (8507262)
  • Exclude unnecessary files from package (47b6797)
  • Do not install global dependencies (158783c)

0.15.1 (2019-08-26)

Changes

  • Upgrade dev dependencies to fix audit script (ef01cc3)

0.15.0 (2019-08-25)

0.14.2 (2018-07-29)

0.14.1 (2018-07-14)

0.14.0 (2018-05-17)

0.13.0 (2017-10-04)

0.12.6 (2017-08-23)

0.12.5 (2017-06-23)

0.12.4 (2017-04-25)

0.12.3 (2017-04-24)

0.12.1 (2017-04-24)

0.12.0 (2017-04-22)

0.11.1 (2017-03-01)

0.11.0 (2017-01-18)

0.10.0 (2017-01-16)

0.9.3 (2017-01-06)

0.9.2 (2016-12-19)

0.9.1 (2016-12-17)

0.9.0 (2016-12-17)

0.8.0 (2016-12-07)

0.7.8 (2016-12-05)

0.7.7 (2016-12-04)

0.7.6 (2016-12-01)

0.7.5 (2016-12-01)

0.7.4 (2016-11-30)

0.7.3 (2016-11-29)

0.7.2 (2016-11-25)

0.7.1 (2016-11-20)

0.7.0 (2016-11-18)

0.6.10 (2016-10-24)

0.6.9 (2016-10-24)

0.6.8 (2016-10-23)

0.6.7 (2016-10-23)

0.6.6 (2016-08-23)

0.6.5 (2016-08-23)

0.6.4 (2016-07-24)

0.6.3 (2016-07-06)

0.6.2 (2016-07-02)

0.6.1 (2016-05-31)

0.6.0 (2016-03-06)

0.5.0 (2016-03-03)

0.4.0 (2016-03-03)

0.3.2 (2016-02-29)

0.3.1 (2016-02-29)

0.3.0 (2016-02-29)

0.2.2 (2015-12-23)

0.2.1 (2015-12-22)

0.2.0 (2015-12-22)