In #37221 we disabled tsickle passes from transforming the tsc output that is used to publish all Angular framework and components packages (@angular/*). This change however revealed a bug in the ngc that caused __decorate and __metadata calls to still be emitted in the JS code even though we don't depend on them. Additionally it was these calls that caused code in @angular/material packages to fail at runtime due to circular dependency in the emitted decorator code documeted as https://github.com/microsoft/TypeScript/issues/27519. This change partially rolls back #37221 by reenabling the decorator to static fields (static properties) downleveling. This is just a temporary workaround while we are also fixing root cause in `ngc` - tracked as FW-2199. Resolves FW-2198. Related to FW-2196 PR Close #37317
Angular Compatibility Compiler (ngcc)
This compiler will convert node_modules compiled with ngc, into node_modules which
appear to have been compiled with ngtsc.
This conversion will allow such "legacy" packages to be used by the Ivy rendering engine.
Building
The project is built using Bazel:
yarn bazel build //packages/compiler-cli/ngcc
Unit Testing
The unit tests are built and run using Bazel:
yarn bazel test //packages/compiler-cli/ngcc/test
Integration Testing
There are tests that check the behavior of the overall executable:
yarn bazel test //packages/compiler-cli/ngcc/test:integration