de
Version:
Simple asynchronous promise-based controller
97 lines (75 loc) • 1.61 kB
JavaScript
;
var hasProperty;
hasProperty = Object.prototype.hasOwnProperty;
/**
* @class Cache
* */
function Cache () {
/**
* @private
* @memberOf {Cache}
* @property {Object}
* */
this.__storage__ = {};
}
Cache.prototype = {
/**
* @protected
* @memberOf {Cache}
* @method
* */
constructor: Cache,
/**
* @protected
* @memberOf {Provider}
* @property {Cache}
* */
_defaultExpires: 0,
/**
* @public
* @memberOf {Cache}
* @method
*
* @param {String} k
* @param {*} val
* @param {Object} [opts]
*
* @returns {void}
* */
set: function (k, val, opts) {
var expires;
if ( Object(opts) !== opts ) {
opts = {};
}
expires = hasProperty.call(opts, 'expires') ?
opts.expires : this._defaultExpires;
this.__storage__[k] = {
setTime: Date.now(),
expires: expires,
value: val
};
},
/**
* @public
* @memberOf {Cache}
* @method
*
* @param {String} k
*
* @returns {?}
* */
get: function (k) {
var result;
if ( hasProperty.call(this.__storage__, k) ) {
result = this.__storage__[k];
if ( Date.now() >= (result.setTime + result.expires) ) {
// expires is over
delete this.__storage__[k];
return null;
}
return result.value;
}
return null;
}
};
module.exports = Cache;