diff options
author | Florian Dold <florian.dold@gmail.com> | 2017-08-14 05:01:11 +0200 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2017-08-14 05:02:09 +0200 |
commit | 363723fc84f7b8477592e0105aeb331ec9a017af (patch) | |
tree | 29f92724f34131bac64d6a318dd7e30612e631c7 /node_modules/webpack/lib/util/identifier.js | |
parent | 5634e77ad96bfe1818f6b6ee70b7379652e5487f (diff) |
node_modules
Diffstat (limited to 'node_modules/webpack/lib/util/identifier.js')
-rw-r--r-- | node_modules/webpack/lib/util/identifier.js | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/node_modules/webpack/lib/util/identifier.js b/node_modules/webpack/lib/util/identifier.js index b1bcbf5df..82e5b811f 100644 --- a/node_modules/webpack/lib/util/identifier.js +++ b/node_modules/webpack/lib/util/identifier.js @@ -7,10 +7,32 @@ const looksLikeAbsolutePath = (maybeAbsolutePath) => { const normalizePathSeparator = (p) => p.replace(/\\/g, "/");
-exports.makePathsRelative = (context, identifier) => {
+const _makePathsRelative = (context, identifier) => {
return identifier
.split(/([|! ])/)
.map(str => looksLikeAbsolutePath(str) ?
normalizePathSeparator(path.relative(context, str)) : str)
.join("");
};
+
+exports.makePathsRelative = (context, identifier, cache) => {
+ if(!cache) return _makePathsRelative(context, identifier);
+
+ const relativePaths = cache.relativePaths || (cache.relativePaths = new Map());
+
+ let cachedResult;
+ let contextCache = relativePaths.get(context);
+ if(typeof contextCache === "undefined") {
+ relativePaths.set(context, contextCache = new Map());
+ } else {
+ cachedResult = contextCache.get(identifier);
+ }
+
+ if(typeof cachedResult !== "undefined") {
+ return cachedResult;
+ } else {
+ const relativePath = _makePathsRelative(context, identifier);
+ contextCache.set(identifier, relativePath);
+ return relativePath;
+ }
+};
|