From f222f839bd13c83501fd375eb68f3efb7bee201e Mon Sep 17 00:00:00 2001 From: Sean Perkins Date: Thu, 25 Jan 2024 16:04:13 -0500 Subject: [PATCH 1/2] fix: migrate root Ionic module without config --- ...0003-migrate-bootstrap-application.test.ts | 61 +++++++++++++++++++ .../0003-migrate-bootstrap-application.ts | 6 +- 2 files changed, 64 insertions(+), 3 deletions(-) diff --git a/packages/cli/src/angular/migrations/standalone/0003-migrate-bootstrap-application.test.ts b/packages/cli/src/angular/migrations/standalone/0003-migrate-bootstrap-application.test.ts index 5c45a32..a79b7a3 100644 --- a/packages/cli/src/angular/migrations/standalone/0003-migrate-bootstrap-application.test.ts +++ b/packages/cli/src/angular/migrations/standalone/0003-migrate-bootstrap-application.test.ts @@ -116,4 +116,65 @@ describe("migrateBootstrapApplication", () => { `), ); }); + + it("should migrate IonicModule.forRoot without explicit config", async () => { + const project = new Project({ useInMemoryFileSystem: true }); + + const main = dedent(` + import { enableProdMode, importProvidersFrom } from '@angular/core'; + import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; + + + import { environment } from './environments/environment'; + import { AppComponent } from './app/app.component'; + import { AppRoutingModule } from './app/app-routing.module'; + import { BrowserModule, bootstrapApplication } from '@angular/platform-browser'; + import { IonicRouteStrategy, IonicModule } from '@ionic/angular'; + import { RouteReuseStrategy } from '@angular/router'; + + if (environment.production) { + enableProdMode(); + } + + bootstrapApplication(AppComponent, { + providers: [ + importProvidersFrom(BrowserModule, IonicModule.forRoot(), AppRoutingModule), + { provide: RouteReuseStrategy, useClass: IonicRouteStrategy } + ] + }) + .catch(err => console.log(err)); + `); + + const mainSourceFile = project.createSourceFile("src/main.ts", main); + + await migrateBootstrapApplication(project, { dryRun: false }); + + expect(dedent(mainSourceFile.getText())).toBe( + dedent(` + import { enableProdMode, importProvidersFrom } from '@angular/core'; + import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; + + + import { environment } from './environments/environment'; + import { AppComponent } from './app/app.component'; + import { AppRoutingModule } from './app/app-routing.module'; + import { BrowserModule, bootstrapApplication } from '@angular/platform-browser'; + import { IonicRouteStrategy, provideIonicAngular } from '@ionic/angular/standalone'; + import { RouteReuseStrategy } from '@angular/router'; + + if (environment.production) { + enableProdMode(); + } + + bootstrapApplication(AppComponent, { + providers: [ + importProvidersFrom(BrowserModule, AppRoutingModule), + { provide: RouteReuseStrategy, useClass: IonicRouteStrategy }, + provideIonicAngular({}) + ] + }) + .catch(err => console.log(err)); + `), + ); + }); }); diff --git a/packages/cli/src/angular/migrations/standalone/0003-migrate-bootstrap-application.ts b/packages/cli/src/angular/migrations/standalone/0003-migrate-bootstrap-application.ts index 0279b7d..0f52aa0 100644 --- a/packages/cli/src/angular/migrations/standalone/0003-migrate-bootstrap-application.ts +++ b/packages/cli/src/angular/migrations/standalone/0003-migrate-bootstrap-application.ts @@ -129,9 +129,9 @@ export const migrateBootstrapApplication = async ( const ionicConfigObjectLiteralExpression = importProvidersFromFunctionCallIonicModuleForRootCallExpressionArguments[0]; - providersArray.addElement( - `provideIonicAngular(${ionicConfigObjectLiteralExpression.getText()})`, - ); + const ionicConfig = ionicConfigObjectLiteralExpression?.getText() ?? "{}"; + + providersArray.addElement(`provideIonicAngular(${ionicConfig})`); // Remove the IonicModule.forRoot from the importProvidersFrom function call. importProvidersFromFunctionCall.removeArgument( From cca1c82ac60b51c63b98006caef1034f03941173 Mon Sep 17 00:00:00 2001 From: Sean Perkins Date: Thu, 25 Jan 2024 16:04:23 -0500 Subject: [PATCH 2/2] chore: improve error messages --- packages/cli/src/index.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/cli/src/index.ts b/packages/cli/src/index.ts index 89e8fc9..8973372 100644 --- a/packages/cli/src/index.ts +++ b/packages/cli/src/index.ts @@ -96,9 +96,10 @@ async function main() { dir: cli.dir, spinner: s, }); - } catch (e: any) { + } catch (e) { s.stop("An error occurred during the migration.", 1); - log.error(e.message); + const error = e as Error; + log.error(error.stack ?? error.message); } outro(