Security News
Research
Data Theft Repackaged: A Case Study in Malicious Wrapper Packages on npm
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
redis-errors
Advanced tools
The redis-errors npm package provides a set of custom error classes for handling Redis-related errors in a more structured and meaningful way. It helps developers to catch and handle specific Redis errors more effectively.
Custom Error Classes
The package provides custom error classes like ReplyError, AbortError, ParserError, and AggregateError. These classes help in identifying and handling specific types of Redis errors.
const { ReplyError, AbortError, ParserError, AggregateError } = require('redis-errors');
try {
// Simulate a Redis operation that throws an error
throw new ReplyError('This is a reply error');
} catch (error) {
if (error instanceof ReplyError) {
console.error('Caught a ReplyError:', error.message);
}
}
Error Handling
The package allows for structured error handling by checking the instance of the error and responding accordingly. This makes it easier to debug and manage Redis-related errors.
const { ReplyError, AbortError, ParserError, AggregateError } = require('redis-errors');
function handleError(error) {
if (error instanceof ReplyError) {
console.error('ReplyError:', error.message);
} else if (error instanceof AbortError) {
console.error('AbortError:', error.message);
} else if (error instanceof ParserError) {
console.error('ParserError:', error.message);
} else if (error instanceof AggregateError) {
console.error('AggregateError:', error.message);
} else {
console.error('Unknown error:', error.message);
}
}
try {
// Simulate a Redis operation that throws an error
throw new AbortError('This is an abort error');
} catch (error) {
handleError(error);
}
ioredis is a robust, full-featured Redis client for Node.js. It provides built-in error handling for various Redis errors, but it does not offer the same level of custom error classes as redis-errors. Instead, it focuses on providing a comprehensive set of features for interacting with Redis.
node-redis is another popular Redis client for Node.js. It includes basic error handling capabilities but lacks the specialized custom error classes provided by redis-errors. It is designed to be simple and easy to use for basic Redis operations.
All error classes used in node_redis from v.3.0.0 are in here. They can be required as needed.
Install with NPM:
npm install redis-errors
const { ReplyError, InterruptError } = require('redis-errors');
// Using async await
try {
await client.set('foo') // Missing value
} catch (err) {
if (err instanceof InterruptError) {
console.error('Command might have been processed')
}
if (err instanceof ReplyError) {
// ...
}
throw err
}
// Using callbacks
client.set('foo', (err, res) => {
if (err) {
if (err instanceof InterruptError) {
// ...
}
}
})
All errors returned by NodeRedis use own Error classes. You can distinguish different errors easily by checking for these classes.
To know what caused the error they might contain properties to know in more detail what happened.
Each error contains a message
, a name
and a stack
property. Please be aware
that the stack might not be useful due to the async nature and is in those cases
therefore limited to two frames.
There might be more not yet documented properties as well. Please feel free to open a pull request to document those as well.
Properties
:
Properties depend on the individual error.
All errors returned by NodeRedis (client) are RedisError
s.
Subclass of Error
Properties
:
args
: The arguments passed to the command.command
: The command name.code
: The Redis
error code. Redis itself uses some internal error codes.All errors returned by Redis itself (server) will be a ReplyError
.
Subclass of RedisError
Properties
:
buffer
: The raw buffer input stringified.offset
: The character count where the parsing error occurred.Parsing errors are returned as ParserError
.
Subclass of RedisError
Note: If you encounter one of these please report that error including the
attached offset
and buffer
properties!
Properties
:
args
: The arguments passed to the command.command
: The command name.If a command was not yet executed but rejected, it'll return a AbortError
.
Subclass of RedisError
Properties
:
args
: The arguments passed to the command.command
: The command name.origin
: The original error that caused the interruptAll executed commands that could not fulfill (e.g. network drop while
executing) return a InterruptError
.
Subclass of AbortError
Note: Interrupt errors can happen for multiple reasons that are out of the
scope of NodeRedis itself. There is nothing that can be done on library side
to prevent those.
FAQs
Error classes used in node_redis
The npm package redis-errors receives a total of 5,714,409 weekly downloads. As such, redis-errors popularity was classified as popular.
We found that redis-errors 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.
Security News
Research
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
Research
Security News
Attackers used a malicious npm package typosquatting a popular ESLint plugin to steal sensitive data, execute commands, and exploit developer systems.
Security News
The Ultralytics' PyPI Package was compromised four times in one weekend through GitHub Actions cache poisoning and failure to rotate previously compromised API tokens.