mirror of https://github.com/webpack/webpack.git
				
				
				
			
		
			
				
	
	
		
			113 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			113 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
/*
 | 
						|
	MIT License http://www.opensource.org/licenses/mit-license.php
 | 
						|
	Author Tobias Koppers @sokra
 | 
						|
*/
 | 
						|
var Dependency = require("../Dependency");
 | 
						|
var Module = require("../Module");
 | 
						|
var RawSource = require("webpack-core/lib/RawSource");
 | 
						|
 | 
						|
 | 
						|
 | 
						|
function NodeNativeDependency(request, range) {
 | 
						|
	Dependency.call(this);
 | 
						|
	this.Class = NodeNativeDependency;
 | 
						|
	this.userRequest = request;
 | 
						|
	this.request = request;
 | 
						|
	this.range = range;
 | 
						|
}
 | 
						|
 | 
						|
NodeNativeDependency.prototype = Object.create(Dependency.prototype);
 | 
						|
NodeNativeDependency.prototype.type = "native module";
 | 
						|
 | 
						|
NodeNativeDependency.prototype.isEqualResource = function isEqualResource(other) {
 | 
						|
	if(!(other instanceof NodeNativeDependency))
 | 
						|
		return false;
 | 
						|
	return this.request == other.request;
 | 
						|
};
 | 
						|
 | 
						|
NodeNativeDependency.Template = require("../dependencies/ModuleDependencyTemplateAsRequireId");
 | 
						|
 | 
						|
 | 
						|
 | 
						|
function NodeNativeCommonJsDependency(request, range) {
 | 
						|
	NodeNativeDependency.call(this, request, range);
 | 
						|
	this.Class = NodeNativeCommonJsDependency;
 | 
						|
}
 | 
						|
 | 
						|
NodeNativeCommonJsDependency.prototype = Object.create(NodeNativeDependency.prototype);
 | 
						|
NodeNativeCommonJsDependency.Template = require("../dependencies/ModuleDependencyTemplateAsId");
 | 
						|
 | 
						|
 | 
						|
 | 
						|
function NodeNativeModule(request) {
 | 
						|
	Module.call(this);
 | 
						|
	this.request = request;
 | 
						|
	this.built = false;
 | 
						|
	this.cacheable = true;
 | 
						|
}
 | 
						|
NodeNativeModule.prototype = Object.create(Module.prototype);
 | 
						|
 | 
						|
NodeNativeModule.prototype.identifier = NodeNativeModule.prototype.readableIdentifier = function() {
 | 
						|
	return this.request;
 | 
						|
};
 | 
						|
 | 
						|
NodeNativeModule.prototype.build = function(options, compilation, resolver, fs, callback) {callback()};
 | 
						|
 | 
						|
NodeNativeModule.prototype.source = function() {
 | 
						|
	return new RawSource("module.exports = require.parentRequire(" + JSON.stringify(this.request) + ");");
 | 
						|
};
 | 
						|
 | 
						|
NodeNativeModule.prototype.needRebuild = function() {
 | 
						|
	return false;
 | 
						|
};
 | 
						|
 | 
						|
NodeNativeModule.prototype.size = function() {
 | 
						|
	return 42 + this.request.length;
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
 | 
						|
function NodeNativeModuleFactory() {
 | 
						|
}
 | 
						|
NodeNativeModuleFactory.prototype.create = function(context, dependency, callback) {
 | 
						|
	return callback(null, new NodeNativeModule(dependency.request));
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
function NodeTargetPlugin() {
 | 
						|
}
 | 
						|
module.exports = NodeTargetPlugin;
 | 
						|
NodeTargetPlugin.prototype.apply = function(compiler) {
 | 
						|
	compiler.plugin("compilation", function(compilation, params) {
 | 
						|
		compilation.dependencyFactories.set(NodeNativeDependency, new NodeNativeModuleFactory());
 | 
						|
		compilation.dependencyTemplates.set(NodeNativeDependency, new NodeNativeDependency.Template());
 | 
						|
 | 
						|
		compilation.dependencyFactories.set(NodeNativeCommonJsDependency, new NodeNativeModuleFactory());
 | 
						|
		compilation.dependencyTemplates.set(NodeNativeCommonJsDependency, new NodeNativeCommonJsDependency.Template());
 | 
						|
	});
 | 
						|
 | 
						|
	var natives = Object.keys(process.binding("natives"));
 | 
						|
	compiler.parser.plugin("call require:commonjs:item", function(expr, param) {
 | 
						|
		if(param.isString() && natives.indexOf(param.string) >= 0) {
 | 
						|
			var dep = new NodeNativeCommonJsDependency(param.string, param.range);
 | 
						|
			this.state.current.addDependency(dep);
 | 
						|
			return true;
 | 
						|
		}
 | 
						|
	});
 | 
						|
	compiler.parser.plugin("call define:amd:item", function(expr, param) {
 | 
						|
		if(param.isString() && natives.indexOf(param.string) >= 0) {
 | 
						|
			var dep = new NodeNativeDependency(param.string, param.range);
 | 
						|
			this.state.current.addDependency(dep);
 | 
						|
			return true;
 | 
						|
		}
 | 
						|
	});
 | 
						|
	compiler.parser.plugin("call require:amd:item", function(expr, param) {
 | 
						|
		if(param.isString() && natives.indexOf(param.string) >= 0) {
 | 
						|
			var dep = new NodeNativeDependency(param.string, param.range);
 | 
						|
			this.state.current.addDependency(dep);
 | 
						|
			return true;
 | 
						|
		}
 | 
						|
	});
 | 
						|
}; |