foop
Version:
interfaces that describe their intentions.
95 lines (94 loc) • 6.12 kB
JavaScript
/** @ignore 🚧 wip */
// // import ListCache from './ListCache.js'
// // import MapCache from './MapCache.js'
//
// /** Used as the size to enable large array optimizations. */
// const LARGE_ARRAY_SIZE = 200
//
// class Stack {
// /**
// * Creates a stack cache object to store key-value pairs.
// *
// * @private
// * @constructor
// * @param {Array} [entries] The key-value pairs to cache.
// */
// constructor(entries) {
// const data = this.__data__ = new ListCache(entries)
// this.size = data.size
// }
//
// /**
// * Removes all key-value entries from the stack.
// *
// * @memberOf Stack
// */
// clear() {
// this.__data__ = new ListCache()
// this.size = 0
// }
//
// /**
// * Removes `key` and its value from the stack.
// *
// * @memberOf Stack
// * @param {string} key The key of the value to remove.
// * @returns {boolean} Returns `true` if the entry was removed, else `false`.
// */
// delete(key) {
// const data = this.__data__
// const result = data.delete(key)
//
// this.size = data.size
// return result
// }
//
// /**
// * Gets the stack value for `key`.
// *
// * @memberOf Stack
// * @param {string} key The key of the value to get.
// * @returns {*} Returns the entry value.
// */
// get(key) {
// return this.__data__.get(key)
// }
//
// /**
// * Checks if a stack value for `key` exists.
// *
// * @memberOf Stack
// * @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 this.__data__.has(key)
// }
//
// /**
// * Sets the stack `key` to `value`.
// *
// * @memberOf Stack
// * @param {string} key The key of the value to set.
// * @param {*} value The value to set.
// * @returns {Object} Returns the stack cache instance.
// */
// set(key, value) {
// let data = this.__data__
// if (data instanceof ListCache) {
// const pairs = data.__data__
// if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {
// pairs.push([key, value])
// this.size = ++data.size
// return this
// }
// data = this.__data__ = new MapCache(pairs)
// }
// data.set(key, value)
// this.size = data.size
// return this
// }
// }
//
// module.exports = Stack
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RhY2suanMiLCJzb3VyY2VzIjpbIlN0YWNrLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKiBAaWdub3JlIPCfmqcgd2lwICovXG4vLyAvLyBpbXBvcnQgTGlzdENhY2hlIGZyb20gJy4vTGlzdENhY2hlLmpzJ1xuLy8gLy8gaW1wb3J0IE1hcENhY2hlIGZyb20gJy4vTWFwQ2FjaGUuanMnXG4vL1xuLy8gLyoqIFVzZWQgYXMgdGhlIHNpemUgdG8gZW5hYmxlIGxhcmdlIGFycmF5IG9wdGltaXphdGlvbnMuICovXG4vLyBjb25zdCBMQVJHRV9BUlJBWV9TSVpFID0gMjAwXG4vL1xuLy8gY2xhc3MgU3RhY2sge1xuLy8gICAvKipcbi8vICAgICogQ3JlYXRlcyBhIHN0YWNrIGNhY2hlIG9iamVjdCB0byBzdG9yZSBrZXktdmFsdWUgcGFpcnMuXG4vLyAgICAqXG4vLyAgICAqIEBwcml2YXRlXG4vLyAgICAqIEBjb25zdHJ1Y3RvclxuLy8gICAgKiBAcGFyYW0ge0FycmF5fSBbZW50cmllc10gVGhlIGtleS12YWx1ZSBwYWlycyB0byBjYWNoZS5cbi8vICAgICovXG4vLyAgIGNvbnN0cnVjdG9yKGVudHJpZXMpIHtcbi8vICAgICBjb25zdCBkYXRhID0gdGhpcy5fX2RhdGFfXyA9IG5ldyBMaXN0Q2FjaGUoZW50cmllcylcbi8vICAgICB0aGlzLnNpemUgPSBkYXRhLnNpemVcbi8vICAgfVxuLy9cbi8vICAgLyoqXG4vLyAgICAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIHN0YWNrLlxuLy8gICAgKlxuLy8gICAgKiBAbWVtYmVyT2YgU3RhY2tcbi8vICAgICovXG4vLyAgIGNsZWFyKCkge1xuLy8gICAgIHRoaXMuX19kYXRhX18gPSBuZXcgTGlzdENhY2hlKClcbi8vICAgICB0aGlzLnNpemUgPSAwXG4vLyAgIH1cbi8vXG4vLyAgIC8qKlxuLy8gICAgKiBSZW1vdmVzIGBrZXlgIGFuZCBpdHMgdmFsdWUgZnJvbSB0aGUgc3RhY2suXG4vLyAgICAqXG4vLyAgICAqIEBtZW1iZXJPZiBTdGFja1xuLy8gICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJlbW92ZS5cbi8vICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuLy8gICAgKi9cbi8vICAgZGVsZXRlKGtleSkge1xuLy8gICAgIGNvbnN0IGRhdGEgPSB0aGlzLl9fZGF0YV9fXG4vLyAgICAgY29uc3QgcmVzdWx0ID0gZGF0YS5kZWxldGUoa2V5KVxuLy9cbi8vICAgICB0aGlzLnNpemUgPSBkYXRhLnNpemVcbi8vICAgICByZXR1cm4gcmVzdWx0XG4vLyAgIH1cbi8vXG4vLyAgIC8qKlxuLy8gICAgKiBHZXRzIHRoZSBzdGFjayB2YWx1ZSBmb3IgYGtleWAuXG4vLyAgICAqXG4vLyAgICAqIEBtZW1iZXJPZiBTdGFja1xuLy8gICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbi8vICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGVudHJ5IHZhbHVlLlxuLy8gICAgKi9cbi8vICAgZ2V0KGtleSkge1xuLy8gICAgIHJldHVybiB0aGlzLl9fZGF0YV9fLmdldChrZXkpXG4vLyAgIH1cbi8vXG4vLyAgIC8qKlxuLy8gICAgKiBDaGVja3MgaWYgYSBzdGFjayB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuLy8gICAgKlxuLy8gICAgKiBAbWVtYmVyT2YgU3RhY2tcbi8vICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbi8vICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbi8vICAgICovXG4vLyAgIGhhcyhrZXkpIHtcbi8vICAgICByZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXMoa2V5KVxuLy8gICB9XG4vL1xuLy8gICAvKipcbi8vICAgICogU2V0cyB0aGUgc3RhY2sgYGtleWAgdG8gYHZhbHVlYC5cbi8vICAgICpcbi8vICAgICogQG1lbWJlck9mIFN0YWNrXG4vLyAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuLy8gICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4vLyAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIHN0YWNrIGNhY2hlIGluc3RhbmNlLlxuLy8gICAgKi9cbi8vICAgc2V0KGtleSwgdmFsdWUpIHtcbi8vICAgICBsZXQgZGF0YSA9IHRoaXMuX19kYXRhX19cbi8vICAgICBpZiAoZGF0YSBpbnN0YW5jZW9mIExpc3RDYWNoZSkge1xuLy8gICAgICAgY29uc3QgcGFpcnMgPSBkYXRhLl9fZGF0YV9fXG4vLyAgICAgICBpZiAoIU1hcCB8fCAocGFpcnMubGVuZ3RoIDwgTEFSR0VfQVJSQVlfU0laRSAtIDEpKSB7XG4vLyAgICAgICAgIHBhaXJzLnB1c2goW2tleSwgdmFsdWVdKVxuLy8gICAgICAgICB0aGlzLnNpemUgPSArK2RhdGEuc2l6ZVxuLy8gICAgICAgICByZXR1cm4gdGhpc1xuLy8gICAgICAgfVxuLy8gICAgICAgZGF0YSA9IHRoaXMuX19kYXRhX18gPSBuZXcgTWFwQ2FjaGUocGFpcnMpXG4vLyAgICAgfVxuLy8gICAgIGRhdGEuc2V0KGtleSwgdmFsdWUpXG4vLyAgICAgdGhpcy5zaXplID0gZGF0YS5zaXplXG4vLyAgICAgcmV0dXJuIHRoaXNcbi8vICAgfVxuLy8gfVxuLy9cbi8vIG1vZHVsZS5leHBvcnRzID0gU3RhY2tcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OyJ9