Skip to content

Commit 3a87cd9

Browse files
committed
fix: faster cache key factory for range
1 parent da08e01 commit 3a87cd9

File tree

1 file changed

+31
-2
lines changed

1 file changed

+31
-2
lines changed

classes/range.js

+31-2
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,8 @@ class Range {
8181

8282
// memoize range parsing for performance.
8383
// this is a very hot path, and fully deterministic.
84-
const memoOpts = Object.keys(this.options).join(',')
85-
const memoKey = `parseRange:${memoOpts}:${range}`
84+
const memoOpts = buildMemoKeyFromOptions(this.options)
85+
const memoKey = memoOpts + ':' + range
8686
const cached = cache.get(memoKey)
8787
if (cached) {
8888
return cached
@@ -190,6 +190,35 @@ class Range {
190190
return false
191191
}
192192
}
193+
194+
function buildMemoKeyFromOptions (options) {
195+
if (options.includePrerelease === true) {
196+
if (options.loose === true && options.rtl === true) {
197+
return '1'
198+
}
199+
200+
if (options.loose === true) {
201+
return '2'
202+
}
203+
204+
if (options.rtl === true) {
205+
return '3'
206+
}
207+
208+
return '4'
209+
} else if (options.loose === true) {
210+
if (options.rtl === true) {
211+
return '5'
212+
}
213+
214+
return '6'
215+
} else if (options.rtl === true) {
216+
return '7'
217+
} else {
218+
return '8'
219+
}
220+
}
221+
193222
module.exports = Range
194223

195224
const LRU = require('lru-cache')

0 commit comments

Comments
 (0)