Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/plurid/state-recorder
Record the state of an application and play it back/forward [Desearch Concept]
https://github.com/plurid/state-recorder
record state
Last synced: about 8 hours ago
JSON representation
Record the state of an application and play it back/forward [Desearch Concept]
- Host: GitHub
- URL: https://github.com/plurid/state-recorder
- Owner: plurid
- License: other
- Created: 2019-08-11T07:30:07.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2022-10-02T12:58:21.000Z (about 2 years ago)
- Last Synced: 2024-11-02T13:04:15.127Z (5 days ago)
- Topics: record, state
- Language: TypeScript
- Homepage:
- Size: 692 KB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
State RecorderRecord the state of an application and play it back/forward.
## Install
npm install @plurid/state-recorder
or
yarn add @plurid/state-recorder
## Usage
import StateRecorder from '@plurid/state-recorder';
const initialState = {
// initial state object
};const stateRecorder = new StateRecorder(initialState);
const newState = {
// updated application state object
};stateRecorder.add(newState);
stateRecorder.all();
// returns an array of all the state objects
// e.g.
// [
// initialState,
// newState
// ];stateRecorder.current();
// returns the current StateSituation
// e.g.
// {
// state, // the state
// cursor, // the state location in all the recorded states
// first, // if it is the first state
// last, // if it is the last state
// };stateRecorder.previous();
// returns the previous StateSituation, if it exists,
// or the first StateSituation;
// sets playMode onstateRecorder.next();
// returns the next StateSituation, if it exists,
// or the last StateSituation;
// sets playMode on
// or sets playMode off if it returns the last StateSituationconst differences = stateRecorder.differences();
// returns an array of differences between the states
// with the first element, differences[0], the initial state
// to be further stored in persistent storage// the differences can be loaded into a new StateRecorder
// to obtain a previous state chain, a sitting
const previousSitting = new StateRecorder(differences);// when the stateRecorder state cursor is not on the last state of the state chain
// due to an action of moving back/forward on the chain through previous()/next() methods
// a playMode is automatically activated// during playMode new states cannot/will not be added onto the state chain with the add() method
// any of the following will set playMode off:
// - the cursor is placed on the last state of the state chain through successive next() methods
// - the stateRecorder is resetted
stateRecorder.reset();
// - the stateRecorder is branched
stateRecorder.branch();
// effectively discarding all the states on the state chain from the current position of the state cursor