From 87b892849ee89469b52ad0b06a3866f95c433e75 Mon Sep 17 00:00:00 2001 From: Yosif Yosifov Date: Mon, 20 Mar 2017 18:14:32 +0200 Subject: [PATCH 1/2] Fix the version selection on init --- lib/declarations.d.ts | 2 +- lib/node-package-manager.ts | 6 ++++-- lib/npm-installation-manager.ts | 4 ++-- lib/services/init-service.ts | 4 ++-- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/lib/declarations.d.ts b/lib/declarations.d.ts index 15d7d76d90..69bbb54362 100644 --- a/lib/declarations.d.ts +++ b/lib/declarations.d.ts @@ -1,7 +1,7 @@ interface INodePackageManager { install(packageName: string, pathToSave: string, config?: any): Promise; uninstall(packageName: string, config?: any, path?: string): Promise; - view(packageName: string, config: any): Promise; + view(packageName: string, config: Object): Promise; search(filter: string[], config: any): Promise; } diff --git a/lib/node-package-manager.ts b/lib/node-package-manager.ts index a6b0dd47dc..597b90d357 100644 --- a/lib/node-package-manager.ts +++ b/lib/node-package-manager.ts @@ -95,8 +95,10 @@ export class NodePackageManager implements INodePackageManager { return this.$childProcess.exec(`npm search ${args.join(" ")}`); } - public async view(packageName: string, config: any): Promise { - let flags = this.getFlagsString(config, false); + public async view(packageName: string, config: Object): Promise { + const wrappedConfig = _.extend({}, config, { json: true }); // always require view response as JSON + + let flags = this.getFlagsString(wrappedConfig, false); let viewResult: any; try { viewResult = await this.$childProcess.exec(`npm view ${packageName} ${flags}`); diff --git a/lib/npm-installation-manager.ts b/lib/npm-installation-manager.ts index efef44a091..d295cec3db 100644 --- a/lib/npm-installation-manager.ts +++ b/lib/npm-installation-manager.ts @@ -26,7 +26,7 @@ export class NpmInstallationManager implements INpmInstallationManager { if (semver.satisfies(latestVersion, cliVersionRange)) { return latestVersion; } - let data = await this.$npm.view(packageName, { json: true, "versions": true }); + let data = await this.$npm.view(packageName, { "versions": true }); return semver.maxSatisfying(data, cliVersionRange) || latestVersion; } @@ -122,7 +122,7 @@ export class NpmInstallationManager implements INpmInstallationManager { * because npm view doens't work with those */ private async getVersion(packageName: string, version: string): Promise { - let data: any = await this.$npm.view(packageName, { json: true, "dist-tags": true }); + let data: any = await this.$npm.view(packageName, { "dist-tags": true }); this.$logger.trace("Using version %s. ", data[version]); return data[version]; diff --git a/lib/services/init-service.ts b/lib/services/init-service.ts index 1dad32e290..f60751fa83 100644 --- a/lib/services/init-service.ts +++ b/lib/services/init-service.ts @@ -106,8 +106,8 @@ export class InitService implements IInitService { return this.buildVersionData(latestVersion); } - let data: any = await this.$npm.view(packageName, "versions"); - let versions = _.filter(data[latestVersion].versions, (version: string) => semver.gte(version, InitService.MIN_SUPPORTED_FRAMEWORK_VERSIONS[packageName])); + let allVersions: any = await this.$npm.view(packageName, { "versions": true }); + let versions = _.filter(allVersions, (version: string) => semver.gte(version, InitService.MIN_SUPPORTED_FRAMEWORK_VERSIONS[packageName])); if (versions.length === 1) { this.$logger.info(`Only ${versions[0]} version is available for ${packageName}.`); return this.buildVersionData(versions[0]); From 59c63b2f1b3df5a553a28b59fc28f0e554012dc7 Mon Sep 17 00:00:00 2001 From: Yosif Yosifov Date: Mon, 20 Mar 2017 18:16:15 +0200 Subject: [PATCH 2/2] Remove trailing space - lint error --- lib/node-package-manager.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node-package-manager.ts b/lib/node-package-manager.ts index 597b90d357..fd863640b4 100644 --- a/lib/node-package-manager.ts +++ b/lib/node-package-manager.ts @@ -97,7 +97,7 @@ export class NodePackageManager implements INodePackageManager { public async view(packageName: string, config: Object): Promise { const wrappedConfig = _.extend({}, config, { json: true }); // always require view response as JSON - + let flags = this.getFlagsString(wrappedConfig, false); let viewResult: any; try {