This package allows you to manage data state and check if there are changes.
Using npm
npm i -S lkt-data-state
import DataState from 'lkt-data-state';
const data = {
boolProp: false,
lorem: 1,
ipsum: 2,
dolor: 3,
sit: 4,
amet: 5,
test: {
lorem: '1',
sample: '1',
test: {
lorem: '1',
sample: '32',
}
}
};
const state = new DataState(data, {
preventProps: ['lorem', 'ipsum'], // These props won't be stored
preventTypes: ['number', 'string', 'object'] // These data types won't be stored
});
// Or instantiate without additional config
const state = new DataState(data);
Once you have your DataState instance you can store an update like following:
const updatedData = {
boolProp: true,
lorem: 1,
ipsum: 2,
dolor: 34,
sit: 4,
amet: 5,
test: {
lorem: '1',
sample: '1',
test: {
lorem: '1',
sample: '2',
}
}
};
state.store(updatedData)
Sometimes you just want to modify one property. In that case, you don't need to use all the object, you can use the increment
method this way:
state.increment({lorem: 2})
if (state.changed()) {
// Do your stuff
}
state.getData(); // Returns modified data
state.getOriginalData(); // Returns original data
Keep in mind returned data will cast integer to string.
state.turnStoredIntoOriginal();
Available types to remove are:
- string
- number
- undefined
- function
- null
- boolean
- object
- array
preventTypes
option works recursively in objects
This options prevent some object properties to be stored. Works recursively in objects.