key

keystore2

Globally reusable value / reference storage that supports all data types; and 2 because all the first ones are inferior.

Showing:

Popularity

Downloads/wk

1

GitHub Stars

0

Maintenance

Last Commit

4yrs ago

Contributors

0

Package

Dependencies

1

Size (min+gzip)

0.8KB

License

MIT

Type Definitions

Tree-Shakeable

No?

Categories

Readme

KeyStore2 Build Status Node Security Status

Globally reusable value / reference storage that supports all data types; and 2 because all the first ones are inferior.

Simply put, instead of polluting your functions & promises w/ multiple arguments / single-arity functions, these keystore2 contexts gives your code more readability, and code reusability.

Best use cases / works best with:

  • Heavy asynchronous workloads (ie: working w/ multiple objects at the same time)
  • Chained promises
  • Pure functions that never sacrifices reusability.

Install

$ npm install --save keystore2

$ npm update
# updating an old version installed

Usage

Basics

const KeyStore  = require('keystore2');

var _KeyStore   = new KeyStore();

_KeyStore.set('a', 123);
// true

_KeyStore.get('a');
// 123

_KeyStore.has('a');
// true

_KeyStore.has('b');
// false

Using contexts

const KeyStore  = require('keystore2');

var _KeyStore   = new KeyStore();

_KeyStore.pullContext('myContext').set('b', 456);
// true

_KeyStore.pullContext('myContext').get('b');
// 456

_KeyStore.clearContext('myContext');
// true

_KeyStore.pullContext('myContext').get('b');
// undefined

Nested contexts

const KeyStore  = require('keystore2');

var _KeyStore   = new KeyStore();

_KeyStore.pullContext('myContext').pullContext('mySubContext').set('c', 789);
// true

_KeyStore.pullContext('myContext').pullContext('mySubContext').get('c');
// 789

Random contexts (Added in 1.1.0)

const KeyStore  = require('keystore2');

var _KeyStore   = new KeyStore();

var randomContext = _KeyStore.pullRandomContext();

randomContext.id;
// uuidv4 random id, like '0b99b82f-62cf-4275-88b3-de039020f14e'

randomContext.set('a', 5);
// true

randomContext.get('a');
// 5

// Random contexts can also be nested!

randomContext.pullContext('nestedInRandom').set('c', 123);
// true

randomContext.pullContext('nestedInRandom').get('c');
// 123

Real-world example

const gulp = require('gulp');
const KeyStore  = require('keystore2');

var _KeyStore   = new KeyStore();

function FirstPromise(_context){

    var _KeyStoreContext = _KeyStore.pullContext(_context);
    
    return new Promise(function(resolve, reject){
    
        // promise chain ejecting if context-based error is present
        if(_KeyStoreContext.has('error') === true){
            reject(_context);
        }
        
        // some tasks..
        var _someKey = _KeyStoreContext.get('someKey');
        
        // on success
        _KeyStoreContext.set('newKey', 'sampleStringValue');
        resolve(_context);
        
        // OR
        
        // on failure:
        reject('some error message');
        
        // or this, if you wanna store it in the context.
        _KeyStoreContext.set('error', 'some error message.');
        reject(_context);
        
    });
    
}

// function SecondPromise...

// function ThirdPromise...

gulp.task(`test`, () => {
    return FirstPromise('myContext')
        .then((_context)=>SecondPromise(_context))
            .catch((err)=>{throw new Error(err);})
        .then((_context)=>ThirdPromise(_context))
            .catch((err)=>{throw new Error(err);});
});

Notes, References, Todo's, etc.

Testing w/ xo & ava

npm install && npm test

License

MIT © servercharlie

Rate & Review

Great Documentation0
Easy to Use0
Performant0
Highly Customizable0
Bleeding Edge0
Responsive Maintainers0
Poor Documentation0
Hard to Use0
Slow0
Buggy0
Abandoned0
Unwelcoming Community0
100