Skip to content

Commit 7a95b8c

Browse files
committed
memorize request shortener results
1 parent 575fc4c commit 7a95b8c

File tree

1 file changed

+13
-7
lines changed

1 file changed

+13
-7
lines changed

lib/RequestShortener.js

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -42,21 +42,27 @@ class RequestShortener {
4242
this.buildinsAsModule = buildinsAsModule;
4343
this.buildinsRegExp = createRegExpForPath(buildins);
4444
}
45+
46+
this.cache = new Map();
4547
}
4648

4749
shorten(request) {
4850
if(!request) return request;
49-
request = normalizeBackSlashDirection(request);
51+
const cacheEntry = this.cache.get(request);
52+
if(cacheEntry !== undefined) return cacheEntry;
53+
let result = normalizeBackSlashDirection(request);
5054
if(this.buildinsAsModule && this.buildinsRegExp)
51-
request = request.replace(this.buildinsRegExp, "!(webpack)");
55+
result = result.replace(this.buildinsRegExp, "!(webpack)");
5256
if(this.currentDirectoryRegExp)
53-
request = request.replace(this.currentDirectoryRegExp, "!.");
57+
result = result.replace(this.currentDirectoryRegExp, "!.");
5458
if(this.parentDirectoryRegExp)
55-
request = request.replace(this.parentDirectoryRegExp, "!..");
59+
result = result.replace(this.parentDirectoryRegExp, "!..");
5660
if(!this.buildinsAsModule && this.buildinsRegExp)
57-
request = request.replace(this.buildinsRegExp, "!(webpack)");
58-
request = request.replace(INDEX_JS_REGEXP, "$1");
59-
return request.replace(FRONT_OR_BACK_BANG_REGEXP, "");
61+
result = result.replace(this.buildinsRegExp, "!(webpack)");
62+
result = result.replace(INDEX_JS_REGEXP, "$1");
63+
result = result.replace(FRONT_OR_BACK_BANG_REGEXP, "");
64+
this.cache.set(request, result);
65+
return result;
6066
}
6167
}
6268

0 commit comments

Comments
 (0)