aboutsummaryrefslogtreecommitdiff
path: root/node_modules/webpack/lib/ProvidePlugin.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/ProvidePlugin.js
parent003fb34971cf63466184351b4db5f7c67df4f444 (diff)
update packages
Diffstat (limited to 'node_modules/webpack/lib/ProvidePlugin.js')
-rw-r--r--node_modules/webpack/lib/ProvidePlugin.js141
1 files changed, 86 insertions, 55 deletions
diff --git a/node_modules/webpack/lib/ProvidePlugin.js b/node_modules/webpack/lib/ProvidePlugin.js
index fff352a4b..b09d8c864 100644
--- a/node_modules/webpack/lib/ProvidePlugin.js
+++ b/node_modules/webpack/lib/ProvidePlugin.js
@@ -1,55 +1,86 @@
-/*
- MIT License http://www.opensource.org/licenses/mit-license.php
- Author Tobias Koppers @sokra
-*/
-"use strict";
-
-const ParserHelpers = require("./ParserHelpers");
-const ConstDependency = require("./dependencies/ConstDependency");
-
-const NullFactory = require("./NullFactory");
-
-class ProvidePlugin {
- constructor(definitions) {
- this.definitions = definitions;
- }
-
- apply(compiler) {
- const definitions = this.definitions;
- compiler.plugin("compilation", (compilation, params) => {
- compilation.dependencyFactories.set(ConstDependency, new NullFactory());
- compilation.dependencyTemplates.set(ConstDependency, new ConstDependency.Template());
- params.normalModuleFactory.plugin("parser", (parser, parserOptions) => {
- Object.keys(definitions).forEach(name => {
- var request = [].concat(definitions[name]);
- var splittedName = name.split(".");
- if(splittedName.length > 0) {
- splittedName.slice(1).forEach((_, i) => {
- const name = splittedName.slice(0, i + 1).join(".");
- parser.plugin(`can-rename ${name}`, ParserHelpers.approve);
- });
- }
- parser.plugin(`expression ${name}`, function(expr) {
- let nameIdentifier = name;
- const scopedName = name.indexOf(".") >= 0;
- let expression = `require(${JSON.stringify(request[0])})`;
- if(scopedName) {
- nameIdentifier = `__webpack_provided_${name.replace(/\./g, "_dot_")}`;
- }
- if(request.length > 1) {
- expression += request.slice(1).map(r => `[${JSON.stringify(r)}]`).join("");
- }
- if(!ParserHelpers.addParsedVariableToModule(this, nameIdentifier, expression)) {
- return false;
- }
- if(scopedName) {
- ParserHelpers.toConstantDependency(nameIdentifier).bind(this)(expr);
- }
- return true;
- });
- });
- });
- });
- }
-}
-module.exports = ProvidePlugin;
+/*
+ MIT License http://www.opensource.org/licenses/mit-license.php
+ Author Tobias Koppers @sokra
+*/
+"use strict";
+
+const ParserHelpers = require("./ParserHelpers");
+const ConstDependency = require("./dependencies/ConstDependency");
+
+const NullFactory = require("./NullFactory");
+
+class ProvidePlugin {
+ constructor(definitions) {
+ this.definitions = definitions;
+ }
+
+ apply(compiler) {
+ const definitions = this.definitions;
+ compiler.hooks.compilation.tap(
+ "ProvidePlugin",
+ (compilation, { normalModuleFactory }) => {
+ compilation.dependencyFactories.set(ConstDependency, new NullFactory());
+ compilation.dependencyTemplates.set(
+ ConstDependency,
+ new ConstDependency.Template()
+ );
+ const handler = (parser, parserOptions) => {
+ Object.keys(definitions).forEach(name => {
+ var request = [].concat(definitions[name]);
+ var splittedName = name.split(".");
+ if (splittedName.length > 0) {
+ splittedName.slice(1).forEach((_, i) => {
+ const name = splittedName.slice(0, i + 1).join(".");
+ parser.hooks.canRename
+ .for(name)
+ .tap("ProvidePlugin", ParserHelpers.approve);
+ });
+ }
+ parser.hooks.expression.for(name).tap("ProvidePlugin", expr => {
+ let nameIdentifier = name;
+ const scopedName = name.includes(".");
+ let expression = `require(${JSON.stringify(request[0])})`;
+ if (scopedName) {
+ nameIdentifier = `__webpack_provided_${name.replace(
+ /\./g,
+ "_dot_"
+ )}`;
+ }
+ if (request.length > 1) {
+ expression += request
+ .slice(1)
+ .map(r => `[${JSON.stringify(r)}]`)
+ .join("");
+ }
+ if (
+ !ParserHelpers.addParsedVariableToModule(
+ parser,
+ nameIdentifier,
+ expression
+ )
+ ) {
+ return false;
+ }
+ if (scopedName) {
+ ParserHelpers.toConstantDependency(parser, nameIdentifier)(
+ expr
+ );
+ }
+ return true;
+ });
+ });
+ };
+ normalModuleFactory.hooks.parser
+ .for("javascript/auto")
+ .tap("ProvidePlugin", handler);
+ normalModuleFactory.hooks.parser
+ .for("javascript/dynamic")
+ .tap("ProvidePlugin", handler);
+ normalModuleFactory.hooks.parser
+ .for("javascript/esm")
+ .tap("ProvidePlugin", handler);
+ }
+ );
+ }
+}
+module.exports = ProvidePlugin;