aboutsummaryrefslogtreecommitdiffstats
path: root/backend/node_modules/semver/internal/lrucache.js
diff options
context:
space:
mode:
Diffstat (limited to 'backend/node_modules/semver/internal/lrucache.js')
-rw-r--r--backend/node_modules/semver/internal/lrucache.js40
1 files changed, 40 insertions, 0 deletions
diff --git a/backend/node_modules/semver/internal/lrucache.js b/backend/node_modules/semver/internal/lrucache.js
new file mode 100644
index 0000000..6d89ec9
--- /dev/null
+++ b/backend/node_modules/semver/internal/lrucache.js
@@ -0,0 +1,40 @@
+class LRUCache {
+ constructor () {
+ this.max = 1000
+ this.map = new Map()
+ }
+
+ get (key) {
+ const value = this.map.get(key)
+ if (value === undefined) {
+ return undefined
+ } else {
+ // Remove the key from the map and add it to the end
+ this.map.delete(key)
+ this.map.set(key, value)
+ return value
+ }
+ }
+
+ delete (key) {
+ return this.map.delete(key)
+ }
+
+ set (key, value) {
+ const deleted = this.delete(key)
+
+ if (!deleted && value !== undefined) {
+ // If cache is full, delete the least recently used item
+ if (this.map.size >= this.max) {
+ const firstKey = this.map.keys().next().value
+ this.delete(firstKey)
+ }
+
+ this.map.set(key, value)
+ }
+
+ return this
+ }
+}
+
+module.exports = LRUCache