{"ast":null,"code":"module.exports = function (size) {\n return new LruCache(size);\n};\n\nfunction LruCache(size) {\n this.capacity = size | 0;\n this.map = Object.create(null);\n this.list = new DoublyLinkedList();\n}\n\nLruCache.prototype.get = function (key) {\n var node = this.map[key];\n if (node == null) return undefined;\n this.used(node);\n return node.val;\n};\n\nLruCache.prototype.set = function (key, val) {\n var node = this.map[key];\n\n if (node != null) {\n node.val = val;\n } else {\n if (!this.capacity) this.prune();\n if (!this.capacity) return false;\n node = new DoublyLinkedNode(key, val);\n this.map[key] = node;\n this.capacity--;\n }\n\n this.used(node);\n return true;\n};\n\nLruCache.prototype.used = function (node) {\n this.list.moveToFront(node);\n};\n\nLruCache.prototype.prune = function () {\n var node = this.list.pop();\n\n if (node != null) {\n delete this.map[node.key];\n this.capacity++;\n }\n};\n\nfunction DoublyLinkedList() {\n this.firstNode = null;\n this.lastNode = null;\n}\n\nDoublyLinkedList.prototype.moveToFront = function (node) {\n if (this.firstNode == node) return;\n this.remove(node);\n\n if (this.firstNode == null) {\n this.firstNode = node;\n this.lastNode = node;\n node.prev = null;\n node.next = null;\n } else {\n node.prev = null;\n node.next = this.firstNode;\n node.next.prev = node;\n this.firstNode = node;\n }\n};\n\nDoublyLinkedList.prototype.pop = function () {\n var lastNode = this.lastNode;\n\n if (lastNode != null) {\n this.remove(lastNode);\n }\n\n return lastNode;\n};\n\nDoublyLinkedList.prototype.remove = function (node) {\n if (this.firstNode == node) {\n this.firstNode = node.next;\n } else if (node.prev != null) {\n node.prev.next = node.next;\n }\n\n if (this.lastNode == node) {\n this.lastNode = node.prev;\n } else if (node.next != null) {\n node.next.prev = node.prev;\n }\n};\n\nfunction DoublyLinkedNode(key, val) {\n this.key = key;\n this.val = val;\n this.prev = null;\n this.next = null;\n}","map":{"version":3,"sources":["/Users/tylerkoenig/Code/personal/react-scss2/node_modules/aws4/lru.js"],"names":["module","exports","size","LruCache","capacity","map","Object","create","list","DoublyLinkedList","prototype","get","key","node","undefined","used","val","set","prune","DoublyLinkedNode","moveToFront","pop","firstNode","lastNode","remove","prev","next"],"mappings":"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","sourcesContent":["module.exports = function(size) {\n return new LruCache(size)\n}\n\nfunction LruCache(size) {\n this.capacity = size | 0\n this.map = Object.create(null)\n this.list = new DoublyLinkedList()\n}\n\nLruCache.prototype.get = function(key) {\n var node = this.map[key]\n if (node == null) return undefined\n this.used(node)\n return node.val\n}\n\nLruCache.prototype.set = function(key, val) {\n var node = this.map[key]\n if (node != null) {\n node.val = val\n } else {\n if (!this.capacity) this.prune()\n if (!this.capacity) return false\n node = new DoublyLinkedNode(key, val)\n this.map[key] = node\n this.capacity--\n }\n this.used(node)\n return true\n}\n\nLruCache.prototype.used = function(node) {\n this.list.moveToFront(node)\n}\n\nLruCache.prototype.prune = function() {\n var node = this.list.pop()\n if (node != null) {\n delete this.map[node.key]\n this.capacity++\n }\n}\n\n\nfunction DoublyLinkedList() {\n this.firstNode = null\n this.lastNode = null\n}\n\nDoublyLinkedList.prototype.moveToFront = function(node) {\n if (this.firstNode == node) return\n\n this.remove(node)\n\n if (this.firstNode == null) {\n this.firstNode = node\n this.lastNode = node\n node.prev = null\n node.next = null\n } else {\n node.prev = null\n node.next = this.firstNode\n node.next.prev = node\n this.firstNode = node\n }\n}\n\nDoublyLinkedList.prototype.pop = function() {\n var lastNode = this.lastNode\n if (lastNode != null) {\n this.remove(lastNode)\n }\n return lastNode\n}\n\nDoublyLinkedList.prototype.remove = function(node) {\n if (this.firstNode == node) {\n this.firstNode = node.next\n } else if (node.prev != null) {\n node.prev.next = node.next\n }\n if (this.lastNode == node) {\n this.lastNode = node.prev\n } else if (node.next != null) {\n node.next.prev = node.prev\n }\n}\n\n\nfunction DoublyLinkedNode(key, val) {\n this.key = key\n this.val = val\n this.prev = null\n this.next = null\n}\n"]},"metadata":{},"sourceType":"script"}