
Security News
Attackers Are Hunting High-Impact Node.js Maintainers in a Coordinated Social Engineering Campaign
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.
@attack-monkey/reactstate
Advanced tools
Simple State Management for React
npm i @attack-monkey/reactstate
See Setup & Typesafety
AddState component.
import { AddState } from 'reactstate.config'
<MyApp>
<AddState id="counter1" init={1}/>
<AddState id="counter2" init={1}/>
</MyApp>
To subscribe to state use fromState. Below we are creating a subscription called 'myComponent', and subscribing to
both counter1 and counter2.
import { fromState } from 'reactstate.config.ts'
export const MyComponent = () =>
fromState(
'myComponent',
['counter1', 'counter2'],
({ counter1, counter2 }) =>
<div>
<h1>{counter1}</h1>
<h1>{counter2}</h1>
</div>
)
... and
import { AddState } from 'reactstate.config'
import { MyComponent } from 'components/MyComponent'
<MyApp>
<AddState id="counter1" init={1}/>
<AddState id="counter2" init={1}/>
<MyComponent />
</MyApp>
Use mutateState to update state at a particular id.
Here we use a reusable increment function to mutate both 'counter1' and 'counter2' based on which button is pushed.
import { fromState, mutateState } from 'reactstate.config'
const increment = (stateKey, currentState) => mutateState(stateKey, currentState + 1)
const MyComponent = () =>
fromState(
'myComponent',
['counter1', 'counter2'],
({ counter1, counter2 }) =>
<div>
<h1>{counter1}</h1>
<h1>{counter2}</h1>
<button onClick={
() => increment('counter1', counter1)
}>Increment counter 1</button>
<button onClick={
() => increment('counter2', counter2)
}>Increment counter 2</button>
</div>
)
reactstate works best with typescript
// reactstate.config.ts
import { reactstate } from 'reactstate/lib'
export interface State {
counter1?: number
counter2?: number
}
interface Subscriptions {
counter1?: {
myComponent?: (state: State['counter1']) => void
}
counter2?: {
myComponent?: (state: State['counter2']) => void
}
}
// bootstrap reactState with State and Subscription info
export const { AddState, mutateState, fromState } = reactstate<State, Subscriptions>()
When you now import AddState, fromState, and mutateStatefrom the above reactstate.config.ts, you'll get code hints and type inference - because reactstate knows the state of your app and what's subscribing to it.
FAQs
Simple State Management for React
The npm package @attack-monkey/reactstate receives a total of 9 weekly downloads. As such, @attack-monkey/reactstate popularity was classified as not popular.
We found that @attack-monkey/reactstate 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
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.