aboutsummaryrefslogtreecommitdiff
path: root/node_modules/webpack/lib/dependencies/SystemPlugin.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/SystemPlugin.js
parent003fb34971cf63466184351b4db5f7c67df4f444 (diff)
update packages
Diffstat (limited to 'node_modules/webpack/lib/dependencies/SystemPlugin.js')
-rw-r--r--node_modules/webpack/lib/dependencies/SystemPlugin.js166
1 files changed, 122 insertions, 44 deletions
diff --git a/node_modules/webpack/lib/dependencies/SystemPlugin.js b/node_modules/webpack/lib/dependencies/SystemPlugin.js
index dd457ae7c..0e3419b57 100644
--- a/node_modules/webpack/lib/dependencies/SystemPlugin.js
+++ b/node_modules/webpack/lib/dependencies/SystemPlugin.js
@@ -1,44 +1,122 @@
-/*
- MIT License http://www.opensource.org/licenses/mit-license.php
- Author Tobias Koppers @sokra
-*/
-"use strict";
-const ParserHelpers = require("../ParserHelpers");
-
-class SystemPlugin {
- constructor(options) {
- this.options = options;
- }
-
- apply(compiler) {
- compiler.plugin("compilation", (compilation, params) => {
- params.normalModuleFactory.plugin("parser", (parser, parserOptions) => {
-
- if(typeof parserOptions.system !== "undefined" && !parserOptions.system)
- return;
-
- function setNotSupported(name) {
- parser.plugin("evaluate typeof " + name, ParserHelpers.evaluateToString("undefined"));
- parser.plugin("expression " + name,
- ParserHelpers.expressionIsUnsupported(name + " is not supported by webpack.")
- );
- }
-
- parser.plugin("typeof System.import", ParserHelpers.toConstantDependency(JSON.stringify("function")));
- parser.plugin("evaluate typeof System.import", ParserHelpers.evaluateToString("function"));
- parser.plugin("typeof System", ParserHelpers.toConstantDependency(JSON.stringify("object")));
- parser.plugin("evaluate typeof System", ParserHelpers.evaluateToString("object"));
-
- setNotSupported("System.set");
- setNotSupported("System.get");
- setNotSupported("System.register");
- parser.plugin("expression System", function() {
- const systemPolyfillRequire = ParserHelpers.requireFileAsExpression(
- this.state.module.context, require.resolve("../../buildin/system.js"));
- return ParserHelpers.addParsedVariableToModule(this, "System", systemPolyfillRequire);
- });
- });
- });
- }
-}
-module.exports = SystemPlugin;
+/*
+ MIT License http://www.opensource.org/licenses/mit-license.php
+ Author Tobias Koppers @sokra
+*/
+"use strict";
+
+const ParserHelpers = require("../ParserHelpers");
+const WebpackError = require("../WebpackError");
+
+class SystemPlugin {
+ constructor(options) {
+ this.options = options;
+ }
+
+ apply(compiler) {
+ compiler.hooks.compilation.tap(
+ "SystemPlugin",
+ (compilation, { normalModuleFactory }) => {
+ const handler = (parser, parserOptions) => {
+ if (parserOptions.system !== undefined && !parserOptions.system)
+ return;
+
+ const shouldWarn = parserOptions.system === undefined;
+
+ const setNotSupported = name => {
+ parser.hooks.evaluateTypeof
+ .for(name)
+ .tap("SystemPlugin", ParserHelpers.evaluateToString("undefined"));
+ parser.hooks.expression
+ .for(name)
+ .tap(
+ "SystemPlugin",
+ ParserHelpers.expressionIsUnsupported(
+ parser,
+ name + " is not supported by webpack."
+ )
+ );
+ };
+
+ parser.hooks.typeof
+ .for("System.import")
+ .tap(
+ "SystemPlugin",
+ ParserHelpers.toConstantDependency(
+ parser,
+ JSON.stringify("function")
+ )
+ );
+ parser.hooks.evaluateTypeof
+ .for("System.import")
+ .tap("SystemPlugin", ParserHelpers.evaluateToString("function"));
+ parser.hooks.typeof
+ .for("System")
+ .tap(
+ "SystemPlugin",
+ ParserHelpers.toConstantDependency(
+ parser,
+ JSON.stringify("object")
+ )
+ );
+ parser.hooks.evaluateTypeof
+ .for("System")
+ .tap("SystemPlugin", ParserHelpers.evaluateToString("object"));
+
+ setNotSupported("System.set");
+ setNotSupported("System.get");
+ setNotSupported("System.register");
+
+ parser.hooks.expression.for("System").tap("SystemPlugin", () => {
+ const systemPolyfillRequire = ParserHelpers.requireFileAsExpression(
+ parser.state.module.context,
+ require.resolve("../../buildin/system")
+ );
+ return ParserHelpers.addParsedVariableToModule(
+ parser,
+ "System",
+ systemPolyfillRequire
+ );
+ });
+
+ parser.hooks.call.for("System.import").tap("SystemPlugin", expr => {
+ if (shouldWarn) {
+ parser.state.module.warnings.push(
+ new SystemImportDeprecationWarning(
+ parser.state.module,
+ expr.loc
+ )
+ );
+ }
+
+ return parser.hooks.importCall.call(expr);
+ });
+ };
+
+ normalModuleFactory.hooks.parser
+ .for("javascript/auto")
+ .tap("SystemPlugin", handler);
+ normalModuleFactory.hooks.parser
+ .for("javascript/dynamic")
+ .tap("SystemPlugin", handler);
+ }
+ );
+ }
+}
+
+class SystemImportDeprecationWarning extends WebpackError {
+ constructor(module, loc) {
+ super(
+ "System.import() is deprecated and will be removed soon. Use import() instead.\n" +
+ "For more info visit https://webpack.js.org/guides/code-splitting/"
+ );
+
+ this.name = "SystemImportDeprecationWarning";
+
+ this.module = module;
+ this.loc = loc;
+
+ Error.captureStackTrace(this, this.constructor);
+ }
+}
+
+module.exports = SystemPlugin;