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

tidalshield

v1.0.0

Published

Lightweight, context-aware request flow control library for Node.js backends

Readme

flow-guard

flow-guard is a lightweight, context-aware request flow control library for Node.js backends. It goes beyond traditional static rate limiting by introducing smart, adaptive rules that manage API request patterns based on user roles, request dependencies, and real-time server performance.


✨ Key Highlights

  • Role-Based Limits – Different rate limits for guests, registered users, and premium tiers.
  • Request Dependency Chains – Ensure certain API calls only run after prerequisite actions are completed.
  • Adaptive Cooldowns – Dynamically slow down or speed up requests based on CPU/memory usage.
  • Burst Mode – Temporarily allow higher throughput during peak demand, then auto-scale back.
  • Framework Agnostic – Works with Express, Fastify, Koa, or raw Node.js HTTP servers.

🎯 Ideal Use Cases

  • Preventing checkout before cart validation.
  • Protecting expensive database queries during high load.
  • Offering premium users more generous API access.

🚀 Goal

To make backend APIs more resilient, efficient, and developer-friendly by providing a plug-and-play solution for intelligent request flow management.


🧩 Quick Start (Express)

const express = require('express');
const { flowGuard, rules } = require('./index');

const app = express();

const guard = flowGuard([
  rules.roleBasedLimit({
    guest: 5,
    user: 20,
    premium: 100,
    default: 10
  }),
  rules.dependencyCheck(['acceptedTerms', 'verifiedEmail'])
]);

app.use(guard);

app.get('/api/data', (req, res) => {
  res.json({ message: 'Hello from flow-guard protected route' });
});

app.listen(3000);

📦 What’s Included

  • flowGuard(rules) – middleware builder that runs a series of rules and blocks requests that fail.
  • rules – a set of example rule factories (role-based limits, dependency checks) you can extend or replace.

🔧 Extendability

Add your own rules to adapt to your app’s needs (e.g., server load, request patterns, custom user tiers).

const myRule = () => async (req) => {
  // ...check req, server state, etc.
  return { allowed: true };
};

const guard = flowGuard([myRule()]);