UNPKG

4.84 kBJavaScriptView Raw
1/*
2 MIT License http://www.opensource.org/licenses/mit-license.php
3 Author Tobias Koppers @sokra
4*/
5"use strict";
6
7const ResolverFactory = require("./ResolverFactory");
8
9const NodeJsInputFileSystem = require("./NodeJsInputFileSystem");
10const CachedInputFileSystem = require("./CachedInputFileSystem");
11
12const nodeFileSystem = new CachedInputFileSystem(new NodeJsInputFileSystem(), 4000);
13
14const nodeContext = {
15 environments: [
16 "node+es3+es5+process+native"
17 ]
18};
19
20const asyncResolver = ResolverFactory.createResolver({
21 extensions: [".js", ".json", ".node"],
22 fileSystem: nodeFileSystem
23});
24module.exports = function resolve(context, path, request, resolveContext, callback) {
25 if(typeof context === "string") {
26 callback = resolveContext;
27 resolveContext = request;
28 request = path;
29 path = context;
30 context = nodeContext;
31 }
32 if(typeof callback !== "function") {
33 callback = resolveContext;
34 }
35 asyncResolver.resolve(context, path, request, resolveContext, callback);
36};
37
38const syncResolver = ResolverFactory.createResolver({
39 extensions: [".js", ".json", ".node"],
40 useSyncFileSystemCalls: true,
41 fileSystem: nodeFileSystem
42});
43module.exports.sync = function resolveSync(context, path, request) {
44 if(typeof context === "string") {
45 request = path;
46 path = context;
47 context = nodeContext;
48 }
49 return syncResolver.resolveSync(context, path, request);
50};
51
52const asyncContextResolver = ResolverFactory.createResolver({
53 extensions: [".js", ".json", ".node"],
54 resolveToContext: true,
55 fileSystem: nodeFileSystem
56});
57module.exports.context = function resolveContext(context, path, request, resolveContext, callback) {
58 if(typeof context === "string") {
59 callback = resolveContext;
60 resolveContext = request;
61 request = path;
62 path = context;
63 context = nodeContext;
64 }
65 if(typeof callback !== "function") {
66 callback = resolveContext;
67 }
68 asyncContextResolver.resolve(context, path, request, resolveContext, callback);
69};
70
71const syncContextResolver = ResolverFactory.createResolver({
72 extensions: [".js", ".json", ".node"],
73 resolveToContext: true,
74 useSyncFileSystemCalls: true,
75 fileSystem: nodeFileSystem
76});
77module.exports.context.sync = function resolveContextSync(context, path, request) {
78 if(typeof context === "string") {
79 request = path;
80 path = context;
81 context = nodeContext;
82 }
83 return syncContextResolver.resolveSync(context, path, request);
84};
85
86const asyncLoaderResolver = ResolverFactory.createResolver({
87 extensions: [".js", ".json", ".node"],
88 moduleExtensions: ["-loader"],
89 mainFields: ["loader", "main"],
90 fileSystem: nodeFileSystem
91});
92module.exports.loader = function resolveLoader(context, path, request, resolveContext, callback) {
93 if(typeof context === "string") {
94 callback = resolveContext;
95 resolveContext = request;
96 request = path;
97 path = context;
98 context = nodeContext;
99 }
100 if(typeof callback !== "function") {
101 callback = resolveContext;
102 }
103 asyncLoaderResolver.resolve(context, path, request, resolveContext, callback);
104};
105
106const syncLoaderResolver = ResolverFactory.createResolver({
107 extensions: [".js", ".json", ".node"],
108 moduleExtensions: ["-loader"],
109 mainFields: ["loader", "main"],
110 useSyncFileSystemCalls: true,
111 fileSystem: nodeFileSystem
112});
113module.exports.loader.sync = function resolveLoaderSync(context, path, request) {
114 if(typeof context === "string") {
115 request = path;
116 path = context;
117 context = nodeContext;
118 }
119 return syncLoaderResolver.resolveSync(context, path, request);
120};
121
122module.exports.create = function create(options) {
123 options = Object.assign({
124 fileSystem: nodeFileSystem
125 }, options);
126 const resolver = ResolverFactory.createResolver(options);
127 return function(context, path, request, resolveContext, callback) {
128 if(typeof context === "string") {
129 callback = resolveContext;
130 resolveContext = request;
131 request = path;
132 path = context;
133 context = nodeContext;
134 }
135 if(typeof callback !== "function") {
136 callback = resolveContext;
137 }
138 resolver.resolve(context, path, request, resolveContext, callback);
139 };
140};
141
142module.exports.create.sync = function createSync(options) {
143 options = Object.assign({
144 useSyncFileSystemCalls: true,
145 fileSystem: nodeFileSystem
146 }, options);
147 const resolver = ResolverFactory.createResolver(options);
148 return function(context, path, request) {
149 if(typeof context === "string") {
150 request = path;
151 path = context;
152 context = nodeContext;
153 }
154 return resolver.resolveSync(context, path, request);
155 };
156};
157
158// Export Resolver, FileSystems and Plugins
159module.exports.ResolverFactory = ResolverFactory;
160
161module.exports.NodeJsInputFileSystem = NodeJsInputFileSystem;
162module.exports.CachedInputFileSystem = CachedInputFileSystem;