fix(packages): use ES modules for primary build (#11120)

This commit is contained in:
Miško Hevery
2016-08-30 18:07:40 -07:00
committed by Victor Berchet
parent 8cb1046ce9
commit 979657989b
249 changed files with 1929 additions and 1463 deletions

View File

@ -28,6 +28,12 @@ export function main(
ngOptions.basePath = basePath;
const host = ts.createCompilerHost(parsed.options, true);
// HACK: patch the realpath to solve symlink issue here:
// https://github.com/Microsoft/TypeScript/issues/9552
// todo(misko): remove once facade symlinks are removed
host.realpath = (path) => path;
const program = ts.createProgram(parsed.fileNames, parsed.options, host);
const errors = program.getOptionsDiagnostics();
check(errors);

View File

@ -167,7 +167,7 @@ export interface MetadataGlobalReferenceExpression extends MetadataSymbolicExpre
}
export function isMetadataGlobalReferenceExpression(value: any):
value is MetadataGlobalReferenceExpression {
return isMetadataSymbolicReferenceExpression(value) && value.name && !value.module;
return value && value.name && !value.module && isMetadataSymbolicReferenceExpression(value);
}
export interface MetadataModuleReferenceExpression extends MetadataSymbolicExpression {
@ -176,8 +176,8 @@ export interface MetadataModuleReferenceExpression extends MetadataSymbolicExpre
}
export function isMetadataModuleReferenceExpression(value: any):
value is MetadataModuleReferenceExpression {
return isMetadataSymbolicReferenceExpression(value) && value.module && !value.name &&
!value.default;
return value && value.module && !value.name && !value.default &&
isMetadataSymbolicReferenceExpression(value);
}
export interface MetadataImportedSymbolReferenceExpression extends MetadataSymbolicExpression {
@ -188,7 +188,7 @@ export interface MetadataImportedSymbolReferenceExpression extends MetadataSymbo
}
export function isMetadataImportedSymbolReferenceExpression(value: any):
value is MetadataImportedSymbolReferenceExpression {
return isMetadataSymbolicReferenceExpression(value) && value.module && !!value.name;
return value && value.module && !!value.name && isMetadataSymbolicReferenceExpression(value);
}
export interface MetadataImportedDefaultReferenceExpression extends MetadataSymbolicExpression {
@ -200,7 +200,7 @@ export interface MetadataImportedDefaultReferenceExpression extends MetadataSymb
}
export function isMetadataImportDefaultReference(value: any):
value is MetadataImportedDefaultReferenceExpression {
return isMetadataSymbolicReferenceExpression(value) && value.module && value.default;
return value.module && value.default && isMetadataSymbolicReferenceExpression(value);
}
export type MetadataSymbolicReferenceExpression = MetadataGlobalReferenceExpression |
@ -259,4 +259,4 @@ export interface MetadataError {
}
export function isMetadataError(value: any): value is MetadataError {
return value && value.__symbolic === 'error';
}
}

View File

@ -1,3 +1,4 @@
import {existsSync} from 'fs';
import * as path from 'path';
import * as ts from 'typescript';
@ -66,8 +67,17 @@ export class Tsc implements CompilerInterface {
const {config, error} = ts.readConfigFile(project, this.readFile);
check([error]);
this.parsed =
ts.parseJsonConfigFileContent(config, {readDirectory: this.readDirectory}, basePath);
// Do not inline `host` into `parseJsonConfigFileContent` until after
// g3 is updated to the latest TypeScript.
// The issue is that old typescript only has `readDirectory` while
// the newer TypeScript has additional `useCaseSensitiveFileNames` and
// `fileExists`. Inlining will trigger an error of extra parameters.
let host = {
useCaseSensitiveFileNames: true,
fileExists: existsSync,
readDirectory: this.readDirectory
};
this.parsed = ts.parseJsonConfigFileContent(config, host, basePath);
check(this.parsed.errors);

View File

@ -397,7 +397,7 @@ describe('Collector', () => {
__symbolic: 'call',
expression: {
__symbolic: 'select',
expression: {__symbolic: 'reference', module: './static-method.ts', name: 'MyModule'},
expression: {__symbolic: 'reference', module: './static-method', name: 'MyModule'},
member: 'with'
},
arguments: ['a']
@ -429,7 +429,7 @@ describe('Collector', () => {
provide: 'a',
useValue: {
__symbolic: 'select',
expression: {__symbolic: 'reference', module: './static-field.ts', name: 'MyModule'},
expression: {__symbolic: 'reference', module: './static-field', name: 'MyModule'},
member: 'VALUE'
}
}]
@ -496,7 +496,7 @@ describe('Collector', () => {
let metadata = collector.getMetadata(source);
expect(metadata.exports).toEqual([
{from: './static-field', export: ['MyModule']},
{from: './static-field-reference.ts', export: [{name: 'Foo', as: 'OtherModule'}]},
{from: './static-field-reference', export: [{name: 'Foo', as: 'OtherModule'}]},
{from: 'angular2/core'}
]);
});
@ -852,7 +852,7 @@ const FILES: Directory = {
`,
'static-method-call.ts': `
import {Component} from 'angular2/core';
import {MyModule} from './static-method.ts';
import {MyModule} from './static-method';
@Component({
providers: MyModule.with('a')
@ -869,7 +869,7 @@ const FILES: Directory = {
`,
'static-field-reference.ts': `
import {Component} from 'angular2/core';
import {MyModule} from './static-field.ts';
import {MyModule} from './static-field';
@Component({
providers: [ { provide: 'a', useValue: MyModule.VALUE } ]
@ -891,7 +891,7 @@ const FILES: Directory = {
`,
're-exports.ts': `
export {MyModule} from './static-field';
export {Foo as OtherModule} from './static-field-reference.ts';
export {Foo as OtherModule} from './static-field-reference';
export * from 'angular2/core';
`,
'local-symbol-ref.ts': `