UNPKG

foop

Version:

interfaces that describe their intentions.

122 lines (121 loc) 3.14 kB
// /** @ignore 🚧 wip */ // // const Hash = require('./Hash') // const ListCache = require('./ListCache') // // /** // * Gets the data for `map`. // * // * @private // * @param {Object} map The map to query. // * @param {string} key The reference key. // * @returns {*} Returns the map data. // */ // function getMapData({__data__}, key) { // const data = __data__ // return isKeyable(key) // ? data[typeof key === 'string' ? 'string' : 'hash'] // : data.map // } // // /** // * Checks if `value` is suitable for use as unique object key. // * // * @private // * @param {*} value The value to check. // * @returns {boolean} Returns `true` if `value` is suitable, else `false`. // */ // function isKeyable(value) { // const type = typeof value // return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') // ? (value !== '__proto__') // : (value === null) // } // // class MapCache { // /** // * Creates a map cache object to store key-value pairs. // * // * @private // * @constructor // * @param {Array} [entries] The key-value pairs to cache. // */ // constructor(entries) { // let index = -1 // const length = entries == null ? 0 : entries.length // // this.clear() // while (++index < length) { // const entry = entries[index] // this.set(entry[0], entry[1]) // } // } // // /** // * Removes all key-value entries from the map. // * // * @memberOf MapCache // */ // clear() { // this.size = 0 // this.__data__ = { // 'hash': new Hash(), // 'map': new (Map || ListCache)(), // 'string': new Hash(), // } // } // // /** // * Removes `key` and its value from the map. // * // * @memberOf MapCache // * @param {string} key The key of the value to remove. // * @returns {boolean} Returns `true` if the entry was removed, else `false`. // */ // delete(key) { // const result = getMapData(this, key).delete(key) // this.size -= result ? 1 : 0 // return result // } // // /** // * Gets the map value for `key`. // * // * @memberOf MapCache // * @param {string} key The key of the value to get. // * @returns {*} Returns the entry value. // */ // get(key) { // return getMapData(this, key).get(key) // } // // /** // * Checks if a map value for `key` exists. // * // * @memberOf MapCache // * @param {string} key The key of the entry to check. // * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. // */ // has(key) { // return getMapData(this, key).has(key) // } // // /** // * Sets the map `key` to `value`. // * // * @memberOf MapCache // * @param {string} key The key of the value to set. // * @param {*} value The value to set. // * @returns {Object} Returns the map cache instance. // */ // set(key, value) { // const data = getMapData(this, key) // const size = data.size // // data.set(key, value) // this.size += data.size === size ? 0 : 1 // return this // } // } // // module.exports = MapCache