@@ -73,53 +73,58 @@ class CommonJsRequireDependencyParserPlugin {
7373 parser . state . current . addDependency ( dep ) ;
7474 return true ;
7575 } ) ;
76- parser . hooks . call
77- . for ( "require" )
78- . tap ( "CommonJsRequireDependencyParserPlugin" , expr => {
79- if ( expr . arguments . length !== 1 ) return ;
80- let localModule ;
81- const param = parser . evaluateExpression ( expr . arguments [ 0 ] ) ;
82- if ( param . isConditional ( ) ) {
83- let isExpression = false ;
84- const prevLength = parser . state . current . dependencies . length ;
85- const dep = new RequireHeaderDependency ( expr . callee . range ) ;
86- dep . loc = expr . loc ;
87- parser . state . current . addDependency ( dep ) ;
88- for ( const p of param . options ) {
89- const result = processItem ( expr , p ) ;
90- if ( result === undefined ) {
91- isExpression = true ;
92- }
93- }
94- if ( isExpression ) {
95- parser . state . current . dependencies . length = prevLength ;
96- } else {
97- return true ;
76+
77+ const createHandler = callNew => expr => {
78+ if ( expr . arguments . length !== 1 ) return ;
79+ let localModule ;
80+ const param = parser . evaluateExpression ( expr . arguments [ 0 ] ) ;
81+ if ( param . isConditional ( ) ) {
82+ let isExpression = false ;
83+ const prevLength = parser . state . current . dependencies . length ;
84+ const dep = new RequireHeaderDependency ( expr . callee . range ) ;
85+ dep . loc = expr . loc ;
86+ parser . state . current . addDependency ( dep ) ;
87+ for ( const p of param . options ) {
88+ const result = processItem ( expr , p ) ;
89+ if ( result === undefined ) {
90+ isExpression = true ;
9891 }
9992 }
100- if (
101- param . isString ( ) &&
102- ( localModule = LocalModulesHelpers . getLocalModule (
103- parser . state ,
104- param . string
105- ) )
106- ) {
107- const dep = new LocalModuleDependency ( localModule , expr . range ) ;
108- dep . loc = expr . loc ;
109- parser . state . current . addDependency ( dep ) ;
110- return true ;
93+ if ( isExpression ) {
94+ parser . state . current . dependencies . length = prevLength ;
11195 } else {
112- const result = processItem ( expr , param ) ;
113- if ( result === undefined ) {
114- processContext ( expr , param ) ;
115- } else {
116- const dep = new RequireHeaderDependency ( expr . callee . range ) ;
117- dep . loc = expr . loc ;
118- parser . state . current . addDependency ( dep ) ;
119- }
12096 return true ;
12197 }
122- } ) ;
98+ }
99+ if (
100+ param . isString ( ) &&
101+ ( localModule = LocalModulesHelpers . getLocalModule (
102+ parser . state ,
103+ param . string
104+ ) )
105+ ) {
106+ const dep = new LocalModuleDependency ( localModule , expr . range , callNew ) ;
107+ dep . loc = expr . loc ;
108+ parser . state . current . addDependency ( dep ) ;
109+ return true ;
110+ } else {
111+ const result = processItem ( expr , param ) ;
112+ if ( result === undefined ) {
113+ processContext ( expr , param ) ;
114+ } else {
115+ const dep = new RequireHeaderDependency ( expr . callee . range ) ;
116+ dep . loc = expr . loc ;
117+ parser . state . current . addDependency ( dep ) ;
118+ }
119+ return true ;
120+ }
121+ } ;
122+ parser . hooks . call
123+ . for ( "require" )
124+ . tap ( "CommonJsRequireDependencyParserPlugin" , createHandler ( false ) ) ;
125+ parser . hooks . new
126+ . for ( "require" )
127+ . tap ( "CommonJsRequireDependencyParserPlugin" , createHandler ( true ) ) ;
123128 }
124129}
125130module . exports = CommonJsRequireDependencyParserPlugin ;
0 commit comments