express-status-validate
TypeScript icon, indicating that this package has built-in type declarations

2.1.1 • Public • Published
author shawshankkumar author shawshankkumar author shawshankkumar

A dead simple npm library to validate express.js response status codes.

Inspiration for this package!

  1. To learn how to make packages 😉
  2. I spent around 40-50 minutes debugging why SRMKZILLA's backend kept crashing. Found out someone passed the mongo error codes(single digit) to express and viola.
  3. Bun v1 came out and I decided to ditch pnpm and node.

What does it do?

It does what a middleware should, it sits quietly and on a day to day basis, you never notice it. Express is great, but it can be better. In TypeScript, passing a wrong status code is not that easy. But in JavaScript? One could pass a tank and the code would run (Thanks JS :) ). This package safeguards your app from throwing unwanted errors or crashing. What can you pass?

  1. If you pass a valid status code like 200, it works. It doesn't change anything in the original status code.
  2. BUT, if you pass "200" or "200OK", it converts it to 200 and sends it. But what if you pass something like 799 (invalid status code)? In that case a default status code is set and sent.
  3. And you guesses correct, you can easily set the default status code you want.

How to use it in your JS/TS project?

  1. CD into the root folder of your project!
  2. Install express-status-validate using bun (bun is cool, yarn is boring and npm is npm.) Pnpm is also cool btw :p
bun add express-status-validate

or

pnpm i express-status-validate

or

npm i express-status-validate

or

yarn add express-status-validate
  1. Open the entry point of your express app.

Our express application before adding the package:

const express = require("express");

const app = express();

app.get("/healthcheck", (req, res) => {
  //This should throw an error and crash.
  res.status(200123).send("OK");
});

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

After adding the express-status-validate :

const express = require("express");
const expressStatusValidate = require("express-status-validate");

const app = express();

// 500 is optional, you can pass any valid http status code
app.use(expressStatusValidate(500));

app.get("/healthcheck", (req, res) => {
  //This should throw an error and crash an application but it doesn't anymore.
  res.status(200123).send("OK");
});

app.post("/healthcheck", (req, res) => {
  //This should throw an error and crash an application but it doesn't anymore.
  res.status("200abs").send("OK");
});

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

Checkout this replit example

NOTE: app.use(expressStatusValidate(500)) must be on top to work as desired.

Examples:

We are in the process of adding more examples and testing this library to make sure it works smoothly everywhere. Currently we have the following examples (Shoutout to Harshit Singh, my roommate :p for being the first user of this library) :

  1. JavaScript Example
  2. TypeScript Example

License 📜

express-status-validate is available under the ISC license. See the LICENSE file for more info.

Contributing 🤝

Please read Contributing.md for details on our code of conduct, and the process for submitting pull requests to us.

How to contribute to this project:

  1. Fork it 😜 and make sure you have Node(>14) installed!
  2. Install the pnpm using
npm i -g pnpm
  1. Install the dependencies
cd package && pnpm i
  1. Do you magic (We recommend that you stick to the code and not configuration files unless there is a specific reason to do so)🪄
  2. Build the TypeScript
pnpm run build
  1. Run npm link and move to the examples and run npm link and test it! Refer to this!
  2. Make sure you run all the tests before making a pull request!
  3. Make a pull request, sit back and enjoy while we review your changes.

Example without express-status-validate:

image

RangeError [ERR_HTTP_INVALID_STATUS_CODE]: Invalid status code: { a: 's' }
    at new NodeError (node:internal/errors:399:5)
    at ServerResponse.writeHead (node:_http_server:344:11)
    at ServerResponse._implicitHeader (node:_http_server:335:8)
    at write_ (node:_http_outgoing:908:9)
    at ServerResponse.end (node:_http_outgoing:1016:5)

Example with express-status-validate enabled:

image

Readme

Keywords

Package Sidebar

Install

npm i express-status-validate

Weekly Downloads

1

Version

2.1.1

License

ISC

Unpacked Size

23.8 kB

Total Files

7

Last publish

Collaborators

  • shawshankkumar