@@ -18,7 +18,6 @@ export class NodePackageManager implements INodePackageManager {
1818
1919 constructor ( private $logger : ILogger ,
2020 private $errors : IErrors ,
21- private $httpClient : Server . IHttpClient ,
2221 private $fs : IFileSystem ,
2322 private $lockfile : ILockFile ) {
2423 this . versionsCache = { } ;
@@ -73,11 +72,20 @@ export class NodePackageManager implements INodePackageManager {
7372 }
7473
7574 public getLatestVersion ( packageName : string ) : IFuture < string > {
76- return ( ( ) => {
77- var versions = this . getAvailableVersions ( packageName ) . wait ( ) ;
78- versions = _ . sortBy ( versions , ( ver : string ) => { return ver ; } ) ;
79- return versions . reverse ( ) [ 0 ] ;
80- } ) . future < string > ( ) ( ) ;
75+ var future = new Future < string > ( ) ;
76+
77+ npm . commands [ "view" ] ( [ packageName , "dist-tags" ] , [ false ] , ( err : any , data : any ) => { // [false] - silent
78+ if ( err ) {
79+ future . throw ( err ) ;
80+ } else {
81+ var latestVersion = _ . first ( _ . keys ( data ) ) ;
82+ this . $logger . trace ( "Using version %s. " , latestVersion ) ;
83+
84+ future . return ( latestVersion ) ;
85+ }
86+ } ) ;
87+
88+ return future ;
8189 }
8290
8391 public getCachedPackagePath ( packageName : string , version : string ) : string {
@@ -166,18 +174,5 @@ export class NodePackageManager implements INodePackageManager {
166174 } ) ;
167175 return future ;
168176 }
169-
170- private getAvailableVersions ( packageName : string ) : IFuture < string [ ] > {
171- return ( ( ) => {
172- if ( ! this . versionsCache [ packageName ] ) {
173- var url = NodePackageManager . NPM_REGISTRY_URL + packageName ;
174- var response = this . $httpClient . httpRequest ( url ) . wait ( ) . body ;
175- var json = JSON . parse ( response ) ;
176- this . versionsCache [ packageName ] = _ . keys ( json . versions ) ;
177- }
178-
179- return this . versionsCache [ packageName ] ;
180- } ) . future < string [ ] > ( ) ( ) ;
181- }
182177}
183178$injector . register ( "npm" , NodePackageManager ) ;
0 commit comments