ngrx / platform

Reactive State for Angular
https://ngrx.io
Other
7.96k stars 1.95k forks source link

Migration for concatLatestFrom produces garbled code on ng update from 17 to 18 #4406

Closed karptonite closed 2 weeks ago

karptonite commented 2 weeks ago

Which @ngrx/* package(s) are the source of the bug?

schematics

Minimal reproduction of the bug/regression with instructions

When running ng update @ngrx/store from version 17 to 18, the migrations for concatLatestFrom are failing.

concatLatest from imports are added to files that don't use it, added multiple times to other files, in the middle of other import statements, other legit imports are being removed, etc.

In a file that doesn't use concatLatestFrom: before:

import { NgModule } from '@angular/core';
import { EffectsModule } from '@ngrx/effects';

import { AutosizeModule } from '@geek/shared/autosize/autosize.module';
import { SharedModule } from '@geek/shared/shared.module';
import { FeedbackEffects } from '@geek/store/feedback/feedback.effects';

after:

import { NgModule } from '@angular/core';
import { EffectsModule } from '@ngrx/effects';import { EffectsModule } from '@ngrx/effects';import { EffectsModule } from '@ngrx/effects';import { EffectsModule } from '@ngrx/effects';
import { concatLatestFrom } from '@ngrx/operators';
import { concatLatestFrom } from '@ngrx/operators';
import { concatLatestFrom } from '@ngrx/operators';
import { concatLatestFrom } from '@ngrx/operators';

import { Autoimport { EffectsModule } from '@ngrx/effects';import { EffectsModule } from '@ngrx/effects';import { concatLatestFrom } from '@ngrx/operators';
limport { concatLatestFrom } from '@ngrx/operators';
e';
import import { EffectsModule } from '@ngrx/effects';/import { concatLatestFrom } from '@ngrx/operators';
feedback.effects';

In a file that uses concatLatestFrom: before:

import { Injectable } from '@angular/core';
import { Actions, concatLatestFrom, createEffect, ofType } from '@ngrx/effects';
import { Store } from '@ngrx/store';
import { catchError, filter, map, merge, mergeMap, of } from 'rxjs';

import * as fromRoot from '@geek/store/reducers';
import { UsersService } from '@geek/store/users/users.service';

after:

import { Injectable } from '@angular/core'import { EffectsModule } from '@ngrx/effects';import { EffectsModule } from '@ngrx/effects';import { EffectsModule } from '@ngrx/effects';import { EffectsModule } from '@ngrx/effects';import { EffectsModule } from '@ngrx/effects';import { EffectsModule } from '@ngrx/effects';import { EffectsModule } from '@ngrx/effects';import { EffectsModule } from '@ngrx/effects';import { EffectsModule } from '@ngrx/effects';import { EffectsModule } from '@ngrx/effects';import { EffectsModule } from '@ngrx/effects';import { EffectsModule } from '@ngrx/effects';import { EffectsModule } from '@ngrx/effects';import { EffectsModule } from '@ngrx/effects';import { EffectsModule } from '@ngrx/effects';import { EffectsModule } from '@ngrx/effects';import { EffectsModule } from '@ngrx/effects';import { EffectsModule } from '@ngrx/effects';import { Actions, createEffect, ofType } from '@ngrx/effects';import { Actions, createEffect, ofType } from '@ngrx/effects';import { concatLatestFrom } from '@ngrx/operators';
import { concatLatestFrom } from '@ngrx/operators';
import { concatLatestFrom } from '@ngrx/operators';
import { concatLatestFrom } from '@ngrx/operators';
import { concatLatestFrom } from '@ngrx/operators';
import { concatLatestFrom } from '@ngrx/operators';
import { concatLatestFrom } from '@ngrx/operators';
import { concatLatestFrom } from '@ngrx/operators';
import { concatLatestFrom } from '@ngrx/operators';
 import { concatLatestFrom } from '@ngrx/operators';
'@geek/store/users/users.service';

Expected behavior

The imports are expected to be correctly updated.

Versions of NgRx, Angular, Node, affected browser(s) and operating system(s)

NgRX 17.11 -> 18.0.0 Angular: 18.0.4 Node: 18.20.3 OS: MacOS Sonoma 14.5

Other information

No response

I would be willing to submit a PR to fix this issue

rainerhahnekamp commented 2 weeks ago

@karptonite sorry for that. There is already a bugfix available which will be included in the next release: #4402

karptonite commented 2 weeks ago

Ah, no problem. I looked for issues, but didn't search the pull requests.