diff --git a/utils.js b/utils.js index 81920e7..0205a47 100644 --- a/utils.js +++ b/utils.js @@ -48,11 +48,15 @@ var fetchAndCacheTarballCmd = [ 'cd $packageTarballDir; tar -xzf package.tgz package/package.json', ].join( ';' ); -exports.fetchAndCacheMetadata = function ( packageName, cacheFile ){ - var packageCacheDir = path.dirname( cacheFile ); + +function encodePackageName( packageName ){ //handle slash in scoped package name but do not convert @ - packageName = encodeURIComponent(packageName).replace(/^%40/, '@'); + return encodeURIComponent(packageName).replace(/^%40/, '@'); +} +exports.fetchAndCacheMetadata = function ( packageName, cacheFile ){ + var packageCacheDir = path.dirname( cacheFile ); + packageName = encodePackageName( packageName ); return exec( fetchAndCacheMetadataCmd, { packageCacheDir: packageCacheDir, REGISTRY_NAME: REGISTRY_NAME, @@ -62,8 +66,7 @@ exports.fetchAndCacheMetadata = function ( packageName, cacheFile ){ }; exports.fetchAndCacheTarball = function ( packageName, version, tarballPath ){ - //handle slash in scoped package name but do not convert @ - packageName = encodeURIComponent(packageName).replace(/^%40/, '@'); + packageName = encodePackageName( packageName ); var tarballUrl = 'http://' + REGISTRY_NAME + '/' + packageName + '/-/' + packageName + '-' + version + '.tgz'; var packageTarballDir = path.dirname( tarballPath );