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

@vidaxl/status-gatherer

v2.0.2

Published

@vidaxl/status-gatherer

Downloads

14

Readme

Status Gatherer

Summary

This is an private npm module that gather's statuses of services that are dependencies of service, where it used.

Usage

  • Install package npm i -S @vidaxl/status-gatherer
  • Use it for status route
const { StatusGatherer, strategies, enums } = require('@vidaxl/status-gatherer');

const {
	CouchbaseStrategy,
	ElasticsearchStrategy,
	HttpStrategy,
	MongoStrategy,
	MysqlStrategy,
	RedisStrategy,
	SolrStrategy,
} = strategies;

const deps = [
	new HttpStrategy('some-service', {
		url: 'http://0.0.0.0:3000/status',
	}),
	new ElasticsearchStrategy('elasticsearch', {
		node: ['http://0.0.0.0:9200'],
	}),
	new CouchbaseStrategy('some-couchbase', {
		host: '0.0.0.0',
		port: 3000,
		username: 'test',
		password: 'test',
	}),
	new MongoStrategy('some-mongodb-1', {
		url: 'mongodb://test:[email protected]:27017,0.0.0.1:27017/dbname',
	}),
	new MongoStrategy('some-mongodb-2', {
		host: [
			'0.0.0.0',
			'0.0.0.1'
		],
		port: 27017,
		username: 'test',
		password: 'test',
        dbName: 'dbname',
	}),
	new MysqlStrategy('some-mysql', {
		host: '0.0.0.0',
		port: 3306,
		user: 'test',
		password: 'test',
		database: 'database',
	}),
	new RedisStrategy('some-redis', {
		host : '0.0.0.0',
		port : 6379
	}),
	new SolrStrategy('some-solr', {
		host: '0.0.0.0',
		port: 8983,
		core: 'test',
	})
];

async function statusRouteHandler(req, res, next) {
    if (!req.query.hasOwnProperty('verbose')) {
        res.json(200, {
            status: enums.statuses.OK,
        });
        return next();
    }

	const gatherer = new StatusGatherer(deps, {
	    simpleMode: false,  // true by default
	});
	const result = await gatherer.getStatus();

    res.json(200, result);
    return next();
}

Status Gatherer API

  • Class StatusGatherer
    • constructor(strategiesArray, options) - Create a instance of class StatusGatherer.
      • strategiesArray type: Array - An array of strategies.
      • options type: Object - A configuration object for StatusGatherer. It has next options:
        • simpleMode type: Boolean - If false then .getStatus() result will contain full responses for all strategies. By default this option is true.
    • getStatus() - StatusGatherer instance method. Goes though all passed strategies and returns and result when all strategies checks is finished. When simpleMode: true - status objects will contain only name and status fields. Result object contains next fields:
{ 
  name: 'some-name-service', // name key from package.json of service where this module is used
  version: '1.0.0', // version key from package.json of service where this module is used
  description: '', // description key from package.json of service where this module is used
  dependencies: [{ // array with statuses for each passed strategy
    type: 'HTTP', // type of connection to some-service
    name: 'some-service',
    elapsedTime: 100, // time spent connecting to the service
    status: 'OK', // status of some-service, can be 'FAIL'
    serviceResponse: {}, // full response from service
  }],
  status: 'OK', // status of some-name-service
  timestamp: 1577098534797,
  date: "2019-12-23T10:55:46.959Z",
}

Status Strategies

This npm module provides few predefined strategies:

  • CouchbaseStrategy - configuration object: { host, port, username, password }
  • ElasticsearchStrategy - configuration object: { node, maxRetries, pingTimeout }
  • HttpStrategy - configuration object: { url }
  • MongoStrategy - configuration object: { url } OR { username, password, port, host }
  • MysqlStrategy - configuration object: { host, port, user, password, database }
  • RedisStrategy - configuration object: { host, port, password }
  • SolrStrategy - configuration object: { host, port, core, path, secure }

All of them extends from BaseStrategy, so you can create custom strategy based on your own requirements.