diff --git a/modules/angular2/src/compiler/source_module.ts b/modules/angular2/src/compiler/source_module.ts index c02370c15d..dab7f3a95f 100644 --- a/modules/angular2/src/compiler/source_module.ts +++ b/modules/angular2/src/compiler/source_module.ts @@ -7,25 +7,26 @@ export function moduleRef(moduleId): string { } export class SourceModule { - constructor(public moduleId: string, public source: string) {} + constructor(public moduleId: string, public sourceWithModuleRefs: string) {} getSourceWithImports(): SourceWithImports { var moduleAliases = {}; var imports: string[][] = []; - var newSource = StringWrapper.replaceAllMapped(this.source, MODULE_REGEXP, (match) => { - var moduleId = match[1]; - var alias = moduleAliases[moduleId]; - if (isBlank(alias)) { - if (moduleId == this.moduleId) { - alias = ''; - } else { - alias = `import${imports.length}`; - imports.push([moduleId, alias]); - } - moduleAliases[moduleId] = alias; - } - return alias.length > 0 ? `${alias}.` : ''; - }); + var newSource = + StringWrapper.replaceAllMapped(this.sourceWithModuleRefs, MODULE_REGEXP, (match) => { + var moduleId = match[1]; + var alias = moduleAliases[moduleId]; + if (isBlank(alias)) { + if (moduleId == this.moduleId) { + alias = ''; + } else { + alias = `import${imports.length}`; + imports.push([moduleId, alias]); + } + moduleAliases[moduleId] = alias; + } + return alias.length > 0 ? `${alias}.` : ''; + }); return new SourceWithImports(newSource, imports); } } diff --git a/modules/angular2/src/compiler/template_compiler.ts b/modules/angular2/src/compiler/template_compiler.ts index 62e5aabfbe..0fdf7bdfde 100644 --- a/modules/angular2/src/compiler/template_compiler.ts +++ b/modules/angular2/src/compiler/template_compiler.ts @@ -36,7 +36,7 @@ export class TemplateCompiler { private _commandCompiler: CommandCompiler, private _cdCompiler: ChangeDetectionCompiler) {} - normalizeDirective(directive: DirectiveMetadata): Promise { + normalizeDirectiveMetadata(directive: DirectiveMetadata): Promise { var normalizedTemplatePromise; if (directive.isComponent) { normalizedTemplatePromise = @@ -54,11 +54,11 @@ export class TemplateCompiler { })); } - serializeTemplateMetadata(metadata: INormalizedDirectiveMetadata): string { + serializeDirectiveMetadata(metadata: INormalizedDirectiveMetadata): string { return Json.stringify((metadata).toJson()); } - deserializeTemplateMetadata(data: string): INormalizedDirectiveMetadata { + deserializeDirectiveMetadata(data: string): INormalizedDirectiveMetadata { return NormalizedDirectiveMetadata.fromJson(Json.parse(data)); } @@ -87,26 +87,26 @@ export class TemplateCompiler { new CompiledTemplate(compMeta.type.id, () => [changeDetectorFactories, commands, styles]); this._compiledTemplateCache.set(compMeta.type.id, compiledTemplate); compilingComponentIds.add(compMeta.type.id); - done = - PromiseWrapper.all([this._styleCompiler.compileComponentRuntime(compMeta)].concat( - viewDirectives.map(dirMeta => this.normalizeDirective(dirMeta)))) - .then((stylesAndNormalizedViewDirMetas: any[]) => { - var childPromises = []; - var normalizedViewDirMetas = stylesAndNormalizedViewDirMetas.slice(1); - var parsedTemplate = this._templateParser.parse( - compMeta.template.template, normalizedViewDirMetas, compMeta.type.name); + done = PromiseWrapper.all([this._styleCompiler.compileComponentRuntime(compMeta)].concat( + viewDirectives.map( + dirMeta => this.normalizeDirectiveMetadata(dirMeta)))) + .then((stylesAndNormalizedViewDirMetas: any[]) => { + var childPromises = []; + var normalizedViewDirMetas = stylesAndNormalizedViewDirMetas.slice(1); + var parsedTemplate = this._templateParser.parse( + compMeta.template.template, normalizedViewDirMetas, compMeta.type.name); - changeDetectorFactories = this._cdCompiler.compileComponentRuntime( - compMeta.type, compMeta.changeDetection.changeDetection, parsedTemplate); - styles = stylesAndNormalizedViewDirMetas[0]; - commands = this._compileCommandsRuntime(compMeta, parsedTemplate, - compilingComponentIds, childPromises); - return PromiseWrapper.all(childPromises); - }) - .then((_) => { - SetWrapper.delete(compilingComponentIds, compMeta.type.id); - return compiledTemplate; - }); + changeDetectorFactories = this._cdCompiler.compileComponentRuntime( + compMeta.type, compMeta.changeDetection.changeDetection, parsedTemplate); + styles = stylesAndNormalizedViewDirMetas[0]; + commands = this._compileCommandsRuntime(compMeta, parsedTemplate, + compilingComponentIds, childPromises); + return PromiseWrapper.all(childPromises); + }) + .then((_) => { + SetWrapper.delete(compilingComponentIds, compMeta.type.id); + return compiledTemplate; + }); this._compiledTemplateDone.set(compMeta.type.id, done); } return compiledTemplate; diff --git a/modules/angular2/src/core/compiler/directive_resolver.ts b/modules/angular2/src/core/compiler/directive_resolver.ts index 854143c654..ff28aee63c 100644 --- a/modules/angular2/src/core/compiler/directive_resolver.ts +++ b/modules/angular2/src/core/compiler/directive_resolver.ts @@ -94,7 +94,6 @@ export class DirectiveResolver { events: mergedEvents, host: mergedHost, dynamicLoadable: dm.dynamicLoadable, - compiledHostTemplate: dm.compiledHostTemplate, bindings: dm.bindings, exportAs: dm.exportAs, moduleId: dm.moduleId, diff --git a/modules/angular2/src/core/metadata/directives.ts b/modules/angular2/src/core/metadata/directives.ts index 70145a0b2a..e60f92ebc5 100644 --- a/modules/angular2/src/core/metadata/directives.ts +++ b/modules/angular2/src/core/metadata/directives.ts @@ -808,13 +808,6 @@ export class ComponentMetadata extends DirectiveMetadata { */ dynamicLoadable: boolean; - - /** - * Used by build tools to store the compiled template. - * Not intended to be used by a user. - */ - compiledHostTemplate: /* CompiledTemplate */ any; - /** * Defines the used change detection strategy. * @@ -868,15 +861,14 @@ export class ComponentMetadata extends DirectiveMetadata { */ viewBindings: any[]; - constructor({selector, properties, events, host, dynamicLoadable, compiledHostTemplate, exportAs, - moduleId, bindings, viewBindings, changeDetection = ChangeDetectionStrategy.Default, + constructor({selector, properties, events, host, dynamicLoadable, exportAs, moduleId, bindings, + viewBindings, changeDetection = ChangeDetectionStrategy.Default, compileChildren = true}: { selector?: string, properties?: string[], events?: string[], host?: StringMap, dynamicLoadable?: boolean, - compiledHostTemplate?: any, bindings?: any[], exportAs?: string, moduleId?: string, @@ -898,7 +890,6 @@ export class ComponentMetadata extends DirectiveMetadata { this.changeDetection = changeDetection; this.viewBindings = viewBindings; this.dynamicLoadable = dynamicLoadable; - this.compiledHostTemplate = compiledHostTemplate; } } diff --git a/modules/angular2/src/mock/directive_resolver_mock.ts b/modules/angular2/src/mock/directive_resolver_mock.ts index 499aa09d96..c4d7cf2cfd 100644 --- a/modules/angular2/src/mock/directive_resolver_mock.ts +++ b/modules/angular2/src/mock/directive_resolver_mock.ts @@ -30,7 +30,6 @@ export class MockDirectiveResolver extends DirectiveResolver { events: dm.events, host: dm.host, dynamicLoadable: dm.dynamicLoadable, - compiledHostTemplate: dm.compiledHostTemplate, bindings: bindings, exportAs: dm.exportAs, moduleId: dm.moduleId, diff --git a/modules/angular2/test/compiler/style_compiler_spec.ts b/modules/angular2/test/compiler/style_compiler_spec.ts index 943b4c2a4f..e16c04d394 100644 --- a/modules/angular2/test/compiler/style_compiler_spec.ts +++ b/modules/angular2/test/compiler/style_compiler_spec.ts @@ -210,7 +210,7 @@ function testableExpression(source: SourceExpression): SourceModule { } function testableModule(sourceModule: SourceModule): SourceModule { - var testableSource = `${sourceModule.source} + var testableSource = `${sourceModule.sourceWithModuleRefs} ${codeGenExportVariable('run')}${codeGenValueFn(['_'], 'STYLES')};`; return new SourceModule(sourceModule.moduleId, testableSource); } diff --git a/modules/angular2/test/compiler/template_compiler_spec.ts b/modules/angular2/test/compiler/template_compiler_spec.ts index 200be384f4..5df10e11ef 100644 --- a/modules/angular2/test/compiler/template_compiler_spec.ts +++ b/modules/angular2/test/compiler/template_compiler_spec.ts @@ -143,8 +143,8 @@ export function main() { Promise { var compAndViewDirMetas = [runtimeMetadataResolver.getMetadata(component)].concat( runtimeMetadataResolver.getViewDirectivesMetadata(component)); - return PromiseWrapper.all(compAndViewDirMetas.map(meta => - compiler.normalizeDirective(meta))) + return PromiseWrapper.all(compAndViewDirMetas.map( + meta => compiler.normalizeDirectiveMetadata(meta))) .then((normalizedCompAndViewDirMetas: NormalizedDirectiveMetadata[]) => new NormalizedComponentWithViewDirectives( normalizedCompAndViewDirMetas[0], @@ -169,16 +169,16 @@ export function main() { }); - describe('serializeTemplateMetadata and deserializeTemplateMetadata', () => { + describe('serializeDirectiveMetadata and deserializeDirectiveMetadata', () => { it('should serialize and deserialize', inject([AsyncTestCompleter], (async) => { - compiler.normalizeDirective( + compiler.normalizeDirectiveMetadata( runtimeMetadataResolver.getMetadata(CompWithBindingsAndStyles)) .then((meta: NormalizedDirectiveMetadata) => { - var json = compiler.serializeTemplateMetadata(meta); + var json = compiler.serializeDirectiveMetadata(meta); expect(isString(json)).toBe(true); // Note: serializing will clear our the runtime type! var clonedMeta = - compiler.deserializeTemplateMetadata(json); + compiler.deserializeDirectiveMetadata(json); expect(meta.changeDetection).toEqual(clonedMeta.changeDetection); expect(meta.template).toEqual(clonedMeta.template); expect(meta.selector).toEqual(clonedMeta.selector); @@ -188,11 +188,12 @@ export function main() { })); }); - describe('normalizeDirective', () => { + describe('normalizeDirectiveMetadata', () => { it('should normalize the template', inject([AsyncTestCompleter, XHR], (async, xhr: MockXHR) => { xhr.expect('angular2/test/compiler/compUrl.html', 'loadedTemplate'); - compiler.normalizeDirective(runtimeMetadataResolver.getMetadata(CompWithTemplateUrl)) + compiler.normalizeDirectiveMetadata( + runtimeMetadataResolver.getMetadata(CompWithTemplateUrl)) .then((meta: NormalizedDirectiveMetadata) => { expect(meta.template.template).toEqual('loadedTemplate'); async.done(); @@ -202,14 +203,15 @@ export function main() { it('should copy all the other fields', inject([AsyncTestCompleter], (async) => { var meta = runtimeMetadataResolver.getMetadata(CompWithBindingsAndStyles); - compiler.normalizeDirective(meta).then((normMeta: NormalizedDirectiveMetadata) => { - expect(normMeta.selector).toEqual(meta.selector); - expect(normMeta.dynamicLoadable).toEqual(meta.dynamicLoadable); - expect(normMeta.isComponent).toEqual(meta.isComponent); - expect(normMeta.type).toEqual(meta.type); - expect(normMeta.changeDetection).toEqual(meta.changeDetection); - async.done(); - }); + compiler.normalizeDirectiveMetadata(meta) + .then((normMeta: NormalizedDirectiveMetadata) => { + expect(normMeta.selector).toEqual(meta.selector); + expect(normMeta.dynamicLoadable).toEqual(meta.dynamicLoadable); + expect(normMeta.isComponent).toEqual(meta.isComponent); + expect(normMeta.type).toEqual(meta.type); + expect(normMeta.changeDetection).toEqual(meta.changeDetection); + async.done(); + }); })); }); @@ -262,13 +264,13 @@ function testableTemplateModule(sourceModule: SourceModule, comp: INormalizedDir SourceModule { var normComp = comp; var resultExpression = `${THIS_MODULE_REF}humanizeTemplate(Host${normComp.type.name}Template)`; - var testableSource = `${sourceModule.source} + var testableSource = `${sourceModule.sourceWithModuleRefs} ${codeGenExportVariable('run')}${codeGenValueFn(['_'], resultExpression)};`; return new SourceModule(sourceModule.moduleId, testableSource); } function testableStylesModule(sourceModule: SourceModule): SourceModule { - var testableSource = `${sourceModule.source} + var testableSource = `${sourceModule.sourceWithModuleRefs} ${codeGenExportVariable('run')}${codeGenValueFn(['_'], 'STYLES')};`; return new SourceModule(sourceModule.moduleId, testableSource); }