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

byespam

v1.0.0-beta

Published

Protect your API using a filter for all your users' requests.

Downloads

5

Readme

Byespam

With byespam you can protect your websites and API with a high level spam protection.

Installation

  • npm i byespam

Usage

Before see it in action, you have to learn about options and syntax.

Basic sketch

const byespam = require('byespam')([
	/* all filters you want to apply */	
]);

Inside of the parameter

After having required the package, you have to declare what protections you want to apply, and you can do it by adding them inside of the module constructor parameter. This argument must be an array, since you can actually put how many protections you want.

Example of a protection

{ "max_requests": 5, "protection_timeout": 10000, "effect": "Nope", "path": "/test" }

With this, you are telling library to create a protection on path '/test', saying that user can take at mos 5 requests in 10,000ms (10 seconds)

max_requests

This variable is used to set how many requests the user could do inside of the timeout range

protection_timeout

After how many times can the user continue to making requests after he stops?

effect

This is the consequence that the user sees if the request is blocked.

It can be of three types:

  • object
  • function
  • string

If you use object type, the header 'Content-Type' will be changes into 'application/json' and the object will be sended as a string to the user,

If you use function type, the function will be called with 3 arguments passed in respectively: request, response and IP Address

How to apply the protected routes

It's easy, just do

app.use(...byespam.all);

After declaring byespam and app;

Final & examples

If the user's request go fine, you can set app a routes for this, example:

const byespam = require('byespam')( [  { path: '/', effect: (req, res) => res.render('429'), max_requests: 1, protection_timeout: 4000 }  ] );

app.use(...byespam.all);

app.get('/', (req, res) => res.send('Yep!'));

Obviously you can use the "effect" function to do this as well, but for making the sketch more tidy, you can use routes.