fix(ivy): ngcc - recognize suffixed tslib helpers (#31614)

An identifier may become repeated when bundling multiple source files
into a single bundle, so bundlers have a strategy of suffixing non-unique
identifiers with a suffix like $2. Since ngcc operates on such bundles,
it needs to process potentially suffixed identifiers in their canonical
form without the suffix. The "ngx-pagination" package was previously not
compiled fully, as most decorators were not recognized.

This commit ensures that identifiers are first canonicalized by removing
the suffix, such that they are properly recognized and processed by ngcc.

Fixes #31540

PR Close #31614
This commit is contained in:
JoostK
2019-07-19 23:22:52 +02:00
committed by Andrew Kushnir
parent 5e5be43acd
commit 80f290e301
7 changed files with 60 additions and 25 deletions

View File

@ -78,18 +78,18 @@ export function convertToDirectTsLibImport(filesystem: TestFile[]) {
});
}
export function convertToInlineTsLib(filesystem: TestFile[]) {
export function convertToInlineTsLib(filesystem: TestFile[], suffix: string = '') {
return filesystem.map(file => {
const contents = file.contents
.replace(`import * as tslib_1 from 'tslib';`, `
var __decorate = null;
var __metadata = null;
var __read = null;
var __values = null;
var __param = null;
var __extends = null;
var __assign = null;
`).replace(/tslib_1\./g, '');
var __decorate${suffix} = null;
var __metadata${suffix} = null;
var __read${suffix} = null;
var __values${suffix} = null;
var __param${suffix} = null;
var __extends${suffix} = null;
var __assign${suffix} = null;
`).replace(/tslib_1\.([_a-z]+)/gi, '$1' + suffix.replace('$', '$$'));
return {...file, contents};
});
}