2013-02-14 00:00:07 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								/ *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									MIT  License  http : //www.opensource.org/licenses/mit-license.php
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Author  Tobias  Koppers  @ sokra 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* /  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  path  =  require ( "path" ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  ModuleAliasPlugin  =  require ( "enhanced-resolve/lib/ModuleAliasPlugin" ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  ModuleParserHelpers  =  require ( "./ModuleParserHelpers" ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  ConstDependency  =  require ( "./dependencies/ConstDependency" ) ;  
						 
					
						
							
								
									
										
										
										
											2013-02-17 05:23:22 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								var  BasicEvaluatedExpression  =  require ( "./BasicEvaluatedExpression" ) ;  
						 
					
						
							
								
									
										
										
										
											2013-10-11 16:42:25 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								var  UnsupportedFeatureWarning  =  require ( "./UnsupportedFeatureWarning" ) ;  
						 
					
						
							
								
									
										
										
										
											2013-02-14 00:00:07 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-12-18 06:21:49 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  NodeStuffPlugin ( options )  {  
						 
					
						
							
								
									
										
										
										
											2013-02-26 20:31:05 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									this . options  =  options ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-02-14 00:00:07 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports  =  NodeStuffPlugin ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								NodeStuffPlugin . prototype . apply  =  function ( compiler )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									function  ignore ( )  {  return  true ;  } 
							 
						 
					
						
							
								
									
										
										
										
											2013-12-18 06:21:49 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									var  context  =  compiler . context ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-05-14 19:55:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( this . options . _ _filename  ==  "mock" )  { 
							 
						 
					
						
							
								
									
										
										
										
											2013-02-26 20:31:05 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										compiler . parser . plugin ( "expression __filename" ,  function ( expr )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											this . state . current . addVariable ( "__filename" ,  JSON . stringify ( "/index.js" ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									}  else  if ( this . options . _ _filename )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										compiler . parser . plugin ( "expression __filename" ,  function ( expr )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											this . state . current . addVariable ( "__filename" ,  JSON . stringify ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												path . relative ( context ,  this . state . module . resource ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2013-02-17 05:23:22 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									compiler . parser . plugin ( "evaluate Identifier __filename" ,  function ( expr )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if ( ! this . state . module )  return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										var  res  =  new  BasicEvaluatedExpression ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										res . setString ( this . state . module . splitQuery ( this . state . module . resource ) [ 0 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										res . setRange ( expr . range ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  res ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-02-26 20:31:05 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( this . options . _ _dirname  ==  "mock" )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										compiler . parser . plugin ( "expression __dirname" ,  function ( expr )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											this . state . current . addVariable ( "__dirname" ,  JSON . stringify ( "/" ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									}  else  if ( this . options . _ _dirname )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										compiler . parser . plugin ( "expression __dirname" ,  function ( expr )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											this . state . current . addVariable ( "__dirname" ,  JSON . stringify ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												path . relative ( context ,  this . state . module . context ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2013-02-17 05:23:22 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									compiler . parser . plugin ( "evaluate Identifier __dirname" ,  function ( expr )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if ( ! this . state . module )  return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										var  res  =  new  BasicEvaluatedExpression ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										res . setString ( this . state . module . context ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										res . setRange ( expr . range ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  res ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-02-14 00:00:07 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									compiler . parser . plugin ( "expression require.main" ,  function ( expr )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										var  dep  =  new  ConstDependency ( "require.cache[0]" ,  expr . range ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										dep . loc  =  expr . loc ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										this . state . current . addDependency ( dep ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-11 16:42:25 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									compiler . parser . plugin ( "expression require.extensions" ,  function ( expr )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if ( ! this . state . module )  return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										this . state . module . warnings . push ( new  UnsupportedFeatureWarning ( this . state . module ,  "require.extensions is not supported by webpack. Use a loader instead." ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-02-14 00:00:07 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									compiler . parser . plugin ( "expression module.exports" ,  ignore ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									compiler . parser . plugin ( "expression module.loaded" ,  ignore ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									compiler . parser . plugin ( "expression module.id" ,  ignore ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-12-18 06:21:49 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									compiler . parser . plugin ( "evaluate Identifier module.hot" ,  function ( expr )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  new  BasicEvaluatedExpression ( ) . setBoolean ( false ) . setRange ( expr . range ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-02-14 00:00:07 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									compiler . parser . plugin ( "expression module" ,  function ( expr )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  ModuleParserHelpers . addParsedVariable ( this ,  "module" ,  "require("  +  JSON . stringify ( path . join ( _ _dirname ,  ".." ,  "buildin" ,  "module.js" ) )  +  ")(module)" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;