Previously, `ngcc`'s programmatic API would run and complete synchronously. This was necessary for specific usecases (such as how the `@angular/cli` invokes `ngcc` as part of the TypeScript module resolution process), but not for others (e.g. running `ivy-ngcc` as a `postinstall` script). This commit adds a new option (`async`) that enables turning on asynchronous execution. I.e. it signals that the caller is OK with the function call to complete asynchronously, which allows `ngcc` to potentially run in a more efficient mode. Currently, there is no difference in the way tasks are executed in sync vs async mode, but this change sets the ground for adding new execution options (that require asynchronous operation), such as processing tasks in parallel on multiple processes. NOTE: When using the programmatic API, the default value for `async` is `false`, thus retaining backwards compatibility. When running `ngcc` from the command line (i.e. via the `ivy-ngcc` script), it runs in async mode (to be able to take advantage of future optimizations), but that is transparent to the caller. PR Close #32427
23 lines
961 B
TypeScript
23 lines
961 B
TypeScript
/**
|
|
* @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 {CachedFileSystem, NodeJSFileSystem, setFileSystem} from '../src/ngtsc/file_system';
|
|
|
|
import {AsyncNgccOptions, NgccOptions, SyncNgccOptions, mainNgcc} from './src/main';
|
|
export {ConsoleLogger, LogLevel} from './src/logging/console_logger';
|
|
export {Logger} from './src/logging/logger';
|
|
export {AsyncNgccOptions, NgccOptions, SyncNgccOptions} from './src/main';
|
|
export {PathMappings} from './src/utils';
|
|
|
|
export function process(options: AsyncNgccOptions): Promise<void>;
|
|
export function process(options: SyncNgccOptions): void;
|
|
export function process(options: NgccOptions): void|Promise<void> {
|
|
// Recreate the file system on each call to reset the cache
|
|
setFileSystem(new CachedFileSystem(new NodeJSFileSystem()));
|
|
return mainNgcc(options);
|
|
}
|