Security News
Supply Chain Attack Detected in Solana's web3.js Library
A supply chain attack has been detected in versions 1.95.6 and 1.95.7 of the popular @solana/web3.js library.
abort-controller-x-reactive-store
Advanced tools
Reactive store primitive and helpers.
This is a companion package of
abort-controller-x
.
yarn add abort-controller-x-reactive-store
Store
type Store<T> = {
value: T;
wait(signal: AbortSignal, condition: (value: T) => boolean): Promise<T>;
};
type ReadonlyStore<T> = Readonly<Store<T>>;
A reactive store (a.k.a. reactive variable) holds a value that can be read and updated, and can also be observed by means of waiting for a condition to be met.
The wait
method returns a promise that resolves when the condition is met, or
rejects with an AbortError
if the signal is aborted.
deriveStore
function deriveStore<T, R>(
parentStore: ReadonlyStore<T>,
transform: (value: T) => R,
): Store<R>;
Derives a new store from a parent store by applying a transformation function to its value.
watchStore
async function watchStore<T>(
signal: AbortSignal,
store: ReadonlyStore<T>,
): AsyncIterable<T>;
Allows to react on changes of a store value using async iteration, e.g.:
for await (const value of watchStore(signal, store)) {
console.log(value);
}
Note that it is not guaranteed that every assignment to the store value will be logged. For example, in case of multiple synchronous assignments, some of them may be skipped due to the async nature of promises. However, it is always guaranteed that the last value will be logged.
You can use the following hook to bind to a store in a React component:
import {run} from 'abort-controller-x';
import {ReadonlyStore, watchStore} from 'abort-controller-x-reactive-store';
import {useEffect, useState} from 'react';
function useStoreValue<T>(store: ReadonlyStore<T>): T {
const [value, setValue] = useState(store.value);
useEffect(() => {
const stop = run(async signal => {
for await (const value of watchStore(signal, store)) {
setState(value);
}
});
return () => {
stop();
};
}, [store]);
return value;
}
FAQs
Reactive store primitive and helpers
We found that abort-controller-x-reactive-store demonstrated a healthy version release cadence and project activity because the last version was released less than 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
A supply chain attack has been detected in versions 1.95.6 and 1.95.7 of the popular @solana/web3.js library.
Research
Security News
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
Security News
Research
Socket researchers have discovered malicious npm packages targeting crypto developers, stealing credentials and wallet data using spyware delivered through typosquats of popular cryptographic libraries.