From de98e0b232509d5f40c135d540a70e415272ff85 Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Wed, 3 May 2017 15:35:00 +0200 Subject: node_modules --- .../lib/dependencies/ContextDependencyHelpers.js | 71 ++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 node_modules/webpack/lib/dependencies/ContextDependencyHelpers.js (limited to 'node_modules/webpack/lib/dependencies/ContextDependencyHelpers.js') diff --git a/node_modules/webpack/lib/dependencies/ContextDependencyHelpers.js b/node_modules/webpack/lib/dependencies/ContextDependencyHelpers.js new file mode 100644 index 000000000..412cee701 --- /dev/null +++ b/node_modules/webpack/lib/dependencies/ContextDependencyHelpers.js @@ -0,0 +1,71 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ +"use strict"; + +const ContextDependencyHelpers = exports; + +/** + * Escapes regular expression metacharacters + * @param {string} str String to quote + * @return {string} Escaped string + */ +function quotemeta(str) { + return str.replace(/[-[\]\\/{}()*+?.^$|]/g, "\\$&"); +} + +ContextDependencyHelpers.create = function(Dep, range, param, expr, options, chunkName) { + let dep; + let prefix; + let postfix; + let prefixRange; + let valueRange; + let idx; + let context; + let regExp; + if(param.isTemplateString()) { + prefix = param.quasis[0].string; + postfix = param.quasis.length > 1 ? param.quasis[param.quasis.length - 1].string : ""; + prefixRange = [param.quasis[0].range[0], param.quasis[0].range[1]]; + valueRange = param.range; + idx = prefix.lastIndexOf("/"); + context = "."; + if(idx >= 0) { + context = prefix.substr(0, idx); + prefix = `.${prefix.substr(idx)}`; + } + // If there are more than two quasis, maybe the generated RegExp can be more precise? + regExp = new RegExp(`^${quotemeta(prefix)}${options.wrappedContextRegExp.source}${quotemeta(postfix)}$`); + dep = new Dep(context, options.wrappedContextRecursive, regExp, range, valueRange, chunkName); + dep.loc = expr.loc; + dep.replaces = [{ + range: prefixRange, + value: prefix + }]; + dep.critical = options.wrappedContextCritical && "a part of the request of a dependency is an expression"; + return dep; + } else if(param.isWrapped() && (param.prefix && param.prefix.isString() || param.postfix && param.postfix.isString())) { + prefix = param.prefix && param.prefix.isString() ? param.prefix.string : ""; + postfix = param.postfix && param.postfix.isString() ? param.postfix.string : ""; + prefixRange = param.prefix && param.prefix.isString() ? param.prefix.range : null; + valueRange = [prefixRange ? prefixRange[1] : param.range[0], param.range[1]]; + idx = prefix.lastIndexOf("/"); + context = "."; + if(idx >= 0) { + context = prefix.substr(0, idx); + prefix = `.${prefix.substr(idx)}`; + } + regExp = new RegExp(`^${quotemeta(prefix)}${options.wrappedContextRegExp.source}${quotemeta(postfix)}$`); + dep = new Dep(context, options.wrappedContextRecursive, regExp, range, valueRange, chunkName); + dep.loc = expr.loc; + dep.prepend = param.prefix && param.prefix.isString() ? prefix : null; + dep.critical = options.wrappedContextCritical && "a part of the request of a dependency is an expression"; + return dep; + } else { + dep = new Dep(options.exprContextRequest, options.exprContextRecursive, options.exprContextRegExp, range, param.range, chunkName); + dep.loc = expr.loc; + dep.critical = options.exprContextCritical && "the request of a dependency is an expression"; + return dep; + } +}; -- cgit v1.2.3