typescript - Angular 13 med RxJS 7: Hur migrerar man $obs.toPromise() till lastValueFrom($obs) med ett skript?


Jag migrerar ett Angular 12-projekt till Angular 13. Angular 13 levereras med RxJS 7. RxJS 7 har föråldrat $obs.toPromise() till förmån för lastValueFrom($obs).

Tyvärr har jag massor av $obs.toPromise() och jag letar efter ett praktiskt och tidsbesparande sätt att göra migreringen.

Finns det ett migreringsskript?

Ser i princip ut:

import * as fs from 'fs';
import * as glob from 'glob';

const files = glob.sync(`/**/*.ts`);
files.forEach(file => {
    let fileContent = fs.readFileSync(file, 'utf-8');
    if( fileContent.includes('toPromise()') ){
        fileContent = fileContent.replace(/await\s(.*)\.toPromise\(\)/gm, 'await lastValueFrom($1)');
        if( fileContent.includes('lastValueFrom') ){
          fileContent = 'import { lastValueFrom } from \'rxjs\';' + '\n' + fileContent;
          fs.writeFileSync(file, fileContent, 'utf-8');
        }
      }
    f
});