Skip to content

Commit f962a1f

Browse files
FatmeFatme
Fatme
authored and
Fatme
committed
Merge pull request #347 from NativeScript/fatme/use-npm-view-instead-http
Use npm view to get latest version instead request to npmjs.org
2 parents 4eb74d1 + 526a9fb commit f962a1f

File tree

2 files changed

+15
-20
lines changed

2 files changed

+15
-20
lines changed

lib/node-package-manager.ts

Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -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);

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "nativescript",
33
"preferGlobal": true,
4-
"version": "0.9.3",
4+
"version": "0.9.4",
55
"author": "Telerik <[email protected]>",
66
"description": "Command-line interface for building NativeScript projects",
77
"bin": {

0 commit comments

Comments
 (0)