2018-07-16 03:49:56 -04:00
|
|
|
/**
|
|
|
|
* @license
|
2020-05-19 15:08:49 -04:00
|
|
|
* Copyright Google LLC All Rights Reserved.
|
2018-07-16 03:49:56 -04:00
|
|
|
*
|
|
|
|
* 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
|
|
|
|
*/
|
2020-04-17 09:19:31 -04:00
|
|
|
import {NodeJSFileSystem, setFileSystem} from '../src/ngtsc/file_system';
|
2018-07-16 03:49:56 -04:00
|
|
|
|
2020-04-13 08:25:49 -04:00
|
|
|
import {mainNgcc} from './src/main';
|
2020-05-12 03:19:59 -04:00
|
|
|
import {AsyncNgccOptions, SyncNgccOptions} from './src/ngcc_options';
|
2020-04-06 03:30:08 -04:00
|
|
|
|
2020-05-14 15:06:12 -04:00
|
|
|
export {ConsoleLogger, Logger, LogLevel} from '../src/ngtsc/logging';
|
2020-06-03 12:18:46 -04:00
|
|
|
export {AsyncNgccOptions, clearTsConfigCache, NgccOptions, SyncNgccOptions} from './src/ngcc_options';
|
2020-04-29 14:28:29 -04:00
|
|
|
export {PathMappings} from './src/path_mappings';
|
2019-03-20 09:47:59 -04:00
|
|
|
|
2020-05-12 03:19:59 -04:00
|
|
|
export function process<T extends AsyncNgccOptions|SyncNgccOptions>(options: T):
|
|
|
|
T extends AsyncNgccOptions ? Promise<void>: void;
|
|
|
|
export function process(options: AsyncNgccOptions|SyncNgccOptions): void|Promise<void> {
|
2020-04-17 09:19:31 -04:00
|
|
|
setFileSystem(new NodeJSFileSystem());
|
refactor(ngcc): add support for asynchronous execution (#32427)
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
2019-08-19 15:58:22 -04:00
|
|
|
return mainNgcc(options);
|
2019-05-15 08:38:19 -04:00
|
|
|
}
|