Skip to content
CAI
Software that uses CAICheck a score

thenativeweb/node-eventstore

44.2

Weak · 21 September 2026

5.1k

lines of production code

JavaScript

primary language

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a Node.js library for implementing event sourcing patterns. It provides a structured class hierarchy for managing event storage, dispatch, and stream state, while supporting multiple persistence backends including MongoDB, Redis, Elasticsearch, and DynamoDB.

Features

Add new database store implementations for Azure Table, DynamoDB, Elasticsearch, In-Memory, MongoDB, Redis, and TingoDB

The lib/databases directory now includes new store implementations for Azure Table, DynamoDB, Elasticsearch, In-Memory, MongoDB, Redis, and TingoDB. Each implementation provides the standard event store interface (connect, disconnect, clear, addEvents, getEvents, etc.) tailored to its respective storage technology. This adds support for a wider variety of persistence backends, allowing users to choose the database that best fits their infrastructure needs.

lib/databases · high confidence

Initial release of the node-eventstore library

The repository has been initialized with the core eventstore implementation, including the main entry point (index.js) and support for multiple storage backends such as MongoDB, Redis, Elasticsearch, Azure Table, DynamoDB, and TingoDB. The release also includes standard project configuration files like .editorconfig, .eslintrc, .npmignore, and .travis.yml for CI/CD, along with comprehensive documentation in README.md and a detailed changelog in releasenotes.md.

(repo-wide) · high confidence

Introduce base Store, Event, EventDispatcher, EventStream, and Snapshot classes

The library now exposes a structured class hierarchy for event sourcing: a base \Store\ class defining the interface for persistence operations (e.g., \getEvents\, \addEvents\, \cleanSnapshots\), an \Event\ class wrapping raw event data with stream and mapping context, an \EventDispatcher\ that manages the queue and serial processing of undispatched events, an \EventStream\ that manages uncommitted events and revision tracking for an aggregate, and a \Snapshot\ class for persisting aggregate state. These components form the core internal architecture for event storage, dispatch, and stream management.

lib · high confidence

Test coverage

Added comprehensive test suites for core components

Added new test files for the EventDispatcher, EventStream, Event, EventStore, Snapshot, and StoreEventEmitter classes, along with configuration files for the Mocha test runner and ESLint rules for the test directory. These tests validate the creation, initialization, and API function calls of the event store's internal components.

test · high confidence

Dependencies

Update package.json with modern dependencies and metadata

The package.json has been updated to version 1.15.5, adding author and contributor metadata, repository information, and a comprehensive list of keywords. Dependencies have been upgraded and expanded: async to 2.6.2, debug to 3.1.0, lodash to 4.17.19, and uuid to 3.3.3, among others. Dev dependencies include elasticsearch, mongodb, redis, and testing tools like mocha and eslint. The module now targets Node.js 0.8.0 or higher.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Score

  • CAI 48 → 44 (-4.2)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 40 → 38 (-2.1)
  • Architecture 98 → 98 (+0.6)
  • Maturity 49 → 48 (-0.7)
  • Readiness 40 → 32 (-7.9)
  • Security 100 → 100 (+0.0)

Resolved (9)

  • (anonymous) (cognitive 16) (lib/databases/elasticsearch.js)
  • Coverage not included — suite not readable by the collector
  • Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
  • No exposed public API
  • Scanner failed to run — not a clean result
  • Test reliability not included
  • addEventEmitter (cognitive 24) (lib/storeEventEmitter.js)
  • addEventEmitter (cyclomatic 25) (lib/storeEventEmitter.js)
  • dormant codebase — no living knowledge left to concentrate

New (70)

  • Coverage not measured — JavaScript/TypeScript suite
  • Dependency hygiene PARTLY measured — npm pinning read, dependency currency not (no committed lockfile, so no resolved version to grade)
  • Documentation: no installation or build instructions (README.md)
  • Documentation: no usage examples (README.md)
  • FunctionTooLong: storeEventEmitter.StoreEventEmitter (lib/storeEventEmitter.js)
  • Hotspot: lib/databases/mongodb.js (lib/databases/mongodb.js)
  • Leaked secret: high-entropy-secret (lib/databases/azuretable.js)
  • No assertions: it should emit connect (test/eventstoreTest.js)
  • No assertions: it should emit connect (test/storeTest.js)
  • No assertions: it should emit disconnect (test/eventstoreTest.js)
  • No assertions: it should emit disconnect (test/storeTest.js)
  • No assertions: it should emit the correct events (test/storeEventEmitterTest.js)
  • No assertions: it should emit the correct events (test/storeEventEmitterTest.js)
  • No assertions: it should emit the correct events (test/storeEventEmitterTest.js)
  • No assertions: it should emit the correct events with all parameters (test/storeEventEmitterTest.js)
  • No assertions: it should emit the correct events with all parameters (test/storeEventEmitterTest.js)
  • No assertions: it should emit the correct events with all parameters (test/storeEventEmitterTest.js)
  • No assertions: it should emit the correct events with all parameters (test/storeEventEmitterTest.js)
  • No assertions: it should emit the correct events with all parameters (test/storeEventEmitterTest.js)
  • No assertions: it should emit the correct events with all parameters (test/storeEventEmitterTest.js)
  • …and 50 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

thenativeweb/node-eventstore was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 21 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 904fbf6d4f398d38f39deb5b0177bfcb19c2b1b3 — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-fa71c66cabd8.