From 2afb9b6877a227f01a698b2bfcdda92f2b723a15 Mon Sep 17 00:00:00 2001 From: Admin Phil Date: Wed, 28 Jun 2023 17:00:25 +0100 Subject: [PATCH] Added support for scoped packages --- app.js | 24 ++++++++++++++++++++++++ utils.js | 5 ++++- 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/app.js b/app.js index 3e428a7..4101758 100644 --- a/app.js +++ b/app.js @@ -81,6 +81,30 @@ app.get( '/:package/-/:tarball', function( req, res, next ){ .catch( next ); }); +app.get( '/:scope/:package/-/:tarball', function( req, res, next ){ + var scopeName = req.params.scope; + var packageName = req.params.package; + var version = req.params.tarball.match( new RegExp( packageName + '-(.*).tgz') )[1]; + var packagePath = [ NPM_PATH , scopeName + "/" + packageName, version, 'package.tgz'].join( '/' ); + + fileExists( packagePath ) + .tap( function( isExists ){ + if( !isExists ){ + if ( !ENABLE_NPM_FAILOVER ) { + res._log.cacheHit = '!!!'; + return Promise.reject( { status: 404 }); + } + res._log.cacheHit = '---'; + return fetchAndCacheTarball( packageName, version, packagePath, scopeName ); + } + }) + .then( function( ){ + res._log.cacheFile = packagePath; + return res.sendFile( packagePath ); + }) + .catch( next ); +}); + // catch 404 and forward to error handler app.use(function(req, res, next) { diff --git a/utils.js b/utils.js index 9137248..9c74648 100644 --- a/utils.js +++ b/utils.js @@ -85,10 +85,13 @@ exports.fetchAndCacheMetadata = function ( packageName, cacheFile ){ }); }; -exports.fetchAndCacheTarball = function ( packageName, version, tarballPath ){ +exports.fetchAndCacheTarball = function ( packageName, version, tarballPath, scopeName ){ packageName = encodePackageName( packageName ); var tarballUrl = 'http://' + REGISTRY_NAME + '/' + packageName + '/-/' + packageName + '-' + version + '.tgz'; + if (scopeName) { + tarballUrl = 'http://' + REGISTRY_NAME + '/' + scopeName + '/' + packageName + '/-/' + packageName + '-' + version + '.tgz'; + } var packageTarballDir = path.dirname( tarballPath ); return exec( fetchAndCacheTarballCmd, {