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 🙏

© 2025 – Pkg Stats / Ryan Hefner

ramyam

v2.0.15

Published

Common middleware, logger, and types for Prasad DYS microservices

Readme

ramyam

Overview

ramyam is a collection of common middleware, logging utilities, and TypeScript types for Prasad DYS microservices. It provides essential tools to help streamline the development of microservices by offering reusable components, such as logging and middleware, out of the box.

This package is designed to be used in any Node.js-based microservices architecture and can be easily extended or customized.

Features

  • Middleware: A set of common middleware for request handling.
  • Logging: Uses Winston for logging with customizable log levels.
  • Types: Provides TypeScript types to ensure type safety across your microservices.
  • JWT Authentication: Utility functions to work with JSON Web Tokens (JWT).
  • GeoIP Lookup: Integrates with geoip-lite for IP geolocation.

Installation

To install the package, use npm:

bash
npm install ramyam

Example Usage Importing and Using Middleware

import { loggerMiddleware } from 'ramyam';

import express from 'express';
const app = express();

const publicRoutes = [
  "/health"
];
app.use(unifiedMiddleware({ publicRoutes }));

app.get('/', (req, res) => {
  res.send('Hello World');
});

app.listen(3000, () => {
  console.log('Server running on port 3000');
});

Example: Logging You can use the logger provided by the package in any part of your application:

import { logger } from 'ramyam';

logger.info('This is an info log');
logger.error('This is an error log');

Example: JWT Authentication Use the utility to verify a JWT token:

import { verifyToken } from 'ramyam';

const token = 'your_jwt_token_here';

verifyToken(token)
  .then(decoded => {
    console.log('Token is valid', decoded);
  })
  .catch(error => {
    console.error('Token validation failed', error);
  });

Example: GeoIP Lookup You can also use the geoip-lite utility to get location information based on an IP address:

import { getGeoIPInfo } from 'ramyam';

const ip = '8.8.8.8';

const geoInfo = getGeoIPInfo(ip);
console.log(geoInfo);

API Documentation loggerMiddleware

Description: A middleware that logs incoming HTTP requests.

Usage: Simply add this middleware to your Express app to log request details.

logger

Description: A logger based on Winston .

Methods:

logger.info(message: string)

logger.error(message: string)

logger.warn(message: string)

verifyToken(token: string)

Description: Verifies a JWT token and returns the decoded information if valid.

Parameters:

token: string – The JWT token to verify.

Returns: A promise that resolves with the decoded token if valid, or rejects with an error if invalid.

getGeoIPInfo(ip: string)

Description: Fetches geolocation information for an IP address using the geoip-lite library.

Parameters:

ip: string – The IP address to lookup.

Returns: A geolocation object containing details like country, city, and region.

Development Building the Package

To build the package locally, run the following command:

npm run build