145 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			145 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/*
 | 
						|
	MIT License http://www.opensource.org/licenses/mit-license.php
 | 
						|
	Author Tobias Koppers @sokra
 | 
						|
*/
 | 
						|
var ResolverFactory = require("./ResolverFactory");
 | 
						|
 | 
						|
var NodeJsInputFileSystem = require("./NodeJsInputFileSystem");
 | 
						|
var CachedInputFileSystem = require("./CachedInputFileSystem");
 | 
						|
 | 
						|
var nodeFileSystem = new CachedInputFileSystem(new NodeJsInputFileSystem(), 4000);
 | 
						|
 | 
						|
var nodeContext = {
 | 
						|
	environments: [
 | 
						|
		"node+es3+es5+process+native"
 | 
						|
	]
 | 
						|
};
 | 
						|
 | 
						|
var asyncResolver = ResolverFactory.createResolver({
 | 
						|
	extensions: [".js", ".json", ".node"],
 | 
						|
	fileSystem: nodeFileSystem
 | 
						|
});
 | 
						|
module.exports = function resolve(context, path, request, callback) {
 | 
						|
	if(typeof context === "string") {
 | 
						|
		callback = request;
 | 
						|
		request = path;
 | 
						|
		path = context;
 | 
						|
		context = nodeContext;
 | 
						|
	}
 | 
						|
	asyncResolver.resolve(context, path, request, callback);
 | 
						|
};
 | 
						|
 | 
						|
var syncResolver = ResolverFactory.createResolver({
 | 
						|
	extensions: [".js", ".json", ".node"],
 | 
						|
	useSyncFileSystemCalls: true,
 | 
						|
	fileSystem: nodeFileSystem
 | 
						|
});
 | 
						|
module.exports.sync = function resolveSync(context, path, request) {
 | 
						|
	if(typeof context === "string") {
 | 
						|
		request = path;
 | 
						|
		path = context;
 | 
						|
		context = nodeContext;
 | 
						|
	}
 | 
						|
	return syncResolver.resolveSync(context, path, request);
 | 
						|
};
 | 
						|
 | 
						|
var asyncContextResolver = ResolverFactory.createResolver({
 | 
						|
	extensions: [".js", ".json", ".node"],
 | 
						|
	resolveToContext: true,
 | 
						|
	fileSystem: nodeFileSystem
 | 
						|
});
 | 
						|
module.exports.context = function resolveContext(context, path, request, callback) {
 | 
						|
	if(typeof context === "string") {
 | 
						|
		callback = request;
 | 
						|
		request = path;
 | 
						|
		path = context;
 | 
						|
		context = nodeContext;
 | 
						|
	}
 | 
						|
	asyncContextResolver.resolve(context, path, request, callback);
 | 
						|
};
 | 
						|
 | 
						|
var syncContextResolver = ResolverFactory.createResolver({
 | 
						|
	extensions: [".js", ".json", ".node"],
 | 
						|
	resolveToContext: true,
 | 
						|
	useSyncFileSystemCalls: true,
 | 
						|
	fileSystem: nodeFileSystem
 | 
						|
});
 | 
						|
module.exports.context.sync = function resolveContextSync(context, path, request) {
 | 
						|
	if(typeof context === "string") {
 | 
						|
		request = path;
 | 
						|
		path = context;
 | 
						|
		context = nodeContext;
 | 
						|
	}
 | 
						|
	return syncContextResolver.resolveSync(context, path, request);
 | 
						|
};
 | 
						|
 | 
						|
var asyncLoaderResolver = ResolverFactory.createResolver({
 | 
						|
	extensions: [".js", ".json", ".node"],
 | 
						|
	moduleExtensions: ["-loader"],
 | 
						|
	mainFields: ["loader", "main"],
 | 
						|
	fileSystem: nodeFileSystem
 | 
						|
});
 | 
						|
module.exports.loader = function resolveLoader(context, path, request, callback) {
 | 
						|
	if(typeof context === "string") {
 | 
						|
		callback = request;
 | 
						|
		request = path;
 | 
						|
		path = context;
 | 
						|
		context = nodeContext;
 | 
						|
	}
 | 
						|
	asyncLoaderResolver.resolve(context, path, request, callback);
 | 
						|
};
 | 
						|
 | 
						|
var syncLoaderResolver = ResolverFactory.createResolver({
 | 
						|
	extensions: [".js", ".json", ".node"],
 | 
						|
	moduleExtensions: ["-loader"],
 | 
						|
	mainFields: ["loader", "main"],
 | 
						|
	useSyncFileSystemCalls: true,
 | 
						|
	fileSystem: nodeFileSystem
 | 
						|
});
 | 
						|
module.exports.loader.sync = function resolveLoaderSync(context, path, request) {
 | 
						|
	if(typeof context === "string") {
 | 
						|
		request = path;
 | 
						|
		path = context;
 | 
						|
		context = nodeContext;
 | 
						|
	}
 | 
						|
	return syncLoaderResolver.resolveSync(context, path, request);
 | 
						|
};
 | 
						|
 | 
						|
module.exports.create = function create(options) {
 | 
						|
	options = Object.assign({
 | 
						|
		fileSystem: nodeFileSystem
 | 
						|
	}, options);
 | 
						|
	var resolver = ResolverFactory.createResolver(options);
 | 
						|
	return function(context, path, request, callback) {
 | 
						|
		if(typeof context === "string") {
 | 
						|
			callback = request;
 | 
						|
			request = path;
 | 
						|
			path = context;
 | 
						|
			context = nodeContext;
 | 
						|
		}
 | 
						|
		resolver.resolve(context, path, request, callback);
 | 
						|
	};
 | 
						|
};
 | 
						|
 | 
						|
module.exports.create.sync = function createSync(options) {
 | 
						|
	options = Object.assign({
 | 
						|
		useSyncFileSystemCalls: true,
 | 
						|
		fileSystem: nodeFileSystem
 | 
						|
	}, options);
 | 
						|
	var resolver = ResolverFactory.createResolver(options);
 | 
						|
	return function(context, path, request) {
 | 
						|
		if(typeof context === "string") {
 | 
						|
			request = path;
 | 
						|
			path = context;
 | 
						|
			context = nodeContext;
 | 
						|
		}
 | 
						|
		return resolver.resolveSync(context, path, request);
 | 
						|
	};
 | 
						|
};
 | 
						|
 | 
						|
// Export Resolver, FileSystems and Plugins
 | 
						|
module.exports.ResolverFactory = ResolverFactory;
 | 
						|
 | 
						|
module.exports.NodeJsInputFileSystem = NodeJsInputFileSystem;
 | 
						|
module.exports.CachedInputFileSystem = CachedInputFileSystem;
 |