UNPKG

de

Version:

Simple asynchronous promise-based controller

97 lines (75 loc) 1.61 kB
'use strict'; 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;