33 Author Tobias Koppers @sokra
44*/
55"use strict" ;
6+
67const ParserHelpers = require ( "../ParserHelpers" ) ;
8+ const WebpackError = require ( "../WebpackError" ) ;
79
810class SystemPlugin {
911 constructor ( options ) {
@@ -18,6 +20,8 @@ class SystemPlugin {
1820 if ( typeof parserOptions . system !== "undefined" && ! parserOptions . system )
1921 return ;
2022
23+ const shouldWarn = typeof parserOptions . system === "undefined" ;
24+
2125 const setNotSupported = name => {
2226 parser . hooks . evaluateTypeof . for ( name ) . tap ( "SystemPlugin" , ParserHelpers . evaluateToString ( "undefined" ) ) ;
2327 parser . hooks . expression . for ( name ) . tap ( "SystemPlugin" ,
@@ -39,11 +43,35 @@ class SystemPlugin {
3943 parser . state . module . context , require . resolve ( "../../buildin/system.js" ) ) ;
4044 return ParserHelpers . addParsedVariableToModule ( parser , "System" , systemPolyfillRequire ) ;
4145 } ) ;
46+
47+ parser . hooks . call . for ( "System.import" ) . tap ( "SystemPlugin" , expr => {
48+ if ( shouldWarn ) {
49+ parser . state . module . warnings . push ( new SystemImportDeprecationWarning ( parser . state . module , expr . loc ) ) ;
50+ }
51+
52+ return parser . hooks . importCall . call ( expr ) ;
53+ } ) ;
4254 } ;
4355
4456 normalModuleFactory . hooks . parser . for ( "javascript/auto" ) . tap ( "SystemPlugin" , handler ) ;
4557 normalModuleFactory . hooks . parser . for ( "javascript/dynamic" ) . tap ( "SystemPlugin" , handler ) ;
4658 } ) ;
4759 }
4860}
61+
62+ class SystemImportDeprecationWarning extends WebpackError {
63+ constructor ( module , loc ) {
64+ super ( ) ;
65+
66+ this . name = "SystemImportDeprecationWarning" ;
67+ this . message = "System.import() is deprecated and will be removed soon. Use import() instead.\n" +
68+ "For more info visit https://webpack.js.org/guides/code-splitting/" ;
69+
70+ this . origin = this . module = module ;
71+ this . originLoc = loc ;
72+
73+ Error . captureStackTrace ( this , this . constructor ) ;
74+ }
75+ }
76+
4977module . exports = SystemPlugin ;
0 commit comments