npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

geteventstore-range

v0.1.2

Published

A small geteventstore-promise extension to retrieve events ranges from EventStore

Downloads

4

Readme

geteventstore-range

A small geteventstore-promise extension to retrieve events ranges from EventStore.

Use along with geteventstore-promise to enrich your events queries.

Very useful for snapshots, or when you don't know where your stream end but you know where you want to begin to read. Or vice-versa.

geteventstore-range abstracts the effort to load very long streams by retrieving it in many reasonable chunks (you define the size, that is the number of events to load on every request). It does it thanks to the geteventstore-promise eventEnumerator plus some own logic. It always try to be as lazy as possible about database hits, in an optimistic way.

Installation

At the command-line, install geteventstore-range AND geteventstore-promise:

npm install geteventstore-range geteventstore-promise

Usage

In your Node.js application, inject a EventStore client into the GES Range object:


var eventstore = require('geteventstore-promise');
var EventStoreRange = require('geteventstore-range');

var client = eventstore.tcp({
    hostname: 'localhost',
    port: 1113,
    credentials: {
        username: 'admin',
        password: 'changeit'
    }
});

var esRange = new EventStoreRange(client);

Methods

There is only one method available, with different arguments

getStreamRange

If you want to retrieve from start to a defined event number:


esRange.getStreamRange('MyStreamName', 'start', 42, function(error, response){
  console.log(error, response);
});

If you want to retrieve from a defined event number to the end of the stream:


esRange.getStreamRange('MyStreamName', 42, 'end', function(error, response){
  console.log(error, response);
});

If you just want all the stream:


esRange.getStreamRange('MyStreamName', 'start', 'end', function(error, response){
  console.log(error, response);
});

At the moment there is no option of the range start and end to be both numbers. It wasn't needed when i develop this module, but i may implement it in the future. Or, who knows, you can help me with it!

Range Tolerance

If the range numbers you define are out of the real stream size, the method will not crash or loop forever. It will return de available streams when it is possible, or return an out of range error.

Tests

Some basic tests are implemented, using Mocha. To run them type in your terminal:

EVENTSTORE_HOST="localhost" EVENTSTORE_PORT="1113" EVENTSTORE_USER="admin" EVENTSTORE_PASS="changeit" npm test