@@ -3209,10 +3209,17 @@ function logloads(loads) {
3209
3209
return output . join ( '' ) . replace ( / ^ \/ / , input . charAt ( 0 ) === '/' ? '/' : '' ) ;
3210
3210
}
3211
3211
3212
+ var doubleSlash = / ^ \/ \/ / ;
3213
+
3212
3214
function toAbsoluteURL ( inBase , inHref ) {
3213
3215
var href = inHref ;
3214
3216
var base = inBase
3215
3217
3218
+ if ( doubleSlash . test ( inHref ) ) {
3219
+ // Default to http
3220
+ return 'http:' + inHref ;
3221
+ }
3222
+
3216
3223
if ( isWindows )
3217
3224
href = href . replace ( / \\ / g, '/' ) ;
3218
3225
@@ -3283,28 +3290,49 @@ function logloads(loads) {
3283
3290
}
3284
3291
}
3285
3292
else if ( typeof require != 'undefined' ) {
3286
- var fs , fourOhFourFS = / E N O E N T / ;
3293
+ var fs , http , https , fourOhFourFS = / E N O E N T / ;
3287
3294
fetchTextFromURL = function ( rawUrl , fulfill , reject ) {
3288
- if ( rawUrl . substr ( 0 , 5 ) != 'file:' )
3289
- throw 'Only file URLs of the form file: allowed running in Node.' ;
3290
- fs = fs || require ( 'fs' ) ;
3291
- var url = rawUrl . substr ( 5 ) ;
3292
- if ( isWindows )
3293
- url = url . replace ( / \/ / g, '\\' ) ;
3294
- return fs . readFile ( url , function ( err , data ) {
3295
- if ( err ) {
3296
- // Mark this error as a 404, so that the npm extension
3297
- // will know to retry.
3298
- if ( fourOhFourFS . test ( err . message ) ) {
3299
- err . statusCode = 404 ;
3300
- err . url = rawUrl ;
3301
- }
3295
+ if ( rawUrl . substr ( 0 , 5 ) === 'file:' ) {
3296
+ fs = fs || require ( 'fs' ) ;
3297
+ var url = rawUrl . substr ( 5 ) ;
3298
+ if ( isWindows )
3299
+ url = url . replace ( / \/ / g, '\\' ) ;
3300
+ return fs . readFile ( url , function ( err , data ) {
3301
+ if ( err ) {
3302
+ // Mark this error as a 404, so that the npm extension
3303
+ // will know to retry.
3304
+ if ( fourOhFourFS . test ( err . message ) ) {
3305
+ err . statusCode = 404 ;
3306
+ err . url = rawUrl ;
3307
+ }
3302
3308
3303
- return reject ( err ) ;
3304
- } else {
3305
- fulfill ( data + '' ) ;
3306
- }
3307
- } ) ;
3309
+ return reject ( err ) ;
3310
+ } else {
3311
+ fulfill ( data + '' ) ;
3312
+ }
3313
+ } ) ;
3314
+ } else if ( rawUrl . substr ( 0 , 4 ) === 'http' ) {
3315
+ var h ;
3316
+ if ( rawUrl . substr ( 0 , 6 ) === 'https:' ) {
3317
+ h = https = https || require ( 'https' ) ;
3318
+ } else {
3319
+ h = http = http || require ( 'http' ) ;
3320
+ }
3321
+ return h . get ( rawUrl , function ( res ) {
3322
+ if ( res . statusCode !== 200 ) {
3323
+ reject ( new Error ( 'Request failed. Status: ' + res . statusCode ) ) ;
3324
+ } else {
3325
+ var rawData = "" ;
3326
+ res . setEncoding ( "utf8" ) ;
3327
+ res . on ( "data" , function ( chunk ) {
3328
+ rawData += chunk ;
3329
+ } ) ;
3330
+ res . on ( "end" , function ( ) {
3331
+ fulfill ( rawData ) ;
3332
+ } ) ;
3333
+ }
3334
+ } )
3335
+ }
3308
3336
}
3309
3337
}
3310
3338
else if ( typeof fetch === 'function' ) {
@@ -3437,11 +3465,11 @@ function logloads(loads) {
3437
3465
dotdots = i ;
3438
3466
}
3439
3467
3440
- for ( var j = i ; j < segments . length ; j ++ ) {
3468
+ /* for (var j = i; j < segments.length; j++) {
3441
3469
var segment = segments[j];
3442
3470
if (segment == '' || segment == '.' || segment == '..')
3443
3471
throw new TypeError('Illegal module name "' + name + '"');
3444
- }
3472
+ }*/
3445
3473
3446
3474
if ( ! rel )
3447
3475
return name ;
0 commit comments