hunk.code_window:  * found in the LICENSE file at https://angular.io/license
    */
   /**
    * This uses a dynamic import to load a module which may be ESM.
    * CommonJS code can load ESM code via a dynamic import. Unfortunately, TypeScript
    * will currently, unconditionally downlevel dynamic import into a require call.
  
hunk.labels: keep keep add keep keep keep keep
hunk.after_edit: /**
    * Lazily compiled dynamic import loader function.
    */
   let load: (<T>(modulePath: string | URL) => Promise<T>) | undefined;
  
hunk.file_path: packages/angular_devkit/build_angular/src/utils/load-esm.ts
hunk.type: add
file: import semver from 'semver';
  import { ReleaseConfig } from '@angular/ng-dev';
  import packages from '../lib/packages.js';
  
  const npmPackages = Object.entries(packages.releasePackages).map(([name, { experimental }]) => ({
    name,
    experimental,
  }));
  
  /** Configuration for the `ng-dev release` command. */
  export const release: ReleaseConfig = {
    representativeNpmPackage: '@angular/cli',
    npmPackages,
    buildPackages: async () => {
      // The `performNpmReleaseBuild` function is loaded at runtime to avoid loading additional
      // files and dependencies unless a build is required.
      const { performNpmReleaseBuild } = await import('../scripts/build-packages-dist.mjs');
      return performNpmReleaseBuild();
    },
    prereleaseCheck: async (newVersionStr: string) => {
      const newVersion = new semver.SemVer(newVersionStr);
      const { assertValidDependencyRanges } = await import(
        '../scripts/release-checks/dependency-ranges/index.mjs'
      );
  
      await assertValidDependencyRanges(newVersion, packages.releasePackages);
    },
    releaseNotes: {
      groupOrder: [
        '@angular/cli',
        '@schematics/angular',
        '@angular-devkit/architect-cli',
        '@angular-devkit/schematics-cli',
      ],
    },
    publishRegistry: 'https://wombat-dressing-room.appspot.com',
    releasePrLabels: ['action: merge'],
  };
  