eventstore-ts-client
Version:
Eventstore node.js javascript client library written in typescript with ES6 async/await syntax
125 lines (87 loc) • 4.68 kB
Markdown
# Eventstore typescript / ES6 javascript client lib
[](https://opensource.org/licenses/Apache-2.0)
[](https://travis-ci.com/sebastianwessel/eventstore-ts-client)
[](https://sonarcloud.io/dashboard?id=sebastianwessel_eventstore-ts-client)
[](https://sonarcloud.io/dashboard?id=sebastianwessel_eventstore-ts-client)
[](https://sonarcloud.io/dashboard?id=sebastianwessel_eventstore-ts-client)
[](https://sonarcloud.io/dashboard?id=sebastianwessel_eventstore-ts-client)
[](https://sonarcloud.io/dashboard?id=sebastianwessel_eventstore-ts-client)
[](https://sonarcloud.io/dashboard?id=sebastianwessel_eventstore-ts-client)
[](https://sonarcloud.io/dashboard?id=sebastianwessel_eventstore-ts-client)
[](https://sebastianwessel.github.io/eventstore-ts-client)
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/](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:
```bash
npm i --save eventstore-ts-client
```
## Quick-Start
```javascript
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/](https://sebastianwessel.github.io/eventstore-ts-client/)**
## Building
To build this lib just clone this repo and run:
```bash
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:
```bash
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](LICENSE)