angular/packages/compiler-cli/ngcc/test
JoostK 32ce8b1326 feat(compiler): add dependency info and ng-content selectors to metadata (#35695)
This commit augments the `FactoryDef` declaration of Angular decorated
classes to contain information about the parameter decorators used in
the constructor. If no constructor is present, or none of the parameters
have any Angular decorators, then this will be represented using the
`null` type. Otherwise, a tuple type is used where the entry at index `i`
corresponds with parameter `i`. Each tuple entry can be one of two types:

1. If the associated parameter does not have any Angular decorators,
   the tuple entry will be the `null` type.
2. Otherwise, a type literal is used that may declare at least one of
   the following properties:
   - "attribute": if `@Attribute` is present. The injected attribute's
   name is used as string literal type, or the `unknown` type if the
   attribute name is not a string literal.
   - "self": if `@Self` is present, always of type `true`.
   - "skipSelf": if `@SkipSelf` is present, always of type `true`.
   - "host": if `@Host` is present, always of type `true`.
   - "optional": if `@Optional` is present, always of type `true`.

   A property is only present if the corresponding decorator is used.

   Note that the `@Inject` decorator is currently not included, as it's
   non-trivial to properly convert the token's value expression to a
   type that is valid in a declaration file.

Additionally, the `ComponentDefWithMeta` declaration that is created for
Angular components has been extended to include all selectors on
`ng-content` elements within the component's template.

This additional metadata is useful for tooling such as the Angular
Language Service, as it provides the ability to offer suggestions for
directives/components defined in libraries. At the moment, such
tooling extracts the necessary information from the _metadata.json_
manifest file as generated by ngc, however this metadata representation
is being replaced by the information emitted into the declaration files.

Resolves FW-1870

PR Close #35695
2020-03-24 14:21:42 -07:00
..
analysis fix(ngcc): do not attempt compilation when analysis fails (#34889) 2020-01-23 14:47:03 -08:00
dependencies fix(ngcc): allow deep-import warnings to be ignored (#35683) 2020-02-27 10:48:48 -08:00
entry_point_finder perf(ngcc): use the EntryPointManifest in DirectoryWalkerEntryPointFinder (#35931) 2020-03-11 15:01:59 -07:00
execution fix(ngcc): do not crash on entry-point that fails to compile (#36083) 2020-03-18 15:56:21 -07:00
helpers refactor(ngcc): move locking code into its own folder (#35861) 2020-03-05 18:17:15 -05:00
host fix(ngcc): consistently delegate to TypeScript host for typing files (#36089) 2020-03-17 13:34:04 -07:00
integration feat(compiler): add dependency info and ng-content selectors to metadata (#35695) 2020-03-24 14:21:42 -07:00
locking refactor(ngcc): remove unused LockFileWithSignalHandlers (#35938) 2020-03-12 09:46:18 -07:00
logging refactor(ngcc): expose logging level on the logger (#35861) 2020-03-05 18:17:15 -05: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 refactor(ngcc): add entry-point manifest functionality (#35931) 2020-03-11 15:01:59 -07:00
rendering feat(compiler): add dependency info and ng-content selectors to metadata (#35695) 2020-03-24 14:21:42 -07:00
sourcemaps perf(ngcc): store the position of SegmentMarkers to avoid unnecessary computation (#36027) 2020-03-13 08:00:29 -07:00
writing fix(ngcc): do not crash on overlapping entry-points (#36083) 2020-03-18 15:56:21 -07:00
BUILD.bazel feat(ngcc): implement source-map flattening (#35132) 2020-02-26 12:51:35 -08:00
utils_spec.ts fix(ngcc): correctly detect emitted TS helpers in ES5 (#35191) 2020-02-21 09:06:46 -08:00