@@ -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