angular/packages/compiler-cli/ngcc/test
George Kalpakas 07ea6cf582 fix(ngcc): avoid error due to circular dependency in EsmDependencyHost (#34512)
Previously, there was circular dependency between `ngcc/src/utils.ts`,
`ngcc/src/dependencies/dependency_host.ts` and
`ngcc/src/dependencies/esm_dependency_host.ts`. More specifically,
`utils.ts` would [import from `esm_dependency_host.ts`][1], which would
[import from `dependency_host.ts`][2], which would in turn
[import from `utils.ts`][3].

This might be fine in some environments/module formats, but it can cause
unclear errors in the transpiled CommonJS/UMD format (given how Node.js
handles [cycles in module resolution][4]).
(An example error can be found [here][5].)

This commit fixes the problem by moving the code that depends on
`EsmDependencyHost` out of `utils.ts` and into a dedicated file under
`dependencies/`. It also converts the `createDtsDependencyHost()`
function to a class for consistency with the rest of the
`DependencyHost`s.

[1]: https://github.com/angular/angular/blob/18d89c9c8/packages/compiler-cli/ngcc/src/utils.ts#L10
[2]: https://github.com/angular/angular/blob/18d89c9c8/packages/compiler-cli/ngcc/src/dependencies/esm_dependency_host.ts#L10
[3]: https://github.com/angular/angular/blob/18d89c9c8/packages/compiler-cli/ngcc/src/dependencies/dependency_host.ts#L9
[4]: https://nodejs.org/api/modules.html#modules_cycles
[5]: https://circleci.com/gh/angular/angular/577581

PR Close #34512
2020-01-08 15:00:50 -08:00
..
analysis refactor(ngcc): remove private declaration aliases (#34254) 2019-12-18 11:25:01 -08:00
dependencies fix(ngcc): avoid error due to circular dependency in EsmDependencyHost (#34512) 2020-01-08 15:00:50 -08:00
entry_point_finder fix(ngcc): avoid error due to circular dependency in EsmDependencyHost (#34512) 2020-01-08 15:00:50 -08:00
execution refactor(ngcc): add debug messages to help with debugging in parallel mode (#34437) 2019-12-17 11:39:18 -08:00
helpers refactor(ngcc): store whether to render legacy i18n message ids in the bundle (#34135) 2019-12-03 10:15:53 -08:00
host fix(ngcc): recognize re-exports with require() calls in UMD (#34512) 2020-01-08 15:00:49 -08:00
integration refactor(ngcc): slightly improve the info in error messages (#34254) 2019-12-18 11:25:01 -08:00
logging feat(compiler-cli): ngcc - make logging more configurable (#29591) 2019-04-01 11:53:28 -07:00
migrations feat(ivy): error in ivy when inheriting a ctor from an undecorated base (#34460) 2019-12-18 15:04:49 -08:00
packages test(ngcc): cleanup entry-point bundle testcases (#34415) 2019-12-16 07:45:36 -08:00
rendering fix(ngcc): do not add trailing commas in UMD imports (#34545) 2020-01-07 10:42:06 -08:00
writing refactor(ngcc): abstract updating package.json files behind an interface (#32427) 2019-09-09 15:55:13 -04:00
BUILD.bazel fix(ngcc): do not emit ES2015 code in ES5 files (#33514) 2019-11-13 13:49:31 -08:00
utils_spec.ts refactor(ngcc): use a special map for memoizing expensive-to-compute values (#34512) 2020-01-08 15:00:50 -08:00