| /*! |
| * map-cache <https://github.com/jonschlinkert/map-cache> |
| * |
| * Copyright (c) 2015, Jon Schlinkert. |
| * Licensed under the MIT License. |
| */ |
| |
| 'use strict'; |
| |
| var hasOwn = Object.prototype.hasOwnProperty; |
| |
| /** |
| * Expose `MapCache` |
| */ |
| |
| module.exports = MapCache; |
| |
| /** |
| * Creates a cache object to store key/value pairs. |
| * |
| * ```js |
| * var cache = new MapCache(); |
| * ``` |
| * |
| * @api public |
| */ |
| |
| function MapCache(data) { |
| this.__data__ = data || {}; |
| } |
| |
| /** |
| * Adds `value` to `key` on the cache. |
| * |
| * ```js |
| * cache.set('foo', 'bar'); |
| * ``` |
| * |
| * @param {String} `key` The key of the value to cache. |
| * @param {*} `value` The value to cache. |
| * @returns {Object} Returns the `Cache` object for chaining. |
| * @api public |
| */ |
| |
| MapCache.prototype.set = function mapSet(key, value) { |
| if (key !== '__proto__') { |
| this.__data__[key] = value; |
| } |
| return this; |
| }; |
| |
| /** |
| * Gets the cached value for `key`. |
| * |
| * ```js |
| * cache.get('foo'); |
| * //=> 'bar' |
| * ``` |
| * |
| * @param {String} `key` The key of the value to get. |
| * @returns {*} Returns the cached value. |
| * @api public |
| */ |
| |
| MapCache.prototype.get = function mapGet(key) { |
| return key === '__proto__' ? undefined : this.__data__[key]; |
| }; |
| |
| /** |
| * Checks if a cached value for `key` exists. |
| * |
| * ```js |
| * cache.has('foo'); |
| * //=> true |
| * ``` |
| * |
| * @param {String} `key` The key of the entry to check. |
| * @returns {Boolean} Returns `true` if an entry for `key` exists, else `false`. |
| * @api public |
| */ |
| |
| MapCache.prototype.has = function mapHas(key) { |
| return key !== '__proto__' && hasOwn.call(this.__data__, key); |
| }; |
| |
| /** |
| * Removes `key` and its value from the cache. |
| * |
| * ```js |
| * cache.del('foo'); |
| * ``` |
| * @title .del |
| * @param {String} `key` The key of the value to remove. |
| * @returns {Boolean} Returns `true` if the entry was removed successfully, else `false`. |
| * @api public |
| */ |
| |
| MapCache.prototype.del = function mapDelete(key) { |
| return this.has(key) && delete this.__data__[key]; |
| }; |