Research
Security News
Malicious npm Packages Inject SSH Backdoors via Typosquatted Libraries
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
response-catcher
Advanced tools
Easy async error handling in Express
npm install --save response-catcher
response-catcher
is an extremely flexible .catch()
error handler for promise-based express request flows.
It should be used where you would have multiple .then()
operations in a request and need to be able to throw and handle many kinds of errors.
By default it attaches itself to res.error()
(though this can be configured).
const express = require("express");
const app = express();
const responseCatcher = require("response-catcher");
app.use(responseCatcher());
app.get("/", (req, res) => {
findUser()
.then(checkUser)
.then(andThenThisThing)
.catch(res.error());
async function findUser() {
let user = await db.users.find(req.body.id);
if (!user) throw 404;
return user;
}
async function checkUser(user) {
if (!user.isAuthenticated) throw [401, "User is not authenticated"];
else if (user.alreadyExists) throw ["User already exists", 409];
else if (user.username.length > 8) throw "Username is too long";
else if (serverErrorSomewhere) throw { status: 500, body: "Sorry, we had an error somewhere!" };
}
async function andThenThisThing() {
// ...
}
});
On instantiation of the middleware function, you can set the following properties (with the listed values being the defaults):
{
name: "error", // The name of the function to use: "res.error()"
status: 400, // The default response status to use
logger: console.log, // The logging function to use for errors
logging: false // Whether or not to log errors
}
To use a custom logger that isn't console.log
, supply it to the logger
key. This still won't enable logging, which to do set logging: true
.
You can supply as many arguments as you like. Any string you provide will interpreted as the name
, any number you use will be interpreted as the status
, and any object you use will have the named properties.
const responseCatcher = require("response-catcher");
app.use(responseCatcher()); // Use the default values
app.use(responseCatcher(405)); // Change the default status to 405
app.use(responseCatcher({ logger: console.log })); // Enable logging
app.use(responseCatcher("handleError", { status: 500 })); // Change both the default function name and the status
Coming soon...
Coming soon...
FAQs
Easy async error handling in Express
We found that response-catcher demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.