aboutsummaryrefslogtreecommitdiff
path: root/node_modules/webpack/lib/dependencies/ContextDependencyHelpers.js
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2018-09-20 02:56:13 +0200
committerFlorian Dold <florian.dold@gmail.com>2018-09-20 02:56:13 +0200
commitbbff7403fbf46f9ad92240ac213df8d30ef31b64 (patch)
treec58400ec5124da1c7d56b01aea83309f80a56c3b /node_modules/webpack/lib/dependencies/ContextDependencyHelpers.js
parent003fb34971cf63466184351b4db5f7c67df4f444 (diff)
update packages
Diffstat (limited to 'node_modules/webpack/lib/dependencies/ContextDependencyHelpers.js')
-rw-r--r--node_modules/webpack/lib/dependencies/ContextDependencyHelpers.js248
1 files changed, 177 insertions, 71 deletions
diff --git a/node_modules/webpack/lib/dependencies/ContextDependencyHelpers.js b/node_modules/webpack/lib/dependencies/ContextDependencyHelpers.js
index 412cee701..2dabc3345 100644
--- a/node_modules/webpack/lib/dependencies/ContextDependencyHelpers.js
+++ b/node_modules/webpack/lib/dependencies/ContextDependencyHelpers.js
@@ -1,71 +1,177 @@
-/*
- 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;
- }
-};
+/*
+ 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
+ * @returns {string} Escaped string
+ */
+const quotemeta = str => {
+ return str.replace(/[-[\]\\/{}()*+?.^$|]/g, "\\$&");
+};
+
+const splitContextFromPrefix = prefix => {
+ const idx = prefix.lastIndexOf("/");
+ let context = ".";
+ if (idx >= 0) {
+ context = prefix.substr(0, idx);
+ prefix = `.${prefix.substr(idx)}`;
+ }
+ return {
+ context,
+ prefix
+ };
+};
+
+const splitQueryFromPostfix = postfix => {
+ const idx = postfix.indexOf("?");
+ let query = "";
+ if (idx >= 0) {
+ query = postfix.substr(idx);
+ postfix = postfix.substr(0, idx);
+ }
+ return {
+ postfix,
+ query
+ };
+};
+
+ContextDependencyHelpers.create = (
+ Dep,
+ range,
+ param,
+ expr,
+ options,
+ contextOptions
+) => {
+ if (param.isTemplateString()) {
+ let prefixRaw = param.quasis[0].string;
+ let postfixRaw =
+ param.quasis.length > 1
+ ? param.quasis[param.quasis.length - 1].string
+ : "";
+ const prefixRange = [param.quasis[0].range[0], param.quasis[0].range[1]];
+ const postfixRange =
+ param.quasis.length > 1
+ ? param.quasis[param.quasis.length - 1].range
+ : "";
+ const valueRange = param.range;
+ const { context, prefix } = splitContextFromPrefix(prefixRaw);
+ const { postfix, query } = splitQueryFromPostfix(postfixRaw);
+ // If there are more than two quasis, maybe the generated RegExp can be more precise?
+ const regExp = new RegExp(
+ `^${quotemeta(prefix)}${options.wrappedContextRegExp.source}${quotemeta(
+ postfix
+ )}$`
+ );
+ const dep = new Dep(
+ Object.assign(
+ {
+ request: context + query,
+ recursive: options.wrappedContextRecursive,
+ regExp,
+ mode: "sync"
+ },
+ contextOptions
+ ),
+ range,
+ valueRange
+ );
+ dep.loc = expr.loc;
+ const replaces = [];
+ if (prefixRange && prefix !== prefixRaw) {
+ replaces.push({
+ range: prefixRange,
+ value: prefix
+ });
+ }
+ if (postfixRange && postfix !== postfixRaw) {
+ replaces.push({
+ range: postfixRange,
+ value: postfix
+ });
+ }
+ dep.replaces = replaces;
+ 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()))
+ ) {
+ let prefixRaw =
+ param.prefix && param.prefix.isString() ? param.prefix.string : "";
+ let postfixRaw =
+ param.postfix && param.postfix.isString() ? param.postfix.string : "";
+ const prefixRange =
+ param.prefix && param.prefix.isString() ? param.prefix.range : null;
+ const postfixRange =
+ param.postfix && param.postfix.isString() ? param.postfix.range : null;
+ const valueRange = param.range;
+ const { context, prefix } = splitContextFromPrefix(prefixRaw);
+ const { postfix, query } = splitQueryFromPostfix(postfixRaw);
+ const regExp = new RegExp(
+ `^${quotemeta(prefix)}${options.wrappedContextRegExp.source}${quotemeta(
+ postfix
+ )}$`
+ );
+ const dep = new Dep(
+ Object.assign(
+ {
+ request: context + query,
+ recursive: options.wrappedContextRecursive,
+ regExp,
+ mode: "sync"
+ },
+ contextOptions
+ ),
+ range,
+ valueRange
+ );
+ dep.loc = expr.loc;
+ const replaces = [];
+ if (prefixRange && prefix !== prefixRaw) {
+ replaces.push({
+ range: prefixRange,
+ value: JSON.stringify(prefix)
+ });
+ }
+ if (postfixRange && postfix !== postfixRaw) {
+ replaces.push({
+ range: postfixRange,
+ value: JSON.stringify(postfix)
+ });
+ }
+ dep.replaces = replaces;
+ dep.critical =
+ options.wrappedContextCritical &&
+ "a part of the request of a dependency is an expression";
+ return dep;
+ } else {
+ const dep = new Dep(
+ Object.assign(
+ {
+ request: options.exprContextRequest,
+ recursive: options.exprContextRecursive,
+ regExp: options.exprContextRegExp,
+ mode: "sync"
+ },
+ contextOptions
+ ),
+ range,
+ param.range
+ );
+ dep.loc = expr.loc;
+ dep.critical =
+ options.exprContextCritical &&
+ "the request of a dependency is an expression";
+ return dep;
+ }
+};