Keep objects available everywhere in nodejs application
First you need to install kiper
using npm:
npm install kiper --save
Then, use kiper in your project:
const kiper = require('kiper');
// somewhere keep an asset
kiper.keep('foo', 'bar');
// somewhere you got it back
let value = kiper.get('foo');
console.log(value);
- Keep objects and cache them in memory
- Keep an object with a timeout (TTL - time to live)
- Observe key if its value has any changed
- Add/listen a custom event
- Cache object
- Observing the changes to an object
- Send and receive messages through events
- Create agents and manage them. Such as:
Chatbot manager
,Dialog manager
, ... - Etc, ...
The
Kiper
class is defined and exposed by the modulekiper
Added in:v0.0.1
Options:
- ttl: (default: 0) - time to live in milliseconds. 0 = infinity
- checkPeriod: (default: 600) - duration to check timeout on key has expired.
- checkUsage: (default: true) - check the last time usage
// create new instance of Kiper
const kiper = require('kiper').Kiper(options);
Keep an object in kiper
Added in:v0.0.1
Alias:set
kiper.keep('foo', 'bar');
Keep an object for a period of time
Added in:v0.1.0
Alias:set
kiper.keep('foo', 'bar', 1000, console.log);
// output: bar foor
Get an object from kiper
Added in:v0.0.1
kiper.get('foo');
// returns: bar
Get an object from kiper by pass a validator function
Added in:v0.0.2
kiper.get((value, key) => value === 'bar');
// returns: bar
Remove an object out of kiper
Added in:v0.1.0
kiper.remove('foo');
// returns: bar
Stop interval checking, free memory and release objects
Added in:v0.1.0
kiper.retire();
Repair the last time usage
Added in:v1.0.0
kiper.touch('foo');
Watch a key, if its value changes then a callback will be called
Added in:v1.0.0
// keep an asset and return an obserable object
let baz = kiper.keep('baz', {
gold: 1000
});
// watch the key
kiper.watch('baz', (obj, oldVal, propkey, type) => {
console.log('change info:', obj, oldVal, propkey, type);
// change info: { gold: 999 } 1000 gold update
// change info: { silver: 1000 } undefined silver add
// change info: {} 999 gold delete
});
// baz lost one gold
baz.gold = 999
// baz has new silvers
baz.silver = 1000
// baz lost all golds
delete baz.gold
Listen an event which emit from kiper
Added in:v1.0.0
kiper.keep('foo', 'bar', 1000);
kiper.on('expired', (value, key) => {
console.log('A timeout on key has expired', value, key);
// A timeout on key has expired bar foo
})
Listen an event once which emit from kiper
Added in:v1.0.0
kiper.keep('foo', 'bar', 1000);
kiper.once('expired', (value, key) => {
console.log('A timeout on key has expired', value, key);
// A timeout on key has expired bar foo
})
MIT