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;
 |