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 🙏

© 2026 – Pkg Stats / Ryan Hefner

indian-railway-station-codes

v1.0.1

Published

High-performance, zero-dependency bi-directional Indian Railway station code searching library

Downloads

305

Readme

indian-railway-station-codes

A high-performance, zero-dependency, and strictly functional TypeScript library for bi-directional Indian Railway station code searching (Name ↔ Code).

Contains 13,220 unique stations extracted directly from the official Indian Railways database (rct.indianrail.gov.in), completely frozen and optimized for fast O(1) matching.


Features

  • 🚀 Zero Dependencies: Pure code with no runtime overhead.
  • O(1) Performance: Uses pre-computed frozen Maps for exact code/name lookups.
  • 🔍 Substring Search: Supports case-insensitive substring matching for names and codes.
  • 🧊 Immutability: All returned structures and internal databases are deeply frozen (Object.freeze).
  • 📦 Dual Bundle: Ships with both ESM (import) and CommonJS (require) builds out of the box.
  • 🛡️ Fully Typed: Written natively in TypeScript.

Installation

npm install indian-railway-station-codes

Quick Start

ESM / TypeScript

import { 
  getStationByCode, 
  getStationByName, 
  searchStations 
} from "indian-railway-station-codes";

// Exact Lookup by Code (O(1) - Case Insensitive)
const kalyan = getStationByCode("KYN");
// => { name: "KALYAN JN.", code: "KYN" }

// Exact Lookup by Name (O(1) - Case Insensitive)
const ndls = getStationByName("NEW DELHI");
// => { name: "NEW DELHI", code: "NDLS" }

// Substring Search on both name and code (Case Insensitive)
const results = searchStations("delhi");
// => [
//      { name: "DELHI", code: "DLI" },
//      { name: "NEW DELHI", code: "NDLS" },
//      ...
//    ]

CommonJS (Node.js)

const { getStationByCode, searchStations } = require("indian-railway-station-codes");

console.log(getStationByCode("KYN"));
// => { name: "KALYAN JN.", code: "KYN" }

API Reference

getStationByCode(code: string): Station | undefined

Performs an exact, case-insensitive O(1) map lookup. Returns the matching station object or undefined.

getStationByName(name: string): Station | undefined

Performs an exact, case-insensitive O(1) map lookup. Returns the matching station object or undefined.

searchStations(query: string): readonly Station[]

Performs a case-insensitive substring search matching both station codes and names. Returns a frozen array of matches.

searchByCode(codeQuery: string): readonly Station[]

Performs a case-insensitive substring search matching only station codes. Returns a frozen array of matches.

searchByName(nameQuery: string): readonly Station[]

Performs a case-insensitive substring search matching only station names. Returns a frozen array of matches.

stations: readonly Station[]

The raw frozen database containing all 13,220+ stations.


Data Update & Build

The library includes an auto-ingestion pipeline script to pull the latest listings from the official server and compile them into static code assets.

# Ingest data & compile CJS/ESM/DTS targets
npm run build

# Run unit tests
npm run test

License

MIT