Security News
PyPI’s New Archival Feature Closes a Major Security Gap
PyPI now allows maintainers to archive projects, improving security and helping users make informed decisions about their dependencies.
@r/middleware
Advanced tools
Helpful Redux middleware
Install via npm.
npm install -S @r/middleware
@r/middleware exports two middlewares: Thunker
and PromiseWell
;
Thunker expands on a traditional Redux thunk utility. Namely, it requires that the thunking action returns a promise. As a result, it becomes easier to know when the thunked actions have completed: when the promise resolves, all thunked actions have fired.
// Initializing a Thunker
import Thunker from '@r/middleware/Thunker';
const thunk = Thunker.create();
// in Redux
applyMiddleware(..., thunk, ...);
To simplify using Thunker, it is highly recommended es7 style async functions are used.
// example thunked action
const getData = () => async (dispatch, getState, utils) => {
// immediately dispatch synchronous actions as normal
dispatch(/* sync action */);
// wait for data if need be
const { foo, bar } = await asyncFunctionCall();
// continue to dispatch as normal
dispatch(/* another action */);
};
Thunker performs an additional task. Many times, it becomes necessary to wait for some piece of state to update, or to wait for a particular action to be dispatched before another action is dispatched. Thunker solves this by surfacing two utility methods: waitForState
and waitForAction
. Both return a promise that can be await
-ed on.
waitForState(stateFn: Function, cb: Function [, stateFailedFn: Function]): Promise
stateFn(state: Object): Boolean
A function that creates the condition that must be met for the callback to fire. Receives a copy of state as its argument. Expected to return a truthy/falsey value.
cb(state: Object): void
A function that is called when the conditional is met. Receives a copy of state as its argument.
stateFailedFn(state: Object): void
(OPTIONAL)
A function that is called the first time the conditional is not met. Only fires once. Receives a copy of state as its argument.
waitForAction(actionFn: Function, cb: Function): Promise
actionFn: Function(action: Object)
A function that receives a Redux action, represents the condition that must be met for the callback to fire. After waitForAction
is invoked, if action
is dispatched, the callback will fire.
cb(state: Object): void
A function that is called when the action
is dispatched. Receives a copy of state as its argument.
The PromiseWell merely collects promises that dispatched by other middleware. It should be one of the last middleware invoked.
// Initializing a PromiseWell
import PromiseWell from '@r/middleware/PromiseWell';
const well = PromiseWell.create();
// in Redux
applyMiddleware(..., well.middleware, ...);
// on the server side
await well.onComplete();
In addition to capturing promises, the PromiseWell lets you query to check if all the captured promises have been completed through the use of onComplete
.
FAQs
Middleware for Redux
The npm package @r/middleware receives a total of 6 weekly downloads. As such, @r/middleware popularity was classified as not popular.
We found that @r/middleware demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 4 open source maintainers 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
PyPI now allows maintainers to archive projects, improving security and helping users make informed decisions about their dependencies.
Research
Security News
Malicious npm package postcss-optimizer delivers BeaverTail malware, targeting developer systems; similarities to past campaigns suggest a North Korean connection.
Security News
CISA's KEV data is now on GitHub, offering easier access, API integration, commit history tracking, and automated updates for security teams and researchers.