
Security News
Deno 2.2 Improves Dependency Management and Expands Node.js Compatibility
Deno 2.2 enhances Node.js compatibility, improves dependency management, adds OpenTelemetry support, and expands linting and task automation for developers.
statetransition-mixin
Advanced tools
mixin to declare state transition methods like start & stop
mixin to declare state transition methods like start & stop
import { StateTransitionMixin, prepareActions } = from 'statetransition-mixin';
const actions = prepareActions({
start: { // declare start() and call _start() internally
stopped: { // can be called within stopped state
target: "running",
during: "starting",
timeout: 10
}
},
stop: { // declare stop() and call _stop() internally
running: {. // can be called when running
target: "stopped",
during: "stopping",
timeout: 5
},
starting: { // or when starting
target: "stopped",
during: "stopping",
timeout: 10
}
}
});
class BaseClass {}
class StatefullClass extends StateTransitionMixin(BaseClass, actions, 'stopped') {
// will be called to go from stopped to running
async _start() {
return new Promise(resolve => setTimeout(() => resolve(), 10));
}
}
let myObject = new StatefullClass();
console.log(myObject.state === 'stopped' ? "is stopped" : "hmm ?")
myObject.start().then( (o) => console.log('started == ${o.state}'));
console.log('starting == ${myObject.state}');
myObject.stop().then( (o) => console.log('stopped == ${o.state}'));
console.log('stopping == ${myObject.state}');
ongoing transition
promise of the ongoing transition
Type: Object
Type: Object
timeout
number in milliseconds the transtion is allowed to takeinitial
Transition to begin withduring
Transition while we are trying to reach the targettarget
Transition rejected
Transition when soemthing goes wrongCompile actions and states
as
Object prepareActions({
start:{
stopped: {
target: 'running',
during: 'starting'
}},
stop: {
running: {
target: 'stopped',
during: 'stopping'
}}});
Returns Array
Extends a class to support state transtions.
Generated mixin class with support of state transtions.
Rejects promise when it is not resolved within given timeout.
Returns Promise
Defines methods to perform the state transitions. States are traversed in the following way:
current -> during -> final
If the step is not in one of the transitions current states and also not already in the transitions final state a rejecting promise will be delivered from the generated function. In the 'during' state a function named '_' + (sample: '_start()') will be called first.
It is expected that this function delivers a promise.
While in a during state the former delivered promise will be delivered again. This enshures that several consequent transitions in a row will be fullfiled by the same promise. There can only be one transition in place at a given point in time.
object
Object target object where we define the methods
actionsAndStates
Object object describing the state transitions
actionsAndStates.0
actionsAndStates.1
Returns void
With npm do:
npm install statetransition-mixin
BSD-2-Clause
FAQs
mixin to declare state transition methods like start & stop
The npm package statetransition-mixin receives a total of 311 weekly downloads. As such, statetransition-mixin popularity was classified as not popular.
We found that statetransition-mixin 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
Deno 2.2 enhances Node.js compatibility, improves dependency management, adds OpenTelemetry support, and expands linting and task automation for developers.
Security News
React's CRA deprecation announcement sparked community criticism over framework recommendations, leading to quick updates acknowledging build tools like Vite as valid alternatives.
Security News
Ransomware payment rates hit an all-time low in 2024 as law enforcement crackdowns, stronger defenses, and shifting policies make attacks riskier and less profitable.