@@ -164,10 +164,8 @@ var module = (function () {
164
164
} ;
165
165
}
166
166
167
- function findModulePath ( id , dirs ) {
168
- process . assert ( Array . isArray ( dirs ) ) ;
169
-
170
- var nextLoc = traverser ( id , id . charAt ( 0 ) === '/' ? [ '' ] : dirs ) ;
167
+ function findModulePath ( request , paths ) {
168
+ var nextLoc = traverser ( request , request . charAt ( 0 ) === '/' ? [ '' ] : paths ) ;
171
169
172
170
var fs = requireNative ( 'fs' ) ;
173
171
@@ -181,7 +179,10 @@ var module = (function () {
181
179
182
180
183
181
// sync - no i/o performed
184
- function resolveModulePath ( request , parent ) {
182
+ function resolveModuleLookupPaths ( request , parent ) {
183
+
184
+ if ( natives [ request ] ) return [ request , [ ] ] ;
185
+
185
186
var start = request . substring ( 0 , 2 ) ;
186
187
if ( start !== "./" && start !== ".." ) {
187
188
return [ request , modulePaths ] ;
@@ -207,18 +208,33 @@ var module = (function () {
207
208
function loadModule ( request , parent ) {
208
209
debug ( "loadModule REQUEST " + ( request ) + " parent: " + parent . id ) ;
209
210
211
+ var resolved = resolveModuleFilename ( request , parent ) ;
212
+ var id = resolved [ 0 ] ;
213
+ var filename = resolved [ 1 ] ;
214
+
210
215
// With natives id === request
211
216
// We deal with these first
212
- var cachedNative = internalModuleCache [ request ] ;
217
+ var cachedNative = internalModuleCache [ id ] ;
213
218
if ( cachedNative ) {
214
219
return cachedNative . exports ;
215
220
}
216
- if ( natives [ request ] ) {
221
+ if ( natives [ id ] ) {
217
222
debug ( 'load native module ' + request ) ;
218
- return loadNative ( request ) . exports ;
223
+ return loadNative ( id ) . exports ;
219
224
}
220
225
221
- var resolvedModule = resolveModulePath ( request , parent ) ,
226
+ var cachedModule = moduleCache [ filename ] ;
227
+ if ( cachedModule ) return cachedModule . exports ;
228
+
229
+ var module = new Module ( id , parent ) ;
230
+ moduleCache [ filename ] = module ;
231
+ module . load ( filename ) ;
232
+ return module . exports ;
233
+ } ;
234
+
235
+ function resolveModuleFilename ( request , parent ) {
236
+ if ( natives [ request ] ) return [ request , request ] ;
237
+ var resolvedModule = resolveModuleLookupPaths ( request , parent ) ,
222
238
id = resolvedModule [ 0 ] ,
223
239
paths = resolvedModule [ 1 ] ;
224
240
@@ -228,15 +244,8 @@ var module = (function () {
228
244
if ( ! filename ) {
229
245
throw new Error ( "Cannot find module '" + request + "'" ) ;
230
246
}
231
-
232
- var cachedModule = moduleCache [ filename ] ;
233
- if ( cachedModule ) return cachedModule . exports ;
234
-
235
- var module = new Module ( id , parent ) ;
236
- moduleCache [ filename ] = module ;
237
- module . load ( filename ) ;
238
- return module . exports ;
239
- } ;
247
+ return [ id , filename ] ;
248
+ }
240
249
241
250
242
251
Module . prototype . load = function ( filename ) {
@@ -262,6 +271,9 @@ var module = (function () {
262
271
return loadModule ( path , self ) ;
263
272
}
264
273
274
+ require . resolve = function ( request ) {
275
+ return resolveModuleFilename ( request , self ) [ 1 ] ;
276
+ }
265
277
require . paths = modulePaths ;
266
278
require . main = process . mainModule ;
267
279
// Enable support to add extra extension types
0 commit comments