Skip to content

Commit b4b4f2d

Browse files
committed
fix: update nativescript-angular during app migration as we are updating the compiler-cli from dev-webpack
1 parent b04ff39 commit b4b4f2d

File tree

2 files changed

+33
-43
lines changed

2 files changed

+33
-43
lines changed

lib/controllers/migrate-controller.ts

Lines changed: 33 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,15 @@ Running this command will ${MigrateController.COMMON_MIGRATE_MESSAGE}`;
7070
{ packageName: "kinvey-nativescript-sdk", verifiedVersion: "4.2.1" },
7171
{ packageName: "nativescript-plugin-firebase", verifiedVersion: "9.0.2" },
7272
{ packageName: "nativescript-vue", verifiedVersion: "2.3.0" },
73+
{
74+
packageName: "nativescript-angular", verifiedVersion: "8.0.2",
75+
shouldMigrateAction: async (projectData: IProjectData, allowInvalidVersions: boolean) => {
76+
const dependency = { packageName: "nativescript-angular", verifiedVersion: "8.0.2", isDev: false };
77+
const result = this.hasDependency(dependency, projectData) && await this.shouldMigrateDependencyVersion(dependency, projectData, allowInvalidVersions);
78+
return result;
79+
},
80+
migrateAction: this.migrateNativeScriptAngular.bind(this)
81+
},
7382
{ packageName: "nativescript-permissions", verifiedVersion: "1.3.0" },
7483
{ packageName: "nativescript-cardview", verifiedVersion: "3.2.0" },
7584
{
@@ -81,7 +90,7 @@ Running this command will ${MigrateController.COMMON_MIGRATE_MESSAGE}`;
8190
},
8291
migrateAction: this.migrateUnitTestRunner.bind(this)
8392
},
84-
{ packageName: MigrateController.typescriptPackageName, isDev: true, getVerifiedVersion: this.getAngularTypeScriptVersion.bind(this) },
93+
{ packageName: MigrateController.typescriptPackageName, isDev: true, verifiedVersion: "3.4.5" },
8594
{ packageName: "nativescript-localize", verifiedVersion: "4.2.0" },
8695
{ packageName: "nativescript-dev-babel", verifiedVersion: "0.2.1" },
8796
{ packageName: "nativescript-nfc", verifiedVersion: "4.0.1" }
@@ -179,31 +188,6 @@ Running this command will ${MigrateController.COMMON_MIGRATE_MESSAGE}`;
179188
}
180189
}
181190

182-
private async getAngularTypeScriptVersion(projectData: IProjectData): Promise<string> {
183-
let verifiedVersion = "3.4.1";
184-
try {
185-
const ngcPackageName = "@angular/compiler-cli";
186-
// e.g. ~8.0.0
187-
let ngcVersion = projectData.dependencies[ngcPackageName] || projectData.devDependencies[ngcPackageName];
188-
if (ngcVersion) {
189-
// e.g. 8.0.3
190-
ngcVersion = await this.$packageInstallationManager.maxSatisfyingVersion(ngcPackageName, ngcVersion);
191-
const ngcManifest = await this.getPackageManifest(ngcPackageName, ngcVersion);
192-
// e.g. >=3.4 <3.5
193-
verifiedVersion = (ngcManifest && ngcManifest.peerDependencies &&
194-
ngcManifest.peerDependencies[MigrateController.typescriptPackageName]) || verifiedVersion;
195-
196-
// e.g. 3.4.4
197-
verifiedVersion = await this.$packageInstallationManager.maxSatisfyingVersion(
198-
MigrateController.typescriptPackageName, verifiedVersion);
199-
}
200-
} catch (error) {
201-
this.$logger.warn(`Unable to determine the TypeScript version based on the Angular packages. Error is: '${error}'.`);
202-
}
203-
204-
return verifiedVersion;
205-
}
206-
207191
private async migrateOldAndroidAppResources(projectData: IProjectData, backupDir: string) {
208192
const appResourcesPath = projectData.getAppResourcesDirectoryPath();
209193
if (!this.$androidResourcesMigrationService.hasMigrated(appResourcesPath)) {
@@ -329,33 +313,23 @@ Running this command will ${MigrateController.COMMON_MIGRATE_MESSAGE}`;
329313
this.$errors.failWithoutHelp("Failed to find replacement dependency.");
330314
}
331315

332-
const replacementDepVersion = await this.getDependencyVerifiedVersion(replacementDep, projectData);
333316
this.$logger.info(`Replacing '${dependency.packageName}' with '${replacementDep.packageName}'.`);
334-
this.$pluginsService.addToPackageJson(replacementDep.packageName, replacementDepVersion, replacementDep.isDev, projectData.projectDir);
317+
this.$pluginsService.addToPackageJson(replacementDep.packageName, replacementDep.verifiedVersion, replacementDep.isDev, projectData.projectDir);
335318
}
336319

