/eventstore-ts-client

Eventstore javascript client library written in typescript

Primary LanguageJavaScriptApache License 2.0Apache-2.0

Eventstore typescript / ES6 javascript client lib

License Build Status Quality Gate Status Coverage Lines of Code

Security Rating Reliability Rating Maintainability Rating Vulnerabilities doc coverage

Eventstore node.js javascript client library written in typescript with ES6 async/await syntax.

This repository is in BETA status

Main focus on this lib are:

  • available for typescript
  • available for ES6 with async/await syntax
  • well documented
  • clean code
  • proper code readability
  • proper testing
  • nice error handling

Documentation

Full documentation is available at https://sebastianwessel.github.io/eventstore-ts-client/

Requirements

You will need to have node.js version >=10 installed to use this lib because it's based on async iterators.
It's tested against eventstore version 5, but should also work on lower versions in general.
Expect some shortcut function for accessing standard projections which are not part of lower eventstore versions.

Installation

Installation is as simple as most packages.
Just install package in your projects root with:

npm i --save eventstore-ts-client

Quick-Start

const {Eventstore, Event} = require('eventstore-ts-client')
const es = new Eventstore({
  uri: 'tcp://admin:changeit@127.0.0.1:1113'
})
await es.connect()


const eventA = new Event('EventA',{
  some: 'string data',
  num : 1
})
await es.atStream('mystream').append(eventA)

const eventB = new Event('EventB',{
  text: 'other string',
  count : 2
})

eventB.correlationId = eventA.id
await es.atStream('mystream').append(eventB)

const eventC = new Event('EventC')
const eventD = new Event('EventD')

await es.atStream('mystream').append([eventC, eventD])

const events = await es
      .stream('mystream')
      .walkStreamForward()

for await (const event of events) {
  console.log(event.name)
}

await es.close()

For full documentation please visit: https://sebastianwessel.github.io/eventstore-ts-client/

Building

To build this lib just clone this repo and run:

npm install
npm run build

Maybe you need to change file attributes of scripts inside of scripts/ folder to be executable

Test lib

eventstore-ts-client tests are heavily based on integration tests.

Test are running against a 3 node eventstore cluster which will configured and filled with some test data and settings.
You will need to have docker installed on your machine to be able to run tests.
The setup contains a script which does all stuff for you - just type:

npm run test

Running tests will also generate some code coverage report to be used in tools like sonarqube

ToDo

  • catch-up subscription
  • ACL handling
  • code review and cleanup
  • improve tests and documentation

Apache 2.0 License

see LICENSE