Research
Security News
Quasar RAT Disguised as an npm Package for Detecting Vulnerabilities in Ethereum Smart Contracts
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
readiness-manager
Advanced tools
Controlling node application readiness state.
In many cases node application depends on external resources that should be available before truly starting up. This manager gives you the ability to orchestrate several actions independently. It is waiting for their completion to defines your app readiness state.
This comes truly handy when your application runs inside Kubernetes which can check its readiness state.
Register at any point an async action with a declarative alias and run them once your app starts.
// app.index.js
const axios = require('axios');
const ReadinessManager = require('readiness-manager');
ReadinessManager.register('vendors', () => axios.get('https://www.cdn.vendors.com'));
ReadinessManager.register('translations', () => axios.get('https://www.translations.com'));
// Starts all registered actions
ReadinessManager.run();
// Will be triggered once all registered actions are successfully resolved.
ReadinessManager.onReady(() => console.log('App is ready! \o/'));
This will allow you to set up an health check route, checking if you app readiness state as following:
// routes.health.js
if (ReadinessManager.ready) {
res.status(200).end(`App is ready and running well`);
return;
} else {
res.status(503).end('App is not ready');
}
Returns true
if all the registered actions has been ran without exceptions/rejections.
Registers a given name and action under ReadinessManager
, registered actions will be observed once ran in order to determine the process readiness state.
type ReadyAction = () => void|Promise<void>;
Runs all registered actions, once all actions are resolved successfully your'e app state will be determined as ready
.
Registers a given callback on the global manager ready event.
type ReadyCallback = () => void;
type ReadyCallback = () => void;
Registers a given callback on a specific action completion event.
interface ActionExecutionError extends Error {
name: string;
stack: string;
attempt: number;
failReason: string;
}
type ActionRetry = () => Promise<void>;
type ActionErrorHandler = (error: ActionExecutionError, retry: ActionRetry) => void;
Registers given error handler under the ReadinessManager
. Any error that will be thrown from execution one of the registered actions will trigger this handler.
You can use the
retry
method provided to your error handler according to any failure strategy you like.
Returns a status report for current registered actions.
type ActionsStatus = {
[status in ActionStatus]: string[];
};
type ActionStatus = 'not_started' | 'pending' | 'resolved' | 'rejected';
You can register an error handler over the manager, which will be triggered from any thrown error from it's registered actions.
Once an error rises, the manager will trigger the error handler with both occurred error and a retry
method used to re-execute the failing action if desired.
The default error handle will just log errors to console and thus strongly recommended to register your'e own handler.
// app.index.js
const ReadinessManager = require('readiness-manager');
let count = 0;
const unstableAction = () => new Promise((resolve, reject) => {
count++;
if (counter <= 1) { return reject(new Error('Not yet')); }
resolve('Ok');
});
ReadinessManager.register('action', unstableAction);
ReadinessManager.onError((error, retry) => {
console.log(error);
if (error.attempt <= 1) retry();
});
ReadinessManager.run();
1.1.4 (7 April 2022)
forEach
.FAQs
👨💼 Define when your app is ready
The npm package readiness-manager receives a total of 2,187 weekly downloads. As such, readiness-manager popularity was classified as popular.
We found that readiness-manager 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 researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
Security News
Research
A supply chain attack on Rspack's npm packages injected cryptomining malware, potentially impacting thousands of developers.
Research
Security News
Socket researchers discovered a malware campaign on npm delivering the Skuld infostealer via typosquatted packages, exposing sensitive data.