1.0.10 • Published 3 months ago

lkt-data-state v1.0.10

Weekly downloads
-
License
MIT
Repository
-
Last release
3 months ago

ts js framework independent node

This package allows you to manage data state and check if there are changes.

Installation

Using npm

npm i -S lkt-data-state

Usage

Create a data state controller

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);

Update with modified 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)

Partial increment

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})

Check modifications

if (state.changed()) {
    // Do your stuff
}

Get data

state.getData(); // Returns modified data
state.getOriginalData(); // Returns original data

Keep in mind returned data will cast integer to string.

Turn stored data into original data

state.turnStoredIntoOriginal();

preventTypes

Available types to remove are:

  • string
  • number
  • undefined
  • function
  • null
  • boolean
  • object
  • array

preventTypes option works recursively in objects

preventProps

This options prevent some object properties to be stored. Works recursively in objects.