| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 | 
							- /*
 
- 	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;
 
 
  |