UNPKG

foop

Version:

interfaces that describe their intentions.

123 lines (122 loc) 7.87 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 //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWFwQ2FjaGUuanMiLCJzb3VyY2VzIjpbIk1hcENhY2hlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIC8qKiBAaWdub3JlIPCfmqcgd2lwICovXG4vL1xuLy8gY29uc3QgSGFzaCA9IHJlcXVpcmUoJy4vSGFzaCcpXG4vLyBjb25zdCBMaXN0Q2FjaGUgPSByZXF1aXJlKCcuL0xpc3RDYWNoZScpXG4vL1xuLy8gLyoqXG4vLyAgKiBHZXRzIHRoZSBkYXRhIGZvciBgbWFwYC5cbi8vICAqXG4vLyAgKiBAcHJpdmF0ZVxuLy8gICogQHBhcmFtIHtPYmplY3R9IG1hcCBUaGUgbWFwIHRvIHF1ZXJ5LlxuLy8gICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUgcmVmZXJlbmNlIGtleS5cbi8vICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtYXAgZGF0YS5cbi8vICAqL1xuLy8gZnVuY3Rpb24gZ2V0TWFwRGF0YSh7X19kYXRhX199LCBrZXkpIHtcbi8vICAgY29uc3QgZGF0YSA9IF9fZGF0YV9fXG4vLyAgIHJldHVybiBpc0tleWFibGUoa2V5KVxuLy8gICAgID8gZGF0YVt0eXBlb2Yga2V5ID09PSAnc3RyaW5nJyA/ICdzdHJpbmcnIDogJ2hhc2gnXVxuLy8gICAgIDogZGF0YS5tYXBcbi8vIH1cbi8vXG4vLyAvKipcbi8vICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIHN1aXRhYmxlIGZvciB1c2UgYXMgdW5pcXVlIG9iamVjdCBrZXkuXG4vLyAgKlxuLy8gICogQHByaXZhdGVcbi8vICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuLy8gICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgc3VpdGFibGUsIGVsc2UgYGZhbHNlYC5cbi8vICAqL1xuLy8gZnVuY3Rpb24gaXNLZXlhYmxlKHZhbHVlKSB7XG4vLyAgIGNvbnN0IHR5cGUgPSB0eXBlb2YgdmFsdWVcbi8vICAgcmV0dXJuICh0eXBlID09ICdzdHJpbmcnIHx8IHR5cGUgPT0gJ251bWJlcicgfHwgdHlwZSA9PSAnc3ltYm9sJyB8fCB0eXBlID09ICdib29sZWFuJylcbi8vICAgICA/ICh2YWx1ZSAhPT0gJ19fcHJvdG9fXycpXG4vLyAgICAgOiAodmFsdWUgPT09IG51bGwpXG4vLyB9XG4vL1xuLy8gY2xhc3MgTWFwQ2FjaGUge1xuLy8gICAvKipcbi8vICAgICogQ3JlYXRlcyBhIG1hcCBjYWNoZSBvYmplY3QgdG8gc3RvcmUga2V5LXZhbHVlIHBhaXJzLlxuLy8gICAgKlxuLy8gICAgKiBAcHJpdmF0ZVxuLy8gICAgKiBAY29uc3RydWN0b3Jcbi8vICAgICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4vLyAgICAqL1xuLy8gICBjb25zdHJ1Y3RvcihlbnRyaWVzKSB7XG4vLyAgICAgbGV0IGluZGV4ID0gLTFcbi8vICAgICBjb25zdCBsZW5ndGggPSBlbnRyaWVzID09IG51bGwgPyAwIDogZW50cmllcy5sZW5ndGhcbi8vXG4vLyAgICAgdGhpcy5jbGVhcigpXG4vLyAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbi8vICAgICAgIGNvbnN0IGVudHJ5ID0gZW50cmllc1tpbmRleF1cbi8vICAgICAgIHRoaXMuc2V0KGVudHJ5WzBdLCBlbnRyeVsxXSlcbi8vICAgICB9XG4vLyAgIH1cbi8vXG4vLyAgIC8qKlxuLy8gICAgKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBtYXAuXG4vLyAgICAqXG4vLyAgICAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuLy8gICAgKi9cbi8vICAgY2xlYXIoKSB7XG4vLyAgICAgdGhpcy5zaXplID0gMFxuLy8gICAgIHRoaXMuX19kYXRhX18gPSB7XG4vLyAgICAgICAnaGFzaCc6IG5ldyBIYXNoKCksXG4vLyAgICAgICAnbWFwJzogbmV3IChNYXAgfHwgTGlzdENhY2hlKSgpLFxuLy8gICAgICAgJ3N0cmluZyc6IG5ldyBIYXNoKCksXG4vLyAgICAgfVxuLy8gICB9XG4vL1xuLy8gICAvKipcbi8vICAgICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIG1hcC5cbi8vICAgICpcbi8vICAgICogQG1lbWJlck9mIE1hcENhY2hlXG4vLyAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuLy8gICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4vLyAgICAqL1xuLy8gICBkZWxldGUoa2V5KSB7XG4vLyAgICAgY29uc3QgcmVzdWx0ID0gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpLmRlbGV0ZShrZXkpXG4vLyAgICAgdGhpcy5zaXplIC09IHJlc3VsdCA/IDEgOiAwXG4vLyAgICAgcmV0dXJuIHJlc3VsdFxuLy8gICB9XG4vL1xuLy8gICAvKipcbi8vICAgICogR2V0cyB0aGUgbWFwIHZhbHVlIGZvciBga2V5YC5cbi8vICAgICpcbi8vICAgICogQG1lbWJlck9mIE1hcENhY2hlXG4vLyAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuLy8gICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4vLyAgICAqL1xuLy8gICBnZXQoa2V5KSB7XG4vLyAgICAgcmV0dXJuIGdldE1hcERhdGEodGhpcywga2V5KS5nZXQoa2V5KVxuLy8gICB9XG4vL1xuLy8gICAvKipcbi8vICAgICogQ2hlY2tzIGlmIGEgbWFwIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4vLyAgICAqXG4vLyAgICAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuLy8gICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuLy8gICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuLy8gICAgKi9cbi8vICAgaGFzKGtleSkge1xuLy8gICAgIHJldHVybiBnZXRNYXBEYXRhKHRoaXMsIGtleSkuaGFzKGtleSlcbi8vICAgfVxuLy9cbi8vICAgLyoqXG4vLyAgICAqIFNldHMgdGhlIG1hcCBga2V5YCB0byBgdmFsdWVgLlxuLy8gICAgKlxuLy8gICAgKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbi8vICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4vLyAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbi8vICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbWFwIGNhY2hlIGluc3RhbmNlLlxuLy8gICAgKi9cbi8vICAgc2V0KGtleSwgdmFsdWUpIHtcbi8vICAgICBjb25zdCBkYXRhID0gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpXG4vLyAgICAgY29uc3Qgc2l6ZSA9IGRhdGEuc2l6ZVxuLy9cbi8vICAgICBkYXRhLnNldChrZXksIHZhbHVlKVxuLy8gICAgIHRoaXMuc2l6ZSArPSBkYXRhLnNpemUgPT09IHNpemUgPyAwIDogMVxuLy8gICAgIHJldHVybiB0aGlzXG4vLyAgIH1cbi8vIH1cbi8vXG4vLyBtb2R1bGUuZXhwb3J0cyA9IE1hcENhY2hlXG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7In0=