fix(ivy): normalize summary and factory shim files paths (#28173)

At the moment, paths stored in `maps` are not normalized and in Windows is causing files not to be found when enabling factory shimming.

For example, the map contents will be
```
Map {
  'C:\\git\\cli-repos\\ng-factory-shims\\index.ngfactory.ts' => 'C:\\git\\cli-repos\\ng-factory-shims\\index.ts' }
```

However, ts compiler normalized the paths and is causing;
```
error TS6053: File 'C:/git/cli-repos/ng-factory-shims/index.ngfactory.ts' not found.
error TS6053: File 'C:/git/cli-repos/ng-factory-shims/index.ngsummary.ts' not found.
```

The changes normalized the paths that are stored within the factory and summary maps.

PR Close #28173
This commit is contained in:
Alan 2019-01-16 07:54:39 +01:00 committed by Andrew Kushnir
parent 479019f457
commit 03293c4fec
3 changed files with 10 additions and 1 deletions

View File

@ -9,7 +9,7 @@
import * as path from 'path';
import * as ts from 'typescript';
import {relativePathBetween} from '../../util/src/path';
import {normalizeSeparators, relativePathBetween} from '../../util/src/path';
import {ShimGenerator} from './host';
import {generatedModuleName, isNonDeclarationTsFile} from './util';
@ -88,6 +88,7 @@ export class FactoryGenerator implements ShimGenerator {
static forRootFiles(files: ReadonlyArray<string>): FactoryGenerator {
const map = new Map<string, string>();
files.filter(sourceFile => isNonDeclarationTsFile(sourceFile))
.map(sourceFile => normalizeSeparators(sourceFile))
.forEach(sourceFile => map.set(sourceFile.replace(/\.ts$/, '.ngfactory.ts'), sourceFile));
return new FactoryGenerator(map);
}

View File

@ -8,6 +8,8 @@
import * as ts from 'typescript';
import {normalizeSeparators} from '../../util/src/path';
import {ShimGenerator} from './host';
import {generatedModuleName, isNonDeclarationTsFile} from './util';
@ -62,6 +64,7 @@ export class SummaryGenerator implements ShimGenerator {
static forRootFiles(files: ReadonlyArray<string>): SummaryGenerator {
const map = new Map<string, string>();
files.filter(sourceFile => isNonDeclarationTsFile(sourceFile))
.map(sourceFile => normalizeSeparators(sourceFile))
.forEach(sourceFile => map.set(sourceFile.replace(/\.ts$/, '.ngsummary.ts'), sourceFile));
return new SummaryGenerator(map);
}

View File

@ -26,3 +26,8 @@ export function relativePathBetween(from: string, to: string): string|null {
return relative;
}
export function normalizeSeparators(path: string): string {
// TODO: normalize path only for OS that need it.
return path.replace(/\\/g, '/');
}