hunk.code_window:   getAotConfig,
     getCommonConfig,
     getStatsConfig,
     getStylesConfig,
   } from '../angular-cli-files/models/webpack-configs';
   import { readTsconfig } from '../angular-cli-files/utilities/read-tsconfig';
   import { statsErrorsToString, statsWarningsToString } from '../angular-cli-files/utilities/stats';
   import { Schema as BrowserBuilderOptions } from '../browser/schema';
   import { assertCompatibleAngularVersion } from '../utils/version';
  
hunk.labels: keep keep keep keep keep replace keep keep keep
hunk.file_path: packages/angular_devkit/build_angular/src/extract-i18n/index.ts
hunk.type: replace
file: /**
   * @license
   * Copyright Google Inc. All Rights Reserved.
   *
   * Use of this source code is governed by an MIT-style license that can be
   * found in the LICENSE file at https://angular.io/license
   */
  
  import * as path from 'path';
  import * as webpack from 'webpack';
  
  export interface EmittedFiles {
    id?: string;
    name?: string;
    file: string;
    initial: boolean;
    asset?: boolean;
    extension: string;
  }
  
  export function getEmittedFiles(compilation: webpack.compilation.Compilation): EmittedFiles[] {
    const files: EmittedFiles[] = [];
  
    // adds all chunks to the list of emitted files such as lazy loaded modules
    for (const chunk of compilation.chunks as webpack.compilation.Chunk[]) {
      for (const file of chunk.files as string[]) {
        files.push({
          id: chunk.id.toString(),
          name: chunk.name,
          file,
          extension: path.extname(file),
          initial: chunk.isOnlyInitial(),
        });
      }
    }
  
    // other all files
    for (const file of Object.keys(compilation.assets)) {
      files.push({ file, extension: path.extname(file), initial: false, asset: true });
    }
  
    // dedupe
    return files.filter(({ file, name }, index) =>
      files.findIndex(f => f.file === file && (!name || name === f.name)) === index);
  }
  