337320
return;
338321
}
339322

340-
const dependencyVersion = await this.getDependencyVerifiedVersion(dependency, projectData);
341323
if (hasDependency && await this.shouldMigrateDependencyVersion(dependency, projectData, allowInvalidVersions)) {
342-
this.$logger.info(`Updating '${dependency.packageName}' to compatible version '${dependencyVersion}'`);
343-
this.$pluginsService.addToPackageJson(dependency.packageName, dependencyVersion, dependency.isDev, projectData.projectDir);
324+
this.$logger.info(`Updating '${dependency.packageName}' to compatible version '${dependency.verifiedVersion}'`);
325+
this.$pluginsService.addToPackageJson(dependency.packageName, dependency.verifiedVersion, dependency.isDev, projectData.projectDir);
344326
return;
345327
}
346328

347329
if (!hasDependency && dependency.shouldAddIfMissing) {
348-
this.$logger.info(`Adding '${dependency.packageName}' with version '${dependencyVersion}'`);
349-
this.$pluginsService.addToPackageJson(dependency.packageName, dependencyVersion, dependency.isDev, projectData.projectDir);
350-
}
351-
}
352-
353-
private async getDependencyVerifiedVersion(dependency: IMigrationDependency, projectData: IProjectData): Promise<string> {
354-
if (!dependency.verifiedVersion && dependency.getVerifiedVersion) {
355-
dependency.verifiedVersion = await dependency.getVerifiedVersion(projectData);
330+
this.$logger.info(`Adding '${dependency.packageName}' with version '${dependency.verifiedVersion}'`);
331+
this.$pluginsService.addToPackageJson(dependency.packageName, dependency.verifiedVersion, dependency.isDev, projectData.projectDir);
356332
}
357-
358-
return dependency.verifiedVersion;
359333
}
360334

361335
private async shouldMigrateDependencyVersion(dependency: IMigrationDependency, projectData: IProjectData, allowInvalidVersions: boolean): Promise<boolean> {
@@ -364,7 +338,7 @@ Running this command will ${MigrateController.COMMON_MIGRATE_MESSAGE}`;
364338
const packageName = dependency.packageName;
365339
const referencedVersion = dependencies[packageName] || devDependencies[packageName];
366340
const installedVersion = await this.getMaxDependencyVersion(dependency.packageName, referencedVersion);
367-
const requiredVersion = await this.getDependencyVerifiedVersion(dependency, projectData);
341+
const requiredVersion = dependency.verifiedVersion;
368342

369343
return this.isOutdatedVersion(installedVersion, requiredVersion, allowInvalidVersions);
370344
}
@@ -410,6 +384,23 @@ Running this command will ${MigrateController.COMMON_MIGRATE_MESSAGE}`;
410384

411385
return dependencies;
412386
}
387+
388+
private async migrateNativeScriptAngular(): Promise<IMigrationDependency[]> {
389+
const dependencies = [
390+
{ packageName: "@angular/platform-browser-dynamic", verifiedVersion: "8.0.0", shouldAddIfMissing: true },
391+
{ packageName: "@angular/common", verifiedVersion: "8.0.0", shouldAddIfMissing: true },
392+
{ packageName: "@angular/compiler", verifiedVersion: "8.0.0", shouldAddIfMissing: true },
393+
{ packageName: "@angular/core", verifiedVersion: "8.0.0", shouldAddIfMissing: true },
394+
{ packageName: "@angular/forms", verifiedVersion: "8.0.0", shouldAddIfMissing: true },
395+
{ packageName: "@angular/http", verifiedVersion: "8.0.0-beta.10", shouldAddIfMissing: true },
396+
{ packageName: "@angular/platform-browser", verifiedVersion: "8.0.0", shouldAddIfMissing: true },
397+
{ packageName: "@angular/router", verifiedVersion: "8.0.0", shouldAddIfMissing: true },
398+
{ packageName: "rxjs", verifiedVersion: "6.3.3", shouldAddIfMissing: true },
399+
{ packageName: "zone.js", verifiedVersion: "0.9.1", shouldAddIfMissing: true }
400+
];
401+
402+
return dependencies;
403+
}
413404
}
414405

415406
$injector.register("migrateController", MigrateController);

lib/definitions/migrate.d.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ interface IMigrationDependency extends IDependency {
1919
replaceWith?: string;
2020
warning?: string;
2121
verifiedVersion?: string;
22-
getVerifiedVersion?: (projectData: IProjectData) => Promise<string>;
2322
shouldAddIfMissing?: boolean;
2423
shouldMigrateAction?: (projectData: IProjectData, allowInvalidVersions: boolean) => Promise<boolean>;
2524
migrateAction?: (projectData: IProjectData, migrationBackupDirPath: string) => Promise<IMigrationDependency[]>;

0 commit comments

Comments
 (0)