Não pode escolher mais do que 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
Nicolas Dextraze c67d0d25a2
Merge pull request #102 from PrestaShopCorp/fixShuffle
há 1 ano
.idea Update dev dependencies há 2 anos
samples Removed some console há 2 anos
src refactor: delete unused code há 1 ano
test fix(shuffle): fix shuffle methode for array with length <= 1 há 1 ano
tools Fix issue with fake-server há 3 anos
.gitignore 18 - Changing all hostname to host, fixing some async issues in tests há 4 anos
LICENSE Initial commit há 5 anos
README.md relese version to 0.2.17 há 1 ano
Vagrantfile 18 - Changing all hostname to host, fixing some async issues in tests há 4 anos
docker-compose-cluster.yaml feat(cluster): create way to test single/gossip/cluster há 1 ano
docker-compose-single.yaml feat(cluster): create way to test single/gossip/cluster há 1 ano
index.d.ts feat(cluster): rewrite cluster discovering há 1 ano
index.js Rename project to node-eventstore-client há 4 anos
package-lock.json feat(cluster): create way to test single/gossip/cluster há 1 ano
package.json relese version to 0.2.17 há 1 ano
webpack.config.js Update dev dependencies há 2 anos
yarn.lock Attempt at fixing Typescript dependencies issues há 2 anos

README.md

node-eventstore-client

A port of the EventStore .Net ClientAPI to Node.js

Learning

If you want to learn more about EventSourcing/CQRS/EventModeling, you can join the virtual workshop offered by my employer Adaptech Group, see info at https://www.adaptechgroup.com/virtual-workshop/.

Status

Missing features:

  • Set system settings

Areas to improve

  • Errors
    • Use codes or types to differentiate between errors
  • Performance
    • Performance hasn’t been tested yet
  • Tests
    • Can always do with more tests

Getting started

Install using npm install node-eventstore-client

Dependencies

Install and run an Eventstore on localhost

See https://eventstore.org/docs/introduction/4.1.0/

Note: If you are using a version of EventStore prior to 3.9.4, you need to use version 0.1.x of this package npm install node-eventstore-client@^0.1.

API Documentation

Offline

The offline documentation can be found in the module folder ./node_modules/node-eventstore-client/docs.

Online

The online documentation can be found at https://dev.nicdex.com/node-eventstore-client/docs/

Example: Storing an event

Save to app.js:

var esClient = require('node-eventstore-client');
var uuid = require('uuid');

var streamName = "testStream";
/* 
  Connecting to a single node using "tcp://localhost:1113"
  - to connect to a cluster via dns discovery use "discover://my.host:2113"
  - to connect to a cluster via gossip seeds use 
  [
    new esClient.GossipSeed({host: '192.168.1.10', port: 2113}), 
    new esClient.GossipSeed({host: '192.168.1.11', port: 2113}), 
    new esClient.GossipSeed({host: '192.168.1.12', port: 2113})
  ]
*/
var connSettings = {};  // Use defaults
var esConnection = esClient.createConnection(connSettings, "tcp://localhost:1113");
esConnection.connect();
esConnection.once('connected', function (tcpEndPoint) {
    console.log('Connected to eventstore at ' + tcpEndPoint.host + ":" + tcpEndPoint.port);
});

var eventId = uuid.v4();
var eventData = {
    a : Math.random(), 
    b: uuid.v4()
};
var event = esClient.createJsonEventData(eventId, eventData, null, 'testEvent');
console.log("Appending...");
esConnection.appendToStream(streamName, esClient.expectedVersion.any, event)
    .then(function(result) {
        console.log("Stored event:", eventId);
        console.log("Look for it at: http://localhost:2113/web/index.html#/streams/testStream");
        esConnection.close();
    })
    .catch(function(err) {
        console.log(err);
    });

Run:

npm install uuid
npm install node-eventstore-client
node app.js

Example: Subscribing to events

cd samples

To subscribe to all events from now on (includes example of a filter which ignores events which we aren’t interested in):

node subscribe-all-events.js

To catch up on all events ever and subscribe to all new ones from now on:

node subscribe-catchup-all-events.js

To generate a test event, open a separate console and run:

node store-event.js

Running the tests

Local testing

To run the tests it is recommended that you use an in-memory instance of the eventstore so you don’t pollute your dev instance.

EventStore.ClusterNode.exe --run-projections=all --memdb –certificate-file=yourcert.pfx
or
./run-node.sh --run-projections=all --memdb –certificate-file=yourcert.p12

You can also use docker-compose :

# start the single node cluster
npm run compose:single:start
# if you want to wait for the cluster to be available
npm run compose:wait
# run the tests
npm run test
# to cleanup (stop containres, delete volumes)
npm run compose:single:stop

For SSL setup see:

https://eventstore.org/docs/server/setting_up_ssl/
or
https://eventstore.org/docs/server/setting_up_ssl_linux/

To execute the tests suites simply run

npm test

Isolated environment

To be able to run the tests for different connection types (tcp, gossip, cluster) docker-compose files are available to setup the environment and run the tests.

Prerequisites

  • docker
  • docker-compose

Run

To execute the tests suites for single node cluster (tcp connection) simply run

npm run test:single

To execute the tests suites for multiple nodes cluster (gossip connection) simply run

npm run test:gossip

To execute the tests suites for multiple nodes cluster (dns discovery connection) simply run

npm run test:cluster

Porting .Net Task to Node.js

Any async commands returns a Promise object in replacement of .Net Task.

License

Ported code is released under the MIT license, see LICENSE.

Original code is released under the EventStore license and can be found at https://github.com/eventstore/eventstore.