You're Invited:Meet the Socket Team at BlackHat and DEF CON in Las Vegas, Aug 7-8.RSVP
Socket
Socket
Sign inDemoInstall

@angular/compiler

Package Overview
Dependencies
Maintainers
1
Versions
822
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 2.2.0-rc.0 to 2.2.0

src/animation/animation_parser.metadata.json

8

bundles/compiler-testing.umd.js
/**
* @license Angular v0.0.0-PLACEHOLDER
* @license Angular v2.2.0
* (c) 2010-2016 Google, Inc. https://angular.io/

@@ -53,2 +53,6 @@ * License: MIT

};
MockSchemaRegistry.prototype.normalizeAnimationStyleProperty = function (propName) { return propName; };
MockSchemaRegistry.prototype.normalizeAnimationStyleValue = function (camelCaseProp, userProvidedProp, val) {
return { error: null, value: val.toString() };
};
return MockSchemaRegistry;

@@ -64,3 +68,3 @@ }());

}
if (token === undefined || token === null) {
if (token == null) {
return '' + token;

@@ -67,0 +71,0 @@ }

@@ -54,1 +54,2 @@ /**

export { ViewCompiler } from './src/view_compiler/view_compiler';
export { AnimationParser } from './src/animation/animation_parser';

@@ -54,2 +54,3 @@ /**

export { ViewCompiler } from './src/view_compiler/view_compiler';
export { AnimationParser } from './src/animation/animation_parser';
//# sourceMappingURL=index.js.map

@@ -1,1 +0,1 @@

{"__symbolic":"module","version":1,"metadata":{},"exports":[{"from":"./src/template_parser/template_ast"},{"from":"./src/template_parser/template_parser","export":["TEMPLATE_TRANSFORMS"]},{"from":"./src/config","export":["CompilerConfig","RenderTypes"]},{"from":"./src/compile_metadata"},{"from":"./src/offline_compiler"},{"from":"./src/runtime_compiler","export":["RuntimeCompiler"]},{"from":"./src/url_resolver"},{"from":"./src/resource_loader"},{"from":"./src/compiler"},{"from":"./src/directive_resolver","export":["DirectiveResolver"]},{"from":"./src/pipe_resolver","export":["PipeResolver"]},{"from":"./src/ng_module_resolver","export":["NgModuleResolver"]},{"from":"./src/ml_parser/interpolation_config","export":["DEFAULT_INTERPOLATION_CONFIG","InterpolationConfig"]},{"from":"./src/schema/element_schema_registry"},{"from":"./src/i18n/index"},{"from":"./src/directive_normalizer"},{"from":"./src/expression_parser/lexer"},{"from":"./src/expression_parser/parser"},{"from":"./src/metadata_resolver"},{"from":"./src/ml_parser/html_parser"},{"from":"./src/ml_parser/interpolation_config"},{"from":"./src/ng_module_compiler","export":["NgModuleCompiler"]},{"from":"./src/directive_wrapper_compiler","export":["DirectiveWrapperCompiler"]},{"from":"./src/output/path_util"},{"from":"./src/output/ts_emitter"},{"from":"./src/parse_util"},{"from":"./src/schema/dom_element_schema_registry"},{"from":"./src/selector"},{"from":"./src/style_compiler"},{"from":"./src/template_parser/template_parser"},{"from":"./src/view_compiler/view_compiler","export":["ViewCompiler"]}]}
{"__symbolic":"module","version":1,"metadata":{},"exports":[{"from":"./src/template_parser/template_ast"},{"from":"./src/template_parser/template_parser","export":["TEMPLATE_TRANSFORMS"]},{"from":"./src/config","export":["CompilerConfig","RenderTypes"]},{"from":"./src/compile_metadata"},{"from":"./src/offline_compiler"},{"from":"./src/runtime_compiler","export":["RuntimeCompiler"]},{"from":"./src/url_resolver"},{"from":"./src/resource_loader"},{"from":"./src/compiler"},{"from":"./src/directive_resolver","export":["DirectiveResolver"]},{"from":"./src/pipe_resolver","export":["PipeResolver"]},{"from":"./src/ng_module_resolver","export":["NgModuleResolver"]},{"from":"./src/ml_parser/interpolation_config","export":["DEFAULT_INTERPOLATION_CONFIG","InterpolationConfig"]},{"from":"./src/schema/element_schema_registry"},{"from":"./src/i18n/index"},{"from":"./src/directive_normalizer"},{"from":"./src/expression_parser/lexer"},{"from":"./src/expression_parser/parser"},{"from":"./src/metadata_resolver"},{"from":"./src/ml_parser/html_parser"},{"from":"./src/ml_parser/interpolation_config"},{"from":"./src/ng_module_compiler","export":["NgModuleCompiler"]},{"from":"./src/directive_wrapper_compiler","export":["DirectiveWrapperCompiler"]},{"from":"./src/output/path_util"},{"from":"./src/output/ts_emitter"},{"from":"./src/parse_util"},{"from":"./src/schema/dom_element_schema_registry"},{"from":"./src/selector"},{"from":"./src/style_compiler"},{"from":"./src/template_parser/template_parser"},{"from":"./src/view_compiler/view_compiler","export":["ViewCompiler"]},{"from":"./src/animation/animation_parser","export":["AnimationParser"]}]}
{
"name": "@angular/compiler",
"version": "2.2.0-rc.0",
"version": "2.2.0",
"description": "Angular - the compiler library",

@@ -11,3 +11,3 @@ "main": "bundles/compiler.umd.js",

"peerDependencies": {
"@angular/core": "2.2.0-rc.0"
"@angular/core": "2.2.0"
},

@@ -14,0 +14,0 @@ "repository": {

@@ -192,3 +192,6 @@ /**

statements.push(_ANIMATION_PLAYER_VAR
.callMethod('onDone', [o.fn([], [RENDER_STYLES_FN
.callMethod('onDone', [o
.fn([], [
_ANIMATION_PLAYER_VAR.callMethod('destroy', []).toStmt(),
RENDER_STYLES_FN
.callFn([

@@ -198,6 +201,8 @@ _ANIMATION_FACTORY_ELEMENT_VAR, _ANIMATION_FACTORY_RENDERER_VAR,

.callFn([
_ANIMATION_START_STATE_STYLES_VAR, _ANIMATION_END_STATE_STYLES_VAR
_ANIMATION_START_STATE_STYLES_VAR,
_ANIMATION_END_STATE_STYLES_VAR
])
])
.toStmt()])])
.toStmt()
])])
.toStmt());

@@ -204,0 +209,0 @@ statements.push(_ANIMATION_FACTORY_VIEW_CONTEXT

@@ -1,10 +0,4 @@

/**
* @license
* Copyright Google Inc. All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.io/license
*/
import { CompileAnimationEntryMetadata, CompileDirectiveMetadata } from '../compile_metadata';
import { ParseError } from '../parse_util';
import { ElementSchemaRegistry } from '../schema/element_schema_registry';
import { AnimationEntryAst } from './animation_ast';

@@ -21,4 +15,6 @@ export declare class AnimationParseError extends ParseError {

export declare class AnimationParser {
private _schema;
constructor(_schema: ElementSchemaRegistry);
parseComponent(component: CompileDirectiveMetadata): AnimationEntryAst[];
parseEntry(entry: CompileAnimationEntryMetadata): AnimationEntryParseResult;
}

@@ -13,2 +13,3 @@ /**

};
import { Injectable } from '@angular/core';
import { CompileAnimationAnimateMetadata, CompileAnimationGroupMetadata, CompileAnimationKeyframesSequenceMetadata, CompileAnimationSequenceMetadata, CompileAnimationStateDeclarationMetadata, CompileAnimationStyleMetadata, CompileAnimationWithStepsMetadata } from '../compile_metadata';

@@ -19,2 +20,3 @@ import { StringMapWrapper } from '../facade/collection';

import { ANY_STATE, FILL_STYLE_FLAG } from '../private_import_core';
import { ElementSchemaRegistry } from '../schema/element_schema_registry';
import { AnimationEntryAst, AnimationGroupAst, AnimationKeyframeAst, AnimationSequenceAst, AnimationStateDeclarationAst, AnimationStateTransitionAst, AnimationStateTransitionExpression, AnimationStepAst, AnimationStylesAst, AnimationWithStepsAst } from './animation_ast';

@@ -41,3 +43,4 @@ import { StylesCollection } from './styles_collection';

export var AnimationParser = (function () {
function AnimationParser() {
function AnimationParser(_schema) {
this._schema = _schema;
}

@@ -73,2 +76,3 @@ AnimationParser.prototype.parseComponent = function (component) {

AnimationParser.prototype.parseEntry = function (entry) {
var _this = this;
var errors = [];

@@ -80,3 +84,3 @@ var stateStyles = {};

if (def instanceof CompileAnimationStateDeclarationMetadata) {
_parseAnimationDeclarationStates(def, errors).forEach(function (ast) {
_parseAnimationDeclarationStates(def, _this._schema, errors).forEach(function (ast) {
stateDeclarationAsts.push(ast);

@@ -90,24 +94,22 @@ stateStyles[ast.stateName] = ast.styles;

});
var stateTransitionAsts = transitions.map(function (transDef) { return _parseAnimationStateTransition(transDef, stateStyles, errors); });
var stateTransitionAsts = transitions.map(function (transDef) { return _parseAnimationStateTransition(transDef, stateStyles, _this._schema, errors); });
var ast = new AnimationEntryAst(entry.name, stateDeclarationAsts, stateTransitionAsts);
return new AnimationEntryParseResult(ast, errors);
};
AnimationParser.decorators = [
{ type: Injectable },
];
/** @nocollapse */
AnimationParser.ctorParameters = [
{ type: ElementSchemaRegistry, },
];
return AnimationParser;
}());
function _parseAnimationDeclarationStates(stateMetadata, errors) {
var styleValues = [];
stateMetadata.styles.styles.forEach(function (stylesEntry) {
// TODO (matsko): change this when we get CSS class integration support
if (typeof stylesEntry === 'object' && stylesEntry !== null) {
styleValues.push(stylesEntry);
}
else {
errors.push(new AnimationParseError("State based animations cannot contain references to other states"));
}
});
var defStyles = new AnimationStylesAst(styleValues);
function _parseAnimationDeclarationStates(stateMetadata, schema, errors) {
var normalizedStyles = _normalizeStyleMetadata(stateMetadata.styles, {}, schema, errors, false);
var defStyles = new AnimationStylesAst(normalizedStyles);
var states = stateMetadata.stateNameExpr.split(/\s*,\s*/);
return states.map(function (state) { return new AnimationStateDeclarationAst(state, defStyles); });
}
function _parseAnimationStateTransition(transitionStateMetadata, stateStyles, errors) {
function _parseAnimationStateTransition(transitionStateMetadata, stateStyles, schema, errors) {
var styles = new StylesCollection();

@@ -118,3 +120,3 @@ var transitionExprs = [];

var entry = _normalizeAnimationEntry(transitionStateMetadata.steps);
var animation = _normalizeStyleSteps(entry, stateStyles, errors);
var animation = _normalizeStyleSteps(entry, stateStyles, schema, errors);
var animationAst = _parseTransitionAnimation(animation, 0, styles, stateStyles, errors);

@@ -163,10 +165,26 @@ if (errors.length == 0) {

}
function _normalizeStyleMetadata(entry, stateStyles, errors) {
function _normalizeStyleMetadata(entry, stateStyles, schema, errors, permitStateReferences) {
var normalizedStyles = [];
entry.styles.forEach(function (styleEntry) {
if (typeof styleEntry === 'string') {
normalizedStyles.push.apply(normalizedStyles, _resolveStylesFromState(styleEntry, stateStyles, errors));
if (permitStateReferences) {
normalizedStyles.push.apply(normalizedStyles, _resolveStylesFromState(styleEntry, stateStyles, errors));
}
else {
errors.push(new AnimationParseError("State based animations cannot contain references to other states"));
}
}
else {
normalizedStyles.push(styleEntry);
var stylesObj_1 = styleEntry;
var normalizedStylesObj_1 = {};
Object.keys(stylesObj_1).forEach(function (propName) {
var normalizedProp = schema.normalizeAnimationStyleProperty(propName);
var normalizedOutput = schema.normalizeAnimationStyleValue(normalizedProp, propName, stylesObj_1[propName]);
var normalizationError = normalizedOutput['error'];
if (normalizationError) {
errors.push(new AnimationParseError(normalizationError));
}
normalizedStylesObj_1[normalizedProp] = normalizedOutput['value'];
});
normalizedStyles.push(normalizedStylesObj_1);
}

@@ -176,4 +194,4 @@ });

}
function _normalizeStyleSteps(entry, stateStyles, errors) {
var steps = _normalizeStyleStepEntry(entry, stateStyles, errors);
function _normalizeStyleSteps(entry, stateStyles, schema, errors) {
var steps = _normalizeStyleStepEntry(entry, stateStyles, schema, errors);
return (entry instanceof CompileAnimationGroupMetadata) ?

@@ -194,3 +212,3 @@ new CompileAnimationGroupMetadata(steps) :

}
function _normalizeStyleStepEntry(entry, stateStyles, errors) {
function _normalizeStyleStepEntry(entry, stateStyles, schema, errors) {
var steps;

@@ -214,3 +232,3 @@ if (entry instanceof CompileAnimationWithStepsMetadata) {

}
_normalizeStyleMetadata(step, stateStyles, errors)
_normalizeStyleMetadata(step, stateStyles, schema, errors, true)
.forEach(function (entry) { _mergeAnimationStyles(combinedStyles, entry); });

@@ -233,10 +251,12 @@ }

animateStyleValue.styles =
_normalizeStyleMetadata(animateStyleValue, stateStyles, errors);
_normalizeStyleMetadata(animateStyleValue, stateStyles, schema, errors, true);
}
else if (animateStyleValue instanceof CompileAnimationKeyframesSequenceMetadata) {
animateStyleValue.steps.forEach(function (step) { step.styles = _normalizeStyleMetadata(step, stateStyles, errors); });
animateStyleValue.steps.forEach(function (step) {
step.styles = _normalizeStyleMetadata(step, stateStyles, schema, errors, true);
});
}
}
else if (step instanceof CompileAnimationWithStepsMetadata) {
var innerSteps = _normalizeStyleStepEntry(step, stateStyles, errors);
var innerSteps = _normalizeStyleStepEntry(step, stateStyles, schema, errors);
step = step instanceof CompileAnimationGroupMetadata ?

@@ -361,9 +381,9 @@ new CompileAnimationGroupMetadata(innerSteps) :

if (entry instanceof CompileAnimationWithStepsMetadata) {
var maxDuration = 0;
var steps = [];
var isGroup = entry instanceof CompileAnimationGroupMetadata;
var previousStyles;
var maxDuration_1 = 0;
var steps_1 = [];
var isGroup_1 = entry instanceof CompileAnimationGroupMetadata;
var previousStyles_1;
entry.steps.forEach(function (entry) {
// these will get picked up by the next step...
var time = isGroup ? startingTime : currentTime;
var time = isGroup_1 ? startingTime : currentTime;
if (entry instanceof CompileAnimationStyleMetadata) {

@@ -375,16 +395,16 @@ entry.styles.forEach(function (stylesEntry) {

});
previousStyles = entry.styles;
previousStyles_1 = entry.styles;
return;
}
var innerAst = _parseTransitionAnimation(entry, time, collectedStyles, stateStyles, errors);
if (isPresent(previousStyles)) {
if (isPresent(previousStyles_1)) {
if (entry instanceof CompileAnimationWithStepsMetadata) {
var startingStyles = new AnimationStylesAst(previousStyles);
steps.push(new AnimationStepAst(startingStyles, [], 0, 0, ''));
var startingStyles = new AnimationStylesAst(previousStyles_1);
steps_1.push(new AnimationStepAst(startingStyles, [], 0, 0, ''));
}
else {
var innerStep = innerAst;
(_a = innerStep.startingStyles.styles).push.apply(_a, previousStyles);
(_a = innerStep.startingStyles.styles).push.apply(_a, previousStyles_1);
}
previousStyles = null;
previousStyles_1 = null;
}

@@ -394,17 +414,17 @@ var astDuration = innerAst.playTime;

playTime += astDuration;
maxDuration = Math.max(astDuration, maxDuration);
steps.push(innerAst);
maxDuration_1 = Math.max(astDuration, maxDuration_1);
steps_1.push(innerAst);
var _a;
});
if (isPresent(previousStyles)) {
var startingStyles = new AnimationStylesAst(previousStyles);
steps.push(new AnimationStepAst(startingStyles, [], 0, 0, ''));
if (isPresent(previousStyles_1)) {
var startingStyles = new AnimationStylesAst(previousStyles_1);
steps_1.push(new AnimationStepAst(startingStyles, [], 0, 0, ''));
}
if (isGroup) {
ast = new AnimationGroupAst(steps);
playTime = maxDuration;
if (isGroup_1) {
ast = new AnimationGroupAst(steps_1);
playTime = maxDuration_1;
currentTime = startingTime + playTime;
}
else {
ast = new AnimationSequenceAst(steps);
ast = new AnimationSequenceAst(steps_1);
}

@@ -415,3 +435,3 @@ }

var styles = entry.styles;
var keyframes;
var keyframes = void 0;
if (styles instanceof CompileAnimationKeyframesSequenceMetadata) {

@@ -418,0 +438,0 @@ keyframes =

@@ -75,2 +75,10 @@ /**

}
/**
* A CompileSummary is the data needed to use a directive / pipe / module
* in other modules / components. However, this data is not enough to compile
* the directive / module itself.
*/
export interface CompileSummary {
isSummary: boolean;
}
export declare class CompileDiDependencyMetadata {

@@ -185,2 +193,11 @@ isAttribute: boolean;

/**
* Summary Metadata regarding compilation of a template.
*/
export interface CompileTemplateSummary extends CompileSummary {
isSummary: boolean;
animations: string[];
ngContentSelectors: string[];
encapsulation: ViewEncapsulation;
}
/**
* Metadata regarding compilation of a template.

@@ -209,3 +226,32 @@ */

});
toSummary(): CompileTemplateSummary;
}
export interface CompileDirectiveSummary extends CompileSummary {
isSummary: boolean;
type: CompileTypeMetadata;
isComponent: boolean;
selector: string;
exportAs: string;
inputs: {
[key: string]: string;
};
outputs: {
[key: string]: string;
};
hostListeners: {
[key: string]: string;
};
hostProperties: {
[key: string]: string;
};
hostAttributes: {
[key: string]: string;
};
providers: CompileProviderMetadata[];
viewProviders: CompileProviderMetadata[];
queries: CompileQueryMetadata[];
entryComponents: CompileIdentifierMetadata[];
changeDetection: ChangeDetectionStrategy;
template: CompileTemplateSummary;
}
/**

@@ -230,5 +276,3 @@ * Metadata regarding compilation of a directive.

viewQueries?: CompileQueryMetadata[];
entryComponents?: CompileTypeMetadata[];
viewDirectives?: CompileTypeMetadata[];
viewPipes?: CompileTypeMetadata[];
entryComponents?: CompileIdentifierMetadata[];
template?: CompileTemplateMetadata;

@@ -260,3 +304,3 @@ }): CompileDirectiveMetadata;

viewQueries: CompileQueryMetadata[];
entryComponents: CompileTypeMetadata[];
entryComponents: CompileIdentifierMetadata[];
template: CompileTemplateMetadata;

@@ -288,8 +332,7 @@ constructor({type, isComponent, selector, exportAs, changeDetection, inputs, outputs, hostListeners, hostProperties, hostAttributes, providers, viewProviders, queries, viewQueries, entryComponents, template}?: {

viewQueries?: CompileQueryMetadata[];
entryComponents?: CompileTypeMetadata[];
viewDirectives?: CompileTypeMetadata[];
viewPipes?: CompileTypeMetadata[];
entryComponents?: CompileIdentifierMetadata[];
template?: CompileTemplateMetadata;
});
identifier: CompileIdentifierMetadata;
toSummary(): CompileDirectiveSummary;
}

@@ -300,2 +343,8 @@ /**

export declare function createHostComponentMeta(compMeta: CompileDirectiveMetadata): CompileDirectiveMetadata;
export interface CompilePipeSummary extends CompileSummary {
isSummary: boolean;
type: CompileTypeMetadata;
name: string;
pure: boolean;
}
export declare class CompilePipeMetadata implements CompileMetadataWithIdentifier {

@@ -311,3 +360,21 @@ type: CompileTypeMetadata;

identifier: CompileIdentifierMetadata;
toSummary(): CompilePipeSummary;
}
export interface CompileNgModuleInjectorSummary extends CompileSummary {
isSummary: boolean;
type: CompileTypeMetadata;
entryComponents: CompileIdentifierMetadata[];
providers: CompileProviderMetadata[];
importedModules: CompileNgModuleInjectorSummary[];
exportedModules: CompileNgModuleInjectorSummary[];
}
export interface CompileNgModuleDirectiveSummary extends CompileSummary {
isSummary: boolean;
type: CompileTypeMetadata;
exportedDirectives: CompileIdentifierMetadata[];
exportedPipes: CompileIdentifierMetadata[];
exportedModules: CompileNgModuleDirectiveSummary[];
loadingPromises: Promise<any>[];
}
export declare type CompileNgModuleSummary = CompileNgModuleInjectorSummary & CompileNgModuleDirectiveSummary;
/**

@@ -318,11 +385,11 @@ * Metadata regarding compilation of a module.

type: CompileTypeMetadata;
declaredDirectives: CompileDirectiveMetadata[];
exportedDirectives: CompileDirectiveMetadata[];
declaredPipes: CompilePipeMetadata[];
exportedPipes: CompilePipeMetadata[];
entryComponents: CompileTypeMetadata[];
bootstrapComponents: CompileTypeMetadata[];
declaredDirectives: CompileIdentifierMetadata[];
exportedDirectives: CompileIdentifierMetadata[];
declaredPipes: CompileIdentifierMetadata[];
exportedPipes: CompileIdentifierMetadata[];
entryComponents: CompileIdentifierMetadata[];
bootstrapComponents: CompileIdentifierMetadata[];
providers: CompileProviderMetadata[];
importedModules: CompileNgModuleMetadata[];
exportedModules: CompileNgModuleMetadata[];
importedModules: CompileNgModuleSummary[];
exportedModules: CompileNgModuleSummary[];
schemas: SchemaMetadata[];

@@ -334,10 +401,10 @@ id: string;

providers?: Array<CompileProviderMetadata | CompileTypeMetadata | CompileIdentifierMetadata | any[]>;
declaredDirectives?: CompileDirectiveMetadata[];
exportedDirectives?: CompileDirectiveMetadata[];
declaredPipes?: CompilePipeMetadata[];
exportedPipes?: CompilePipeMetadata[];
entryComponents?: CompileTypeMetadata[];
bootstrapComponents?: CompileTypeMetadata[];
importedModules?: CompileNgModuleMetadata[];
exportedModules?: CompileNgModuleMetadata[];
declaredDirectives?: CompileIdentifierMetadata[];
exportedDirectives?: CompileIdentifierMetadata[];
declaredPipes?: CompileIdentifierMetadata[];
exportedPipes?: CompileIdentifierMetadata[];
entryComponents?: CompileIdentifierMetadata[];
bootstrapComponents?: CompileIdentifierMetadata[];
importedModules?: CompileNgModuleSummary[];
exportedModules?: CompileNgModuleSummary[];
transitiveModule?: TransitiveCompileNgModuleMetadata;

@@ -348,12 +415,16 @@ schemas?: SchemaMetadata[];

identifier: CompileIdentifierMetadata;
toSummary(): CompileNgModuleSummary;
toInjectorSummary(): CompileNgModuleInjectorSummary;
toDirectiveSummary(): CompileNgModuleDirectiveSummary;
}
export declare class TransitiveCompileNgModuleMetadata {
modules: CompileNgModuleMetadata[];
modules: CompileNgModuleInjectorSummary[];
providers: CompileProviderMetadata[];
entryComponents: CompileTypeMetadata[];
directives: CompileDirectiveMetadata[];
pipes: CompilePipeMetadata[];
directivesSet: Set<Type<any>>;
pipesSet: Set<Type<any>>;
constructor(modules: CompileNgModuleMetadata[], providers: CompileProviderMetadata[], entryComponents: CompileTypeMetadata[], directives: CompileDirectiveMetadata[], pipes: CompilePipeMetadata[]);
entryComponents: CompileIdentifierMetadata[];
directives: CompileIdentifierMetadata[];
pipes: CompileIdentifierMetadata[];
loadingPromises: Promise<any>[];
directivesSet: Set<any>;
pipesSet: Set<any>;
constructor(modules: CompileNgModuleInjectorSummary[], providers: CompileProviderMetadata[], entryComponents: CompileIdentifierMetadata[], directives: CompileIdentifierMetadata[], pipes: CompileIdentifierMetadata[], loadingPromises: Promise<any>[]);
}

@@ -360,0 +431,0 @@ export declare function removeIdentifierDuplicates<T extends CompileMetadataWithIdentifier>(items: T[]): T[];

@@ -14,3 +14,3 @@ /**

import { ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';
import { ListWrapper, MapWrapper } from './facade/collection';
import { ListWrapper } from './facade/collection';
import { isPresent } from './facade/lang';

@@ -265,2 +265,10 @@ import { CssSelector } from './selector';

}
CompileTemplateMetadata.prototype.toSummary = function () {
return {
isSummary: true,
animations: this.animations.map(function (anim) { return anim.name; }),
ngContentSelectors: this.ngContentSelectors,
encapsulation: this.encapsulation
};
};
return CompileTemplateMetadata;

@@ -350,2 +358,22 @@ }());

});
CompileDirectiveMetadata.prototype.toSummary = function () {
return {
isSummary: true,
type: this.type,
isComponent: this.isComponent,
selector: this.selector,
exportAs: this.exportAs,
inputs: this.inputs,
outputs: this.outputs,
hostListeners: this.hostListeners,
hostProperties: this.hostProperties,
hostAttributes: this.hostAttributes,
providers: this.providers,
viewProviders: this.viewProviders,
queries: this.queries,
entryComponents: this.entryComponents,
changeDetection: this.changeDetection,
template: this.template && this.template.toSummary()
};
};
return CompileDirectiveMetadata;

@@ -398,2 +426,5 @@ }());

});
CompilePipeMetadata.prototype.toSummary = function () {
return { isSummary: true, type: this.type, name: this.name, pure: this.pure };
};
return CompilePipeMetadata;

@@ -426,6 +457,39 @@ }());

});
CompileNgModuleMetadata.prototype.toSummary = function () {
return {
isSummary: true,
type: this.type,
entryComponents: this.entryComponents,
providers: this.providers,
importedModules: this.importedModules,
exportedModules: this.exportedModules,
exportedDirectives: this.exportedDirectives,
exportedPipes: this.exportedPipes,
loadingPromises: this.transitiveModule.loadingPromises
};
};
CompileNgModuleMetadata.prototype.toInjectorSummary = function () {
return {
isSummary: true,
type: this.type,
entryComponents: this.entryComponents,
providers: this.providers,
importedModules: this.importedModules,
exportedModules: this.exportedModules
};
};
CompileNgModuleMetadata.prototype.toDirectiveSummary = function () {
return {
isSummary: true,
type: this.type,
exportedDirectives: this.exportedDirectives,
exportedPipes: this.exportedPipes,
exportedModules: this.exportedModules,
loadingPromises: this.transitiveModule.loadingPromises
};
};
return CompileNgModuleMetadata;
}());
export var TransitiveCompileNgModuleMetadata = (function () {
function TransitiveCompileNgModuleMetadata(modules, providers, entryComponents, directives, pipes) {
function TransitiveCompileNgModuleMetadata(modules, providers, entryComponents, directives, pipes, loadingPromises) {
var _this = this;

@@ -437,6 +501,7 @@ this.modules = modules;

this.pipes = pipes;
this.loadingPromises = loadingPromises;
this.directivesSet = new Set();
this.pipesSet = new Set();
directives.forEach(function (dir) { return _this.directivesSet.add(dir.type.reference); });
pipes.forEach(function (pipe) { return _this.pipesSet.add(pipe.type.reference); });
directives.forEach(function (dir) { return _this.directivesSet.add(dir.reference); });
pipes.forEach(function (pipe) { return _this.pipesSet.add(pipe.reference); });
}

@@ -452,3 +517,3 @@ return TransitiveCompileNgModuleMetadata;

});
return MapWrapper.values(map);
return Array.from(map.values());
}

@@ -455,0 +520,0 @@ function _normalizeArray(obj) {

@@ -1,1 +0,1 @@

{"__symbolic":"module","version":1,"metadata":{"isStaticSymbol":{"__symbolic":"function","parameters":["value"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":592,"character":9},"right":"object"},"right":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"value"},"right":null}},"right":{"__symbolic":"index","expression":{"__symbolic":"reference","name":"value"},"index":"name"}},"right":{"__symbolic":"index","expression":{"__symbolic":"reference","name":"value"},"index":"filePath"}}}}}
{"__symbolic":"module","version":1,"metadata":{"isStaticSymbol":{"__symbolic":"function","parameters":["value"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":721,"character":9},"right":"object"},"right":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"value"},"right":null}},"right":{"__symbolic":"index","expression":{"__symbolic":"reference","name":"value"},"index":"name"}},"right":{"__symbolic":"index","expression":{"__symbolic":"reference","name":"value"},"index":"filePath"}}}}}

@@ -244,3 +244,7 @@ /**

args.push(o.literal(ast.strings[ast.strings.length - 1]));
return o.importExpr(resolveIdentifier(Identifiers.interpolate)).callFn(args);
return ast.expressions.length <= 9 ?
o.importExpr(resolveIdentifier(Identifiers.inlineInterpolate)).callFn(args) :
o.importExpr(resolveIdentifier(Identifiers.interpolate)).callFn([
args[0], o.literalArr(args.slice(1))
]);
};

@@ -247,0 +251,0 @@ _AstToIrVisitor.prototype.visitKeyedRead = function (ast, mode) {

@@ -9,2 +9,3 @@ /**

import { COMPILER_OPTIONS, Compiler, CompilerFactory, Inject, Injectable, Optional, PLATFORM_INITIALIZER, ReflectiveInjector, TRANSLATIONS, TRANSLATIONS_FORMAT, ViewEncapsulation, createPlatformFactory, isDevMode, platformCore } from '@angular/core';
import { AnimationParser } from './animation/animation_parser';
import { CompilerConfig } from './config';

@@ -75,3 +76,4 @@ import { DirectiveNormalizer } from './directive_normalizer';

PipeResolver,
NgModuleResolver
NgModuleResolver,
AnimationParser
];

@@ -78,0 +80,0 @@ export var RuntimeCompilerFactory = (function () {

@@ -1,1 +0,1 @@

{"__symbolic":"module","version":1,"metadata":{"COMPILER_PROVIDERS":{"__symbolic":"error","message":"Function call not supported","line":52,"character":16},"RuntimeCompilerFactory":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable"}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject"},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"COMPILER_OPTIONS"}]}]],"parameters":[{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","module":"@angular/core","name":"CompilerOptions"}]}]}],"createCompiler":[{"__symbolic":"method"}]}},"platformCoreDynamic":{"__symbolic":"error","message":"Reference to a non-exported function","line":117,"character":9,"context":{"name":"_initReflector"}}}}
{"__symbolic":"module","version":1,"metadata":{"COMPILER_PROVIDERS":{"__symbolic":"error","message":"Function call not supported","line":53,"character":16},"RuntimeCompilerFactory":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable"}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject"},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"COMPILER_OPTIONS"}]}]],"parameters":[{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","module":"@angular/core","name":"CompilerOptions"}]}]}],"createCompiler":[{"__symbolic":"method"}]}},"platformCoreDynamic":{"__symbolic":"error","message":"Reference to a non-exported function","line":119,"character":9,"context":{"name":"_initReflector"}}}}

@@ -1,2 +0,10 @@

import { CompileDirectiveMetadata, CompileStylesheetMetadata, CompileTemplateMetadata, CompileTypeMetadata } from './compile_metadata';
/**
* @license
* Copyright Google Inc. All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.io/license
*/
import { ViewEncapsulation } from '@angular/core';
import { CompileAnimationEntryMetadata, CompileDirectiveMetadata, CompileStylesheetMetadata, CompileTemplateMetadata } from './compile_metadata';
import { CompilerConfig } from './config';

@@ -7,2 +15,13 @@ import { HtmlParser } from './ml_parser/html_parser';

import { SyncAsyncResult } from './util';
export interface PrenormalizedTemplateMetadata {
componentType: any;
moduleUrl: string;
template?: string;
templateUrl?: string;
styles?: string[];
styleUrls?: string[];
interpolation?: [string, string];
encapsulation?: ViewEncapsulation;
animations?: CompileAnimationEntryMetadata[];
}
export declare class DirectiveNormalizer {

@@ -18,6 +37,6 @@ private _resourceLoader;

private _fetch(url);
normalizeDirective(directive: CompileDirectiveMetadata): SyncAsyncResult<CompileDirectiveMetadata>;
normalizeTemplateSync(directiveType: CompileTypeMetadata, template: CompileTemplateMetadata): CompileTemplateMetadata;
normalizeTemplateAsync(directiveType: CompileTypeMetadata, template: CompileTemplateMetadata): Promise<CompileTemplateMetadata>;
normalizeLoadedTemplate(directiveType: CompileTypeMetadata, templateMeta: CompileTemplateMetadata, template: string, templateAbsUrl: string): CompileTemplateMetadata;
normalizeTemplate(prenormData: PrenormalizedTemplateMetadata): SyncAsyncResult<CompileTemplateMetadata>;
normalizeTemplateSync(prenomData: PrenormalizedTemplateMetadata): CompileTemplateMetadata;
normalizeTemplateAsync(prenomData: PrenormalizedTemplateMetadata): Promise<CompileTemplateMetadata>;
normalizeLoadedTemplate(prenomData: PrenormalizedTemplateMetadata, template: string, templateAbsUrl: string): CompileTemplateMetadata;
normalizeExternalStylesheets(templateMeta: CompileTemplateMetadata): Promise<CompileTemplateMetadata>;

@@ -24,0 +43,0 @@ private _loadMissingExternalStylesheets(styleUrls, loadedStylesheets?);

@@ -9,6 +9,5 @@ /**

import { Injectable, ViewEncapsulation } from '@angular/core';
import { CompileDirectiveMetadata, CompileStylesheetMetadata, CompileTemplateMetadata } from './compile_metadata';
import { CompileStylesheetMetadata, CompileTemplateMetadata } from './compile_metadata';
import { CompilerConfig } from './config';
import { MapWrapper } from './facade/collection';
import { isBlank, isPresent } from './facade/lang';
import { isBlank, isPresent, stringify } from './facade/lang';
import * as html from './ml_parser/ast';

@@ -47,46 +46,37 @@ import { HtmlParser } from './ml_parser/html_parser';

};
DirectiveNormalizer.prototype.normalizeDirective = function (directive) {
DirectiveNormalizer.prototype.normalizeTemplate = function (prenormData) {
var _this = this;
if (!directive.isComponent) {
// For non components there is nothing to be normalized yet.
return new SyncAsyncResult(directive, Promise.resolve(directive));
}
var normalizedTemplateSync = null;
var normalizedTemplateAsync;
if (isPresent(directive.template.template)) {
normalizedTemplateSync = this.normalizeTemplateSync(directive.type, directive.template);
if (isPresent(prenormData.template)) {
normalizedTemplateSync = this.normalizeTemplateSync(prenormData);
normalizedTemplateAsync = Promise.resolve(normalizedTemplateSync);
}
else if (directive.template.templateUrl) {
normalizedTemplateAsync = this.normalizeTemplateAsync(directive.type, directive.template);
else if (prenormData.templateUrl) {
normalizedTemplateAsync = this.normalizeTemplateAsync(prenormData);
}
else {
throw new Error("No template specified for component " + directive.type.name);
throw new Error("No template specified for component " + stringify(prenormData.componentType));
}
if (normalizedTemplateSync && normalizedTemplateSync.styleUrls.length === 0) {
// sync case
var normalizedDirective = _cloneDirectiveWithTemplate(directive, normalizedTemplateSync);
return new SyncAsyncResult(normalizedDirective, Promise.resolve(normalizedDirective));
return new SyncAsyncResult(normalizedTemplateSync);
}
else {
// async case
return new SyncAsyncResult(null, normalizedTemplateAsync
.then(function (normalizedTemplate) { return _this.normalizeExternalStylesheets(normalizedTemplate); })
.then(function (normalizedTemplate) {
return _cloneDirectiveWithTemplate(directive, normalizedTemplate);
}));
return new SyncAsyncResult(null, normalizedTemplateAsync.then(function (normalizedTemplate) { return _this.normalizeExternalStylesheets(normalizedTemplate); }));
}
};
DirectiveNormalizer.prototype.normalizeTemplateSync = function (directiveType, template) {
return this.normalizeLoadedTemplate(directiveType, template, template.template, directiveType.moduleUrl);
DirectiveNormalizer.prototype.normalizeTemplateSync = function (prenomData) {
return this.normalizeLoadedTemplate(prenomData, prenomData.template, prenomData.moduleUrl);
};
DirectiveNormalizer.prototype.normalizeTemplateAsync = function (directiveType, template) {
DirectiveNormalizer.prototype.normalizeTemplateAsync = function (prenomData) {
var _this = this;
var templateUrl = this._urlResolver.resolve(directiveType.moduleUrl, template.templateUrl);
var templateUrl = this._urlResolver.resolve(prenomData.moduleUrl, prenomData.templateUrl);
return this._fetch(templateUrl)
.then(function (value) { return _this.normalizeLoadedTemplate(directiveType, template, value, templateUrl); });
.then(function (value) { return _this.normalizeLoadedTemplate(prenomData, value, templateUrl); });
};
DirectiveNormalizer.prototype.normalizeLoadedTemplate = function (directiveType, templateMeta, template, templateAbsUrl) {
var interpolationConfig = InterpolationConfig.fromArray(templateMeta.interpolation);
var rootNodesAndErrors = this._htmlParser.parse(template, directiveType.name, false, interpolationConfig);
DirectiveNormalizer.prototype.normalizeLoadedTemplate = function (prenomData, template, templateAbsUrl) {
var interpolationConfig = InterpolationConfig.fromArray(prenomData.interpolation);
var rootNodesAndErrors = this._htmlParser.parse(template, stringify(prenomData.componentType), false, interpolationConfig);
if (rootNodesAndErrors.errors.length > 0) {

@@ -97,5 +87,5 @@ var errorString = rootNodesAndErrors.errors.join('\n');

var templateMetadataStyles = this.normalizeStylesheet(new CompileStylesheetMetadata({
styles: templateMeta.styles,
styleUrls: templateMeta.styleUrls,
moduleUrl: directiveType.moduleUrl
styles: prenomData.styles,
styleUrls: prenomData.styleUrls,
moduleUrl: prenomData.moduleUrl
}));

@@ -105,3 +95,3 @@ var visitor = new TemplatePreparseVisitor();

var templateStyles = this.normalizeStylesheet(new CompileStylesheetMetadata({ styles: visitor.styles, styleUrls: visitor.styleUrls, moduleUrl: templateAbsUrl }));
var encapsulation = templateMeta.encapsulation;
var encapsulation = prenomData.encapsulation;
if (isBlank(encapsulation)) {

@@ -120,6 +110,5 @@ encapsulation = this._config.defaultEncapsulation;

templateUrl: templateAbsUrl, styles: styles, styleUrls: styleUrls,
externalStylesheets: templateMeta.externalStylesheets,
ngContentSelectors: visitor.ngContentSelectors,
animations: templateMeta.animations,
interpolation: templateMeta.interpolation,
animations: prenomData.animations,
interpolation: prenomData.interpolation,
});

@@ -151,3 +140,3 @@ };

}); }))
.then(function (_) { return MapWrapper.values(loadedStylesheets); });
.then(function (_) { return Array.from(loadedStylesheets.values()); });
};

@@ -193,9 +182,9 @@ DirectiveNormalizer.prototype.normalizeStylesheet = function (stylesheet) {

case PreparsedElementType.STYLE:
var textContent = '';
var textContent_1 = '';
ast.children.forEach(function (child) {
if (child instanceof html.Text) {
textContent += child.value;
textContent_1 += child.value;
}
});
this.styles.push(textContent);
this.styles.push(textContent_1);
break;

@@ -224,21 +213,2 @@ case PreparsedElementType.STYLESHEET:

}());
function _cloneDirectiveWithTemplate(directive, template) {
return new CompileDirectiveMetadata({
type: directive.type,
isComponent: directive.isComponent,
selector: directive.selector,
exportAs: directive.exportAs,
changeDetection: directive.changeDetection,
inputs: directive.inputs,
outputs: directive.outputs,
hostListeners: directive.hostListeners,
hostProperties: directive.hostProperties,
hostAttributes: directive.hostAttributes,
providers: directive.providers,
viewProviders: directive.viewProviders,
queries: directive.queries,
viewQueries: directive.viewQueries,
entryComponents: directive.entryComponents, template: template,
});
}
//# sourceMappingURL=directive_normalizer.js.map

@@ -1,1 +0,1 @@

{"__symbolic":"module","version":1,"metadata":{"DirectiveNormalizer":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable"}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"./resource_loader","name":"ResourceLoader"},{"__symbolic":"reference","module":"./url_resolver","name":"UrlResolver"},{"__symbolic":"reference","module":"./ml_parser/html_parser","name":"HtmlParser"},{"__symbolic":"reference","module":"./config","name":"CompilerConfig"}]}],"clearCache":[{"__symbolic":"method"}],"clearCacheFor":[{"__symbolic":"method"}],"_fetch":[{"__symbolic":"method"}],"normalizeDirective":[{"__symbolic":"method"}],"normalizeTemplateSync":[{"__symbolic":"method"}],"normalizeTemplateAsync":[{"__symbolic":"method"}],"normalizeLoadedTemplate":[{"__symbolic":"method"}],"normalizeExternalStylesheets":[{"__symbolic":"method"}],"_loadMissingExternalStylesheets":[{"__symbolic":"method"}],"normalizeStylesheet":[{"__symbolic":"method"}]}}}}
{"__symbolic":"module","version":1,"metadata":{"DirectiveNormalizer":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable"}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"./resource_loader","name":"ResourceLoader"},{"__symbolic":"reference","module":"./url_resolver","name":"UrlResolver"},{"__symbolic":"reference","module":"./ml_parser/html_parser","name":"HtmlParser"},{"__symbolic":"reference","module":"./config","name":"CompilerConfig"}]}],"clearCache":[{"__symbolic":"method"}],"clearCacheFor":[{"__symbolic":"method"}],"_fetch":[{"__symbolic":"method"}],"normalizeTemplate":[{"__symbolic":"method"}],"normalizeTemplateSync":[{"__symbolic":"method"}],"normalizeTemplateAsync":[{"__symbolic":"method"}],"normalizeLoadedTemplate":[{"__symbolic":"method"}],"normalizeExternalStylesheets":[{"__symbolic":"method"}],"_loadMissingExternalStylesheets":[{"__symbolic":"method"}],"normalizeStylesheet":[{"__symbolic":"method"}]}}}}

@@ -13,2 +13,3 @@ /**

constructor(_reflector?: ReflectorReader);
isDirective(type: Type<any>): boolean;
/**

@@ -15,0 +16,0 @@ * Return {@link Directive} for a given `Type`.

@@ -25,2 +25,6 @@ /**

}
DirectiveResolver.prototype.isDirective = function (type) {
var typeMetadata = this._reflector.annotations(resolveForwardRef(type));
return typeMetadata && typeMetadata.some(isDirectiveMetadata);
};
/**

@@ -27,0 +31,0 @@ * Return {@link Directive} for a given `Type`.

@@ -1,1 +0,1 @@

{"__symbolic":"module","version":1,"metadata":{"DirectiveResolver":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable"}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"./private_import_core","name":"ReflectorReader"}]}],"resolve":[{"__symbolic":"method"}],"_mergeWithPropertyMetadata":[{"__symbolic":"method"}],"_extractPublicName":[{"__symbolic":"method"}],"_merge":[{"__symbolic":"method"}]}}}}
{"__symbolic":"module","version":1,"metadata":{"DirectiveResolver":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable"}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"./private_import_core","name":"ReflectorReader"}]}],"isDirective":[{"__symbolic":"method"}],"resolve":[{"__symbolic":"method"}],"_mergeWithPropertyMetadata":[{"__symbolic":"method"}],"_extractPublicName":[{"__symbolic":"method"}],"_merge":[{"__symbolic":"method"}]}}}}

@@ -1,2 +0,2 @@

import { CompileDirectiveMetadata, CompileIdentifierMetadata } from './compile_metadata';
import { CompileDirectiveMetadata, CompileDirectiveSummary, CompileIdentifierMetadata } from './compile_metadata';
import { CompilerConfig } from './config';

@@ -36,5 +36,5 @@ import { Parser } from './expression_parser/parser';

static ngOnDetach(hostProps: BoundElementPropertyAst[], dirWrapper: o.Expression, view: o.Expression, componentView: o.Expression, renderEl: o.Expression): o.Statement[];
static ngOnDestroy(dir: CompileDirectiveMetadata, dirWrapper: o.Expression): o.Statement[];
static subscribe(dirMeta: CompileDirectiveMetadata, hostProps: BoundElementPropertyAst[], usedEvents: string[], dirWrapper: o.Expression, view: o.Expression, eventListener: o.Expression): o.Statement[];
static ngOnDestroy(dir: CompileDirectiveSummary, dirWrapper: o.Expression): o.Statement[];
static subscribe(dirMeta: CompileDirectiveSummary, hostProps: BoundElementPropertyAst[], usedEvents: string[], dirWrapper: o.Expression, view: o.Expression, eventListener: o.Expression): o.Statement[];
static handleEvent(hostEvents: BoundEventAst[], dirWrapper: o.Expression, eventName: o.Expression, event: o.Expression): o.Expression;
}

@@ -293,4 +293,4 @@ /**

var sourceSpan = new ParseSourceSpan(new ParseLocation(sourceFile, null, null, null), new ParseLocation(sourceFile, null, null, null));
var parsedHostProps = parser.createDirectiveHostPropertyAsts(dirMeta, sourceSpan);
var parsedHostListeners = parser.createDirectiveHostEventAsts(dirMeta, sourceSpan);
var parsedHostProps = parser.createDirectiveHostPropertyAsts(dirMeta.toSummary(), sourceSpan);
var parsedHostListeners = parser.createDirectiveHostEventAsts(dirMeta.toSummary(), sourceSpan);
return new ParseResult(parsedHostProps, parsedHostListeners, errors);

@@ -297,0 +297,0 @@ }

@@ -164,2 +164,3 @@ export declare class ParserError {

export declare class TemplateBinding {
span: ParseSpan;
key: string;

@@ -169,3 +170,3 @@ keyIsVar: boolean;

expression: ASTWithSource;
constructor(key: string, keyIsVar: boolean, name: string, expression: ASTWithSource);
constructor(span: ParseSpan, key: string, keyIsVar: boolean, name: string, expression: ASTWithSource);
}

@@ -172,0 +173,0 @@ export interface AstVisitor {

@@ -335,3 +335,4 @@ /**

export var TemplateBinding = (function () {
function TemplateBinding(key, keyIsVar, name, expression) {
function TemplateBinding(span, key, keyIsVar, name, expression) {
this.span = span;
this.key = key;

@@ -338,0 +339,0 @@ this.keyIsVar = keyIsVar;

@@ -120,3 +120,4 @@ /**

_Scanner.prototype.scanToken = function () {
var input = this.input, length = this.length, peek = this.peek, index = this.index;
var input = this.input, length = this.length;
var peek = this.peek, index = this.index;
// Skip whitespace.

@@ -271,6 +272,6 @@ while (peek <= chars.$SPACE) {

var hex = input.substring(this.index + 1, this.index + 5);
try {
unescapedCode = NumberWrapper.parseInt(hex, 16);
if (/^[0-9a-f]+$/i.test(hex)) {
unescapedCode = parseInt(hex, 16);
}
catch (e) {
else {
return this.error("Invalid unicode escape [\\u" + hex + "]", 0);

@@ -277,0 +278,0 @@ }

@@ -26,3 +26,3 @@ import { InterpolationConfig } from '../ml_parser/interpolation_config';

private _parseQuote(input, location);
parseTemplateBindings(input: string, location: any): TemplateBindingParseResult;
parseTemplateBindings(prefixToken: string, input: string, location: any): TemplateBindingParseResult;
parseInterpolation(input: string, location: any, interpolationConfig?: InterpolationConfig): ASTWithSource;

@@ -29,0 +29,0 @@ splitInterpolation(input: string, location: string, interpolationConfig?: InterpolationConfig): SplitInterpolation;

@@ -90,4 +90,12 @@ /**

};
Parser.prototype.parseTemplateBindings = function (input, location) {
Parser.prototype.parseTemplateBindings = function (prefixToken, input, location) {
var tokens = this._lexer.tokenize(input);
if (prefixToken) {
// Prefix the tokens with the tokens from prefixToken but have them take no space (0 index).
var prefixTokens = this._lexer.tokenize(prefixToken).map(function (t) {
t.index = 0;
return t;
});
tokens.unshift.apply(tokens, prefixTokens);
}
return new _ParseAST(input, location, tokens, input.length, false, this.errors, 0)

@@ -138,2 +146,4 @@ .parseTemplateBindings();

this._reportError('Blank expressions are not allowed in interpolated strings', input, "at column " + this._findInterpolationErrorColumn(parts, i, interpolationConfig) + " in", location);
expressions.push('$implict');
offsets.push(offset);
}

@@ -301,3 +311,3 @@ }

do {
var name = this.expectIdentifierOrKeyword();
var name_1 = this.expectIdentifierOrKeyword();
var args = [];

@@ -307,3 +317,3 @@ while (this.optionalCharacter(chars.$COLON)) {

}
result = new BindingPipe(this.span(result.span.start - this.offset), result, name, args);
result = new BindingPipe(this.span(result.span.start - this.offset), result, name_1, args);
} while (this.optionalOperator('|'));

@@ -636,2 +646,3 @@ }

while (this.index < this.tokens.length) {
var start = this.inputIndex;
var keyIsVar = this.peekKeywordLet();

@@ -651,19 +662,19 @@ if (keyIsVar) {

this.optionalCharacter(chars.$COLON);
var name = null;
var name_2 = null;
var expression = null;
if (keyIsVar) {
if (this.optionalOperator('=')) {
name = this.expectTemplateBindingKey();
name_2 = this.expectTemplateBindingKey();
}
else {
name = '\$implicit';
name_2 = '\$implicit';
}
}
else if (this.next !== EOF && !this.peekKeywordLet()) {
var start = this.inputIndex;
var start_1 = this.inputIndex;
var ast = this.parsePipe();
var source = this.input.substring(start, this.inputIndex);
var source = this.input.substring(start_1 - this.offset, this.inputIndex - this.offset);
expression = new ASTWithSource(ast, source, this.location, this.errors);
}
bindings.push(new TemplateBinding(key, keyIsVar, name, expression));
bindings.push(new TemplateBinding(this.span(start), key, keyIsVar, name_2, expression));
if (!this.optionalCharacter(chars.$SEMICOLON)) {

@@ -670,0 +681,0 @@ this.optionalCharacter(chars.$COMMA);

@@ -1,8 +0,1 @@

export declare class MapWrapper {
static createFromStringMap<T>(stringMap: {
[key: string]: T;
}): Map<string, T>;
static keys<K>(m: Map<K, any>): K[];
static values<V>(m: Map<any, V>): V[];
}
/**

@@ -36,7 +29,6 @@ * Wraps Javascript Objects

static equals(a: any[], b: any[]): boolean;
static maximum<T>(list: T[], predicate: (t: T) => number): T;
static flatten<T>(list: Array<T | T[]>): T[];
}
export declare function isListLikeIterable(obj: any): boolean;
export declare function areIterablesEqual(a: any, b: any, comparator: Function): boolean;
export declare function iterateListLike(obj: any, fn: Function): void;
export declare function areIterablesEqual(a: any, b: any, comparator: (a: any, b: any) => boolean): boolean;
export declare function iterateListLike(obj: any, fn: (p: any) => any): void;

@@ -8,38 +8,3 @@ /**

*/
import { getSymbolIterator, isJsObject, isPresent } from './lang';
// Safari doesn't implement MapIterator.next(), which is used is Traceur's polyfill of Array.from
// TODO(mlaval): remove the work around once we have a working polyfill of Array.from
var _arrayFromMap = (function () {
try {
if ((new Map()).values().next) {
return function createArrayFromMap(m, getValues) {
return getValues ? Array.from(m.values()) : Array.from(m.keys());
};
}
}
catch (e) {
}
return function createArrayFromMapWithForeach(m, getValues) {
var res = new Array(m.size), i = 0;
m.forEach(function (v, k) {
res[i] = getValues ? v : k;
i++;
});
return res;
};
})();
export var MapWrapper = (function () {
function MapWrapper() {
}
MapWrapper.createFromStringMap = function (stringMap) {
var result = new Map();
for (var prop in stringMap) {
result.set(prop, stringMap[prop]);
}
return result;
};
MapWrapper.keys = function (m) { return _arrayFromMap(m, false); };
MapWrapper.values = function (m) { return _arrayFromMap(m, true); };
return MapWrapper;
}());
import { getSymbolIterator, isJsObject } from './lang';
/**

@@ -85,3 +50,5 @@ * Wraps Javascript Objects

var index = list.indexOf(items[i]);
list.splice(index, 1);
if (index > -1) {
list.splice(index, 1);
}
}

@@ -106,42 +73,10 @@ };

};
ListWrapper.maximum = function (list, predicate) {
if (list.length == 0) {
return null;
}
var solution = null;
var maxValue = -Infinity;
for (var index = 0; index < list.length; index++) {
var candidate = list[index];
if (candidate == null) {
continue;
}
var candidateValue = predicate(candidate);
if (candidateValue > maxValue) {
solution = candidate;
maxValue = candidateValue;
}
}
return solution;
};
ListWrapper.flatten = function (list) {
var target = [];
_flattenArray(list, target);
return target;
return list.reduce(function (flat, item) {
var flatItem = Array.isArray(item) ? ListWrapper.flatten(item) : item;
return flat.concat(flatItem);
}, []);
};
return ListWrapper;
}());
function _flattenArray(source, target) {
if (isPresent(source)) {
for (var i = 0; i < source.length; i++) {
var item = source[i];
if (Array.isArray(item)) {
_flattenArray(item, target);
}
else {
target.push(item);
}
}
}
return target;
}
export function isListLikeIterable(obj) {

@@ -148,0 +83,0 @@ if (!isJsObject(obj))

@@ -41,3 +41,2 @@

static parseIntAutoRadix(text: string): number;
static parseInt(text: string, radix: number): number;
static isNumeric(value: any): boolean;

@@ -44,0 +43,0 @@ }

@@ -54,3 +54,3 @@ /**

}
if (token === undefined || token === null) {
if (token == null) {
return '' + token;

@@ -78,21 +78,2 @@ }

};
NumberWrapper.parseInt = function (text, radix) {
if (radix == 10) {
if (/^(\-|\+)?[0-9]+$/.test(text)) {
return parseInt(text, radix);
}
}
else if (radix == 16) {
if (/^(\-|\+)?[0-9ABCDEFabcdef]+$/.test(text)) {
return parseInt(text, radix);
}
}
else {
var result = parseInt(text, radix);
if (!isNaN(result)) {
return result;
}
}
throw new Error('Invalid integer literal when parsing ' + text + ' in base ' + radix);
};
NumberWrapper.isNumeric = function (value) { return !isNaN(value - parseFloat(value)); };

@@ -118,8 +99,8 @@ return NumberWrapper;

while (parts.length > 1) {
var name = parts.shift();
if (obj.hasOwnProperty(name) && isPresent(obj[name])) {
obj = obj[name];
var name_1 = parts.shift();
if (obj.hasOwnProperty(name_1) && obj[name_1] != null) {
obj = obj[name_1];
}
else {
obj = obj[name] = {};
obj = obj[name_1] = {};
}

@@ -126,0 +107,0 @@ }

@@ -1,1 +0,1 @@

{"__symbolic":"module","version":1,"metadata":{"getTypeNameForDebugging":{"__symbolic":"function","parameters":["type"],"value":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"index","expression":{"__symbolic":"reference","name":"type"},"index":"name"},"right":{"__symbolic":"error","message":"Expression form not supported","line":60,"character":25}}},"isPresent":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"binop","operator":"!=","left":{"__symbolic":"reference","name":"obj"},"right":null}},"isBlank":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"binop","operator":"==","left":{"__symbolic":"reference","name":"obj"},"right":null}},"isStrictStringMap":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":80,"character":9},"right":"object"},"right":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"obj"},"right":null}},"right":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Object"},"member":"getPrototypeOf"},"arguments":[{"__symbolic":"reference","name":"obj"}]},"right":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Object"},"member":"getPrototypeOf"},"arguments":[{}]}}}},"isDate":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"instanceof","left":{"__symbolic":"reference","name":"obj"},"right":{"__symbolic":"reference","name":"Date"}},"right":{"__symbolic":"pre","operator":"!","operand":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"isNaN"},"arguments":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"obj"},"member":"valueOf"}}]}}}},"looseIdentical":{"__symbolic":"function","parameters":["a","b"],"value":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"reference","name":"a"},"right":{"__symbolic":"reference","name":"b"}},"right":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":140,"character":20},"right":"number"},"right":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":140,"character":45},"right":"number"}},"right":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"isNaN"},"arguments":[{"__symbolic":"reference","name":"a"}]}},"right":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"isNaN"},"arguments":[{"__symbolic":"reference","name":"b"}]}}}},"isJsObject":{"__symbolic":"function","parameters":["o"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"o"},"right":null},"right":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":144,"character":24},"right":"function"},"right":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":144,"character":51},"right":"object"}}}},"isPrimitive":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"pre","operator":"!","operand":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"isJsObject"},"arguments":[{"__symbolic":"reference","name":"obj"}]}}},"escapeRegExp":{"__symbolic":"function","parameters":["s"],"value":{"__symbolic":"error","message":"Expression form not supported","line":199,"character":19}}}}
{"__symbolic":"module","version":1,"metadata":{"getTypeNameForDebugging":{"__symbolic":"function","parameters":["type"],"value":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"index","expression":{"__symbolic":"reference","name":"type"},"index":"name"},"right":{"__symbolic":"error","message":"Expression form not supported","line":60,"character":25}}},"isPresent":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"binop","operator":"!=","left":{"__symbolic":"reference","name":"obj"},"right":null}},"isBlank":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"binop","operator":"==","left":{"__symbolic":"reference","name":"obj"},"right":null}},"isStrictStringMap":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":80,"character":9},"right":"object"},"right":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"obj"},"right":null}},"right":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Object"},"member":"getPrototypeOf"},"arguments":[{"__symbolic":"reference","name":"obj"}]},"right":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Object"},"member":"getPrototypeOf"},"arguments":[{}]}}}},"isDate":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"instanceof","left":{"__symbolic":"reference","name":"obj"},"right":{"__symbolic":"reference","name":"Date"}},"right":{"__symbolic":"pre","operator":"!","operand":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"isNaN"},"arguments":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"obj"},"member":"valueOf"}}]}}}},"looseIdentical":{"__symbolic":"function","parameters":["a","b"],"value":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"reference","name":"a"},"right":{"__symbolic":"reference","name":"b"}},"right":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":123,"character":20},"right":"number"},"right":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":123,"character":45},"right":"number"}},"right":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"isNaN"},"arguments":[{"__symbolic":"reference","name":"a"}]}},"right":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"isNaN"},"arguments":[{"__symbolic":"reference","name":"b"}]}}}},"isJsObject":{"__symbolic":"function","parameters":["o"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"o"},"right":null},"right":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":127,"character":24},"right":"function"},"right":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":127,"character":51},"right":"object"}}}},"isPrimitive":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"pre","operator":"!","operand":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"isJsObject"},"arguments":[{"__symbolic":"reference","name":"obj"}]}}},"escapeRegExp":{"__symbolic":"function","parameters":["s"],"value":{"__symbolic":"error","message":"Expression form not supported","line":182,"character":19}}}}

@@ -1,1 +0,1 @@

{"__symbolic":"module","version":1,"metadata":{"digestMessage":{"__symbolic":"function","parameters":["message"],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"sha1"},"arguments":[{"__symbolic":"binop","operator":"+","left":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"serializeNodes"},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"message"},"member":"nodes"}]},"member":"join"},"arguments":[""]},"right":{"__symbolic":"error","message":"Expression form not supported","line":11,"character":55}}]}},"serializeNodes":{"__symbolic":"function","parameters":["nodes"],"value":{"__symbolic":"error","message":"Function call not supported","line":51,"character":19}}}}
{"__symbolic":"module","version":1,"metadata":{"digestMessage":{"__symbolic":"function","parameters":["message"],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"sha1"},"arguments":[{"__symbolic":"binop","operator":"+","left":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"serializeNodes"},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"message"},"member":"nodes"}]},"member":"join"},"arguments":[""]},"right":{"__symbolic":"error","message":"Expression form not supported","line":11,"character":55}}]}},"serializeNodes":{"__symbolic":"function","parameters":["nodes"],"value":{"__symbolic":"error","message":"Function call not supported","line":52,"character":19}}}}

@@ -12,3 +12,3 @@ import { CompileIdentifierMetadata, CompileTokenMetadata } from './compile_metadata';

static DebugAppView: IdentifierSpec;
static AppElement: IdentifierSpec;
static ViewContainer: IdentifierSpec;
static ElementRef: IdentifierSpec;

@@ -24,2 +24,4 @@ static ViewContainerRef: IdentifierSpec;

static ComponentFactory: IdentifierSpec;
static ComponentRef_: IdentifierSpec;
static ComponentRef: IdentifierSpec;
static NgModuleFactory: IdentifierSpec;

@@ -41,2 +43,3 @@ static NgModuleInjector: IdentifierSpec;

static devModeEqual: IdentifierSpec;
static inlineInterpolate: IdentifierSpec;
static interpolate: IdentifierSpec;

@@ -70,2 +73,3 @@ static castByValue: IdentifierSpec;

static subscribeToRenderElement: IdentifierSpec;
static createRenderComponentType: IdentifierSpec;
static noop: IdentifierSpec;

@@ -72,0 +76,0 @@ }

@@ -8,5 +8,5 @@ /**

*/
import { ANALYZE_FOR_ENTRY_COMPONENTS, ChangeDetectionStrategy, ChangeDetectorRef, ComponentFactory, ComponentFactoryResolver, ElementRef, Injector, LOCALE_ID, NgModuleFactory, QueryList, RenderComponentType, Renderer, SecurityContext, SimpleChange, TRANSLATIONS_FORMAT, TemplateRef, ViewContainerRef, ViewEncapsulation } from '@angular/core';
import { ANALYZE_FOR_ENTRY_COMPONENTS, ChangeDetectionStrategy, ChangeDetectorRef, ComponentFactory, ComponentFactoryResolver, ComponentRef, ElementRef, Injector, LOCALE_ID, NgModuleFactory, QueryList, RenderComponentType, Renderer, SecurityContext, SimpleChange, TRANSLATIONS_FORMAT, TemplateRef, ViewContainerRef, ViewEncapsulation } from '@angular/core';
import { CompileIdentifierMetadata, CompileTokenMetadata } from './compile_metadata';
import { AnimationGroupPlayer, AnimationKeyframe, AnimationSequencePlayer, AnimationStyles, AnimationTransition, AppElement, AppView, ChangeDetectorStatus, CodegenComponentFactoryResolver, DebugAppView, DebugContext, NgModuleInjector, NoOpAnimationPlayer, StaticNodeDebugInfo, TemplateRef_, UNINITIALIZED, ValueUnwrapper, ViewType, balanceAnimationKeyframes, clearStyles, collectAndResolveStyles, devModeEqual, prepareFinalAnimationStyles, reflector, registerModuleFactory, renderStyles, view_utils } from './private_import_core';
import { AnimationGroupPlayer, AnimationKeyframe, AnimationSequencePlayer, AnimationStyles, AnimationTransition, AppView, ChangeDetectorStatus, CodegenComponentFactoryResolver, ComponentRef_, DebugAppView, DebugContext, NgModuleInjector, NoOpAnimationPlayer, StaticNodeDebugInfo, TemplateRef_, UNINITIALIZED, ValueUnwrapper, ViewContainer, ViewType, balanceAnimationKeyframes, clearStyles, collectAndResolveStyles, devModeEqual, prepareFinalAnimationStyles, reflector, registerModuleFactory, renderStyles, view_utils } from './private_import_core';
var APP_VIEW_MODULE_URL = assetUrl('core', 'linker/view');

@@ -35,6 +35,6 @@ var VIEW_UTILS_MODULE_URL = assetUrl('core', 'linker/view_utils');

};
Identifiers.AppElement = {
name: 'AppElement',
moduleUrl: assetUrl('core', 'linker/element'),
runtime: AppElement
Identifiers.ViewContainer = {
name: 'ViewContainer',
moduleUrl: assetUrl('core', 'linker/view_container'),
runtime: ViewContainer
};

@@ -91,2 +91,12 @@ Identifiers.ElementRef = {

};
Identifiers.ComponentRef_ = {
name: 'ComponentRef_',
runtime: ComponentRef_,
moduleUrl: assetUrl('core', 'linker/component_factory')
};
Identifiers.ComponentRef = {
name: 'ComponentRef',
runtime: ComponentRef,
moduleUrl: assetUrl('core', 'linker/component_factory')
};
Identifiers.NgModuleFactory = {

@@ -156,2 +166,7 @@ name: 'NgModuleFactory',

Identifiers.devModeEqual = { name: 'devModeEqual', moduleUrl: CD_MODULE_URL, runtime: devModeEqual };
Identifiers.inlineInterpolate = {
name: 'inlineInterpolate',
moduleUrl: VIEW_UTILS_MODULE_URL,
runtime: view_utils.inlineInterpolate
};
Identifiers.interpolate = {

@@ -304,2 +319,7 @@ name: 'interpolate',

};
Identifiers.createRenderComponentType = {
name: 'createRenderComponentType',
moduleUrl: VIEW_UTILS_MODULE_URL,
runtime: view_utils.createRenderComponentType
};
Identifiers.noop = { name: 'noop', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: view_utils.noop };

@@ -306,0 +326,0 @@ return Identifiers;

@@ -8,4 +8,5 @@ /**

*/
import { AnimationEntryMetadata, AnimationMetadata, AnimationStateMetadata, AnimationStyleMetadata, Provider, Query, Type } from '@angular/core';
import { AnimationEntryMetadata, Type } from '@angular/core';
import * as cpl from './compile_metadata';
import { DirectiveNormalizer } from './directive_normalizer';
import { DirectiveResolver } from './directive_resolver';

@@ -21,5 +22,8 @@ import { NgModuleResolver } from './ng_module_resolver';

private _schemaRegistry;
private _directiveNormalizer;
private _reflector;
private _directiveCache;
private _directiveSummaryCache;
private _pipeCache;
private _pipeSummaryCache;
private _ngModuleCache;

@@ -29,3 +33,3 @@ private _ngModuleOfTypes;

private _anonymousTypeIndex;
constructor(_ngModuleResolver: NgModuleResolver, _directiveResolver: DirectiveResolver, _pipeResolver: PipeResolver, _schemaRegistry: ElementSchemaRegistry, _reflector?: ReflectorReader);
constructor(_ngModuleResolver: NgModuleResolver, _directiveResolver: DirectiveResolver, _pipeResolver: PipeResolver, _schemaRegistry: ElementSchemaRegistry, _directiveNormalizer: DirectiveNormalizer, _reflector?: ReflectorReader);
private sanitizeTokenName(token);

@@ -35,26 +39,51 @@ clearCacheFor(type: Type<any>): void;

getAnimationEntryMetadata(entry: AnimationEntryMetadata): cpl.CompileAnimationEntryMetadata;
getAnimationStateMetadata(value: AnimationStateMetadata): cpl.CompileAnimationStateMetadata;
getAnimationStyleMetadata(value: AnimationStyleMetadata): cpl.CompileAnimationStyleMetadata;
getAnimationMetadata(value: AnimationMetadata): cpl.CompileAnimationMetadata;
getDirectiveMetadata(directiveType: any, throwIfNotFound?: boolean): cpl.CompileDirectiveMetadata;
getNgModuleMetadata(moduleType: any, throwIfNotFound?: boolean): cpl.CompileNgModuleMetadata;
private _verifyModule(moduleMeta);
private _getAnimationStateMetadata(value);
private _getAnimationStyleMetadata(value);
private _getAnimationMetadata(value);
private _loadDirectiveMetadata(directiveType, isSync);
/**
* Gets the metadata for the given directive.
* This assumes `loadNgModuleMetadata` has been called first.
*/
getDirectiveMetadata(directiveType: any): cpl.CompileDirectiveMetadata;
getDirectiveSummary(dirType: any): cpl.CompileDirectiveSummary;
isDirective(type: any): boolean;
isPipe(type: any): boolean;
/**
* Gets the metadata for the given module.
* This assumes `loadNgModuleMetadata` has been called first.
*/
getNgModuleMetadata(moduleType: any): cpl.CompileNgModuleMetadata;
private _loadNgModuleSummary(moduleType, isSync);
/**
* Loads an NgModule and all of its directives. This includes loading the exported directives of
* imported modules,
* but not private directives of imported modules.
*/
loadNgModuleMetadata(moduleType: any, isSync: boolean, throwIfNotFound?: boolean): {
ngModule: cpl.CompileNgModuleMetadata;
loading: Promise<any>;
};
private _loadNgModuleMetadata(moduleType, isSync, throwIfNotFound?);
private _getTypeDescriptor(type);
private _addTypeToModule(type, moduleType);
private _getTransitiveNgModuleMetadata(importedModules, exportedModules);
private _addDirectiveToModule(dirMeta, moduleType, transitiveModule, declaredDirectives, force?);
private _addPipeToModule(pipeMeta, moduleType, transitiveModule, declaredPipes, force?);
getTypeMetadata(type: Type<any>, moduleUrl: string, dependencies?: any[]): cpl.CompileTypeMetadata;
getFactoryMetadata(factory: Function, moduleUrl: string, dependencies?: any[]): cpl.CompileFactoryMetadata;
getPipeMetadata(pipeType: Type<any>, throwIfNotFound?: boolean): cpl.CompilePipeMetadata;
getDependenciesMetadata(typeOrFunc: Type<any> | Function, dependencies: any[]): cpl.CompileDiDependencyMetadata[];
getTokenMetadata(token: any): cpl.CompileTokenMetadata;
getProvidersMetadata(providers: Provider[], targetEntryComponents: cpl.CompileTypeMetadata[], debugInfo?: string): Array<cpl.CompileProviderMetadata | cpl.CompileTypeMetadata | any[]>;
private _getIdentifierMetadata(type, moduleUrl);
private _getTypeMetadata(type, moduleUrl, dependencies?);
private _getFactoryMetadata(factory, moduleUrl, dependencies?);
/**
* Gets the metadata for the given pipe.
* This assumes `loadNgModuleMetadata` has been called first.
*/
getPipeMetadata(pipeType: any): cpl.CompilePipeMetadata;
getPipeSummary(pipeType: any): cpl.CompilePipeSummary;
private _loadPipeMetadata(pipeType);
private _getDependenciesMetadata(typeOrFunc, dependencies);
private _getTokenMetadata(token);
private _getProvidersMetadata(providers, targetEntryComponents, debugInfo?);
private _getEntryComponentsFromProvider(provider);
getProviderMetadata(provider: cpl.ProviderMeta): cpl.CompileProviderMetadata;
getQueriesMetadata(queries: {
[key: string]: Query;
}, isViewQuery: boolean, directiveType: Type<any>): cpl.CompileQueryMetadata[];
private _getQueriesMetadata(queries, isViewQuery, directiveType);
private _queryVarBindings(selector);
getQueryMetadata(q: Query, propertyName: string, typeOrFunc: Type<any> | Function): cpl.CompileQueryMetadata;
private _getQueryMetadata(q, propertyName, typeOrFunc);
}

@@ -16,3 +16,5 @@ /**

import * as cpl from './compile_metadata';
import { DirectiveNormalizer } from './directive_normalizer';
import { DirectiveResolver } from './directive_resolver';
import { ListWrapper } from './facade/collection';
import { isBlank, isPresent, stringify } from './facade/lang';

@@ -23,8 +25,15 @@ import { Identifiers, resolveIdentifierToken } from './identifiers';

import { PipeResolver } from './pipe_resolver';
import { LIFECYCLE_HOOKS_VALUES, ReflectorReader, reflector } from './private_import_core';
import { ComponentStillLoadingError, LIFECYCLE_HOOKS_VALUES, ReflectorReader, reflector } from './private_import_core';
import { ElementSchemaRegistry } from './schema/element_schema_registry';
import { getUrlScheme } from './url_resolver';
import { MODULE_SUFFIX, ValueTransformer, sanitizeIdentifier, visitValue } from './util';
// Design notes:
// - don't lazily create metadata:
// For some metadata, we need to do async work sometimes,
// so the user has to kick off this loading.
// But we want to report errors even when the async work is
// not required to check that the user would have been able
// to wait correctly.
export var CompileMetadataResolver = (function () {
function CompileMetadataResolver(_ngModuleResolver, _directiveResolver, _pipeResolver, _schemaRegistry, _reflector) {
function CompileMetadataResolver(_ngModuleResolver, _directiveResolver, _pipeResolver, _schemaRegistry, _directiveNormalizer, _reflector) {
if (_reflector === void 0) { _reflector = reflector; }

@@ -35,5 +44,8 @@ this._ngModuleResolver = _ngModuleResolver;

this._schemaRegistry = _schemaRegistry;
this._directiveNormalizer = _directiveNormalizer;
this._reflector = _reflector;
this._directiveCache = new Map();
this._directiveSummaryCache = new Map();
this._pipeCache = new Map();
this._pipeSummaryCache = new Map();
this._ngModuleCache = new Map();

@@ -58,47 +70,56 @@ this._ngModuleOfTypes = new Map();

CompileMetadataResolver.prototype.clearCacheFor = function (type) {
var dirMeta = this._directiveCache.get(type);
this._directiveCache.delete(type);
this._directiveSummaryCache.delete(type);
this._pipeCache.delete(type);
this._pipeSummaryCache.delete(type);
this._ngModuleOfTypes.delete(type);
// Clear all of the NgModule as they contain transitive information!
this._ngModuleCache.clear();
if (dirMeta) {
this._directiveNormalizer.clearCacheFor(dirMeta);
}
};
CompileMetadataResolver.prototype.clearCache = function () {
this._directiveCache.clear();
this._directiveSummaryCache.clear();
this._pipeCache.clear();
this._pipeSummaryCache.clear();
this._ngModuleCache.clear();
this._ngModuleOfTypes.clear();
this._directiveNormalizer.clearCache();
};
CompileMetadataResolver.prototype.getAnimationEntryMetadata = function (entry) {
var _this = this;
var defs = entry.definitions.map(function (def) { return _this.getAnimationStateMetadata(def); });
var defs = entry.definitions.map(function (def) { return _this._getAnimationStateMetadata(def); });
return new cpl.CompileAnimationEntryMetadata(entry.name, defs);
};
CompileMetadataResolver.prototype.getAnimationStateMetadata = function (value) {
CompileMetadataResolver.prototype._getAnimationStateMetadata = function (value) {
if (value instanceof AnimationStateDeclarationMetadata) {
var styles = this.getAnimationStyleMetadata(value.styles);
var styles = this._getAnimationStyleMetadata(value.styles);
return new cpl.CompileAnimationStateDeclarationMetadata(value.stateNameExpr, styles);
}
if (value instanceof AnimationStateTransitionMetadata) {
return new cpl.CompileAnimationStateTransitionMetadata(value.stateChangeExpr, this.getAnimationMetadata(value.steps));
return new cpl.CompileAnimationStateTransitionMetadata(value.stateChangeExpr, this._getAnimationMetadata(value.steps));
}
return null;
};
CompileMetadataResolver.prototype.getAnimationStyleMetadata = function (value) {
CompileMetadataResolver.prototype._getAnimationStyleMetadata = function (value) {
return new cpl.CompileAnimationStyleMetadata(value.offset, value.styles);
};
CompileMetadataResolver.prototype.getAnimationMetadata = function (value) {
CompileMetadataResolver.prototype._getAnimationMetadata = function (value) {
var _this = this;
if (value instanceof AnimationStyleMetadata) {
return this.getAnimationStyleMetadata(value);
return this._getAnimationStyleMetadata(value);
}
if (value instanceof AnimationKeyframesSequenceMetadata) {
return new cpl.CompileAnimationKeyframesSequenceMetadata(value.steps.map(function (entry) { return _this.getAnimationStyleMetadata(entry); }));
return new cpl.CompileAnimationKeyframesSequenceMetadata(value.steps.map(function (entry) { return _this._getAnimationStyleMetadata(entry); }));
}
if (value instanceof AnimationAnimateMetadata) {
var animateData = this
.getAnimationMetadata(value.styles);
._getAnimationMetadata(value.styles);
return new cpl.CompileAnimationAnimateMetadata(value.timings, animateData);
}
if (value instanceof AnimationWithStepsMetadata) {
var steps = value.steps.map(function (step) { return _this.getAnimationMetadata(step); });
var steps = value.steps.map(function (step) { return _this._getAnimationMetadata(step); });
if (value instanceof AnimationGroupMetadata) {

@@ -111,16 +132,16 @@ return new cpl.CompileAnimationGroupMetadata(steps);

};
CompileMetadataResolver.prototype.getDirectiveMetadata = function (directiveType, throwIfNotFound) {
CompileMetadataResolver.prototype._loadDirectiveMetadata = function (directiveType, isSync) {
var _this = this;
if (throwIfNotFound === void 0) { throwIfNotFound = true; }
if (this._directiveCache.has(directiveType)) {
return;
}
directiveType = resolveForwardRef(directiveType);
var meta = this._directiveCache.get(directiveType);
if (!meta) {
var dirMeta = this._directiveResolver.resolve(directiveType, throwIfNotFound);
if (!dirMeta) {
return null;
}
var templateMeta = null;
var dirMeta = this._directiveResolver.resolve(directiveType);
if (!dirMeta) {
return null;
}
var moduleUrl = staticTypeModuleUrl(directiveType);
var createDirectiveMetadata = function (templateMeta) {
var changeDetectionStrategy = null;
var viewProviders = [];
var moduleUrl = staticTypeModuleUrl(directiveType);
var entryComponentMetadata = [];

@@ -130,30 +151,14 @@ var selector = dirMeta.selector;

// Component
assertArrayOfStrings('styles', dirMeta.styles);
assertArrayOfStrings('styleUrls', dirMeta.styleUrls);
assertInterpolationSymbols('interpolation', dirMeta.interpolation);
var animations = dirMeta.animations ?
dirMeta.animations.map(function (e) { return _this.getAnimationEntryMetadata(e); }) :
null;
templateMeta = new cpl.CompileTemplateMetadata({
encapsulation: dirMeta.encapsulation,
template: dirMeta.template,
templateUrl: dirMeta.templateUrl,
styles: dirMeta.styles,
styleUrls: dirMeta.styleUrls,
animations: animations,
interpolation: dirMeta.interpolation
});
changeDetectionStrategy = dirMeta.changeDetection;
if (dirMeta.viewProviders) {
viewProviders = this.getProvidersMetadata(dirMeta.viewProviders, entryComponentMetadata, "viewProviders for \"" + stringify(directiveType) + "\"");
viewProviders = _this._getProvidersMetadata(dirMeta.viewProviders, entryComponentMetadata, "viewProviders for \"" + stringify(directiveType) + "\"");
}
moduleUrl = componentModuleUrl(this._reflector, directiveType, dirMeta);
if (dirMeta.entryComponents) {
entryComponentMetadata =
flattenAndDedupeArray(dirMeta.entryComponents)
.map(function (type) { return _this.getTypeMetadata(type, staticTypeModuleUrl(type)); })
.map(function (type) { return _this._getIdentifierMetadata(type, staticTypeModuleUrl(type)); })
.concat(entryComponentMetadata);
}
if (!selector) {
selector = this._schemaRegistry.getDefaultComponentElementName();
selector = _this._schemaRegistry.getDefaultComponentElementName();
}

@@ -169,3 +174,3 @@ }

if (isPresent(dirMeta.providers)) {
providers = this.getProvidersMetadata(dirMeta.providers, entryComponentMetadata, "providers for \"" + stringify(directiveType) + "\"");
providers = _this._getProvidersMetadata(dirMeta.providers, entryComponentMetadata, "providers for \"" + stringify(directiveType) + "\"");
}

@@ -175,10 +180,10 @@ var queries = [];

if (isPresent(dirMeta.queries)) {
queries = this.getQueriesMetadata(dirMeta.queries, false, directiveType);
viewQueries = this.getQueriesMetadata(dirMeta.queries, true, directiveType);
queries = _this._getQueriesMetadata(dirMeta.queries, false, directiveType);
viewQueries = _this._getQueriesMetadata(dirMeta.queries, true, directiveType);
}
meta = cpl.CompileDirectiveMetadata.create({
var meta = cpl.CompileDirectiveMetadata.create({
selector: selector,
exportAs: dirMeta.exportAs,
isComponent: !!templateMeta,
type: this.getTypeMetadata(directiveType, moduleUrl),
type: _this._getTypeMetadata(directiveType, moduleUrl),
template: templateMeta,

@@ -195,7 +200,93 @@ changeDetection: changeDetectionStrategy,

});
this._directiveCache.set(directiveType, meta);
_this._directiveCache.set(directiveType, meta);
_this._directiveSummaryCache.set(directiveType, meta.toSummary());
return meta;
};
if (dirMeta instanceof Component) {
// component
moduleUrl = componentModuleUrl(this._reflector, directiveType, dirMeta);
assertArrayOfStrings('styles', dirMeta.styles);
assertArrayOfStrings('styleUrls', dirMeta.styleUrls);
assertInterpolationSymbols('interpolation', dirMeta.interpolation);
var animations = dirMeta.animations ?
dirMeta.animations.map(function (e) { return _this.getAnimationEntryMetadata(e); }) :
null;
var templateMeta = this._directiveNormalizer.normalizeTemplate({
componentType: directiveType,
moduleUrl: moduleUrl,
encapsulation: dirMeta.encapsulation,
template: dirMeta.template,
templateUrl: dirMeta.templateUrl,
styles: dirMeta.styles,
styleUrls: dirMeta.styleUrls,
animations: animations,
interpolation: dirMeta.interpolation
});
if (templateMeta.syncResult) {
createDirectiveMetadata(templateMeta.syncResult);
return null;
}
else {
if (isSync) {
throw new ComponentStillLoadingError(directiveType);
}
return templateMeta.asyncResult.then(createDirectiveMetadata);
}
}
return meta;
else {
// directive
createDirectiveMetadata(null);
return null;
}
};
CompileMetadataResolver.prototype.getNgModuleMetadata = function (moduleType, throwIfNotFound) {
/**
* Gets the metadata for the given directive.
* This assumes `loadNgModuleMetadata` has been called first.
*/
CompileMetadataResolver.prototype.getDirectiveMetadata = function (directiveType) {
var dirMeta = this._directiveCache.get(directiveType);
if (!dirMeta) {
throw new Error("Illegal state: getDirectiveMetadata can only be called after loadNgModuleMetadata for a module that declares it. Directive " + stringify(directiveType) + ".");
}
return dirMeta;
};
CompileMetadataResolver.prototype.getDirectiveSummary = function (dirType) {
var dirSummary = this._directiveSummaryCache.get(dirType);
if (!dirSummary) {
throw new Error("Illegal state: getDirectiveSummary can only be called after loadNgModuleMetadata for a module that imports it. Directive " + stringify(dirType) + ".");
}
return dirSummary;
};
CompileMetadataResolver.prototype.isDirective = function (type) { return this._directiveResolver.isDirective(type); };
CompileMetadataResolver.prototype.isPipe = function (type) { return this._pipeResolver.isPipe(type); };
/**
* Gets the metadata for the given module.
* This assumes `loadNgModuleMetadata` has been called first.
*/
CompileMetadataResolver.prototype.getNgModuleMetadata = function (moduleType) {
var modMeta = this._ngModuleCache.get(moduleType);
if (!modMeta) {
throw new Error("Illegal state: getNgModuleMetadata can only be called after loadNgModuleMetadata. Module " + stringify(moduleType) + ".");
}
return modMeta;
};
CompileMetadataResolver.prototype._loadNgModuleSummary = function (moduleType, isSync) {
// TODO(tbosch): add logic to read summary files!
// - needs to add directive / pipe summaries to this._directiveSummaryCache /
// this._pipeSummaryCache as well!
var moduleMeta = this._loadNgModuleMetadata(moduleType, isSync, false);
return moduleMeta ? moduleMeta.toSummary() : null;
};
/**
* Loads an NgModule and all of its directives. This includes loading the exported directives of
* imported modules,
* but not private directives of imported modules.
*/
CompileMetadataResolver.prototype.loadNgModuleMetadata = function (moduleType, isSync, throwIfNotFound) {
if (throwIfNotFound === void 0) { throwIfNotFound = true; }
var ngModule = this._loadNgModuleMetadata(moduleType, isSync, throwIfNotFound);
var loading = ngModule ? Promise.all(ngModule.transitiveModule.loadingPromises) : Promise.resolve(null);
return { ngModule: ngModule, loading: loading };
};
CompileMetadataResolver.prototype._loadNgModuleMetadata = function (moduleType, isSync, throwIfNotFound) {
var _this = this;

@@ -205,151 +296,153 @@ if (throwIfNotFound === void 0) { throwIfNotFound = true; }

var compileMeta = this._ngModuleCache.get(moduleType);
if (!compileMeta) {
var meta = this._ngModuleResolver.resolve(moduleType, throwIfNotFound);
if (!meta) {
return null;
}
var declaredDirectives_1 = [];
var exportedDirectives_1 = [];
var declaredPipes_1 = [];
var exportedPipes_1 = [];
var importedModules_1 = [];
var exportedModules_1 = [];
var providers_1 = [];
var entryComponents_1 = [];
var bootstrapComponents = [];
var schemas = [];
if (meta.imports) {
flattenAndDedupeArray(meta.imports).forEach(function (importedType) {
var importedModuleType;
if (isValidType(importedType)) {
importedModuleType = importedType;
if (compileMeta) {
return compileMeta;
}
var meta = this._ngModuleResolver.resolve(moduleType, throwIfNotFound);
if (!meta) {
return null;
}
var declaredDirectives = [];
var exportedNonModuleIdentifiers = [];
var declaredPipes = [];
var importedModules = [];
var exportedModules = [];
var providers = [];
var entryComponents = [];
var bootstrapComponents = [];
var schemas = [];
if (meta.imports) {
flattenAndDedupeArray(meta.imports).forEach(function (importedType) {
var importedModuleType;
if (isValidType(importedType)) {
importedModuleType = importedType;
}
else if (importedType && importedType.ngModule) {
var moduleWithProviders = importedType;
importedModuleType = moduleWithProviders.ngModule;
if (moduleWithProviders.providers) {
providers.push.apply(providers, _this._getProvidersMetadata(moduleWithProviders.providers, entryComponents, "provider for the NgModule '" + stringify(importedModuleType) + "'"));
}
else if (importedType && importedType.ngModule) {
var moduleWithProviders = importedType;
importedModuleType = moduleWithProviders.ngModule;
if (moduleWithProviders.providers) {
providers_1.push.apply(providers_1, _this.getProvidersMetadata(moduleWithProviders.providers, entryComponents_1, "provider for the NgModule '" + stringify(importedModuleType) + "'"));
}
}
if (importedModuleType) {
var importedModuleSummary = _this._loadNgModuleSummary(importedModuleType, isSync);
if (!importedModuleSummary) {
throw new Error("Unexpected " + _this._getTypeDescriptor(importedType) + " '" + stringify(importedType) + "' imported by the module '" + stringify(moduleType) + "'");
}
if (importedModuleType) {
var importedMeta = _this.getNgModuleMetadata(importedModuleType, false);
if (importedMeta === null) {
throw new Error("Unexpected " + _this._getTypeDescriptor(importedType) + " '" + stringify(importedType) + "' imported by the module '" + stringify(moduleType) + "'");
}
importedModules_1.push(importedMeta);
importedModules.push(importedModuleSummary);
}
else {
throw new Error("Unexpected value '" + stringify(importedType) + "' imported by the module '" + stringify(moduleType) + "'");
}
});
}
if (meta.exports) {
flattenAndDedupeArray(meta.exports).forEach(function (exportedType) {
if (!isValidType(exportedType)) {
throw new Error("Unexpected value '" + stringify(exportedType) + "' exported by the module '" + stringify(moduleType) + "'");
}
var exportedModuleSummary = _this._loadNgModuleSummary(exportedType, isSync);
if (exportedModuleSummary) {
exportedModules.push(exportedModuleSummary);
}
else {
exportedNonModuleIdentifiers.push(_this._getIdentifierMetadata(exportedType, staticTypeModuleUrl(exportedType)));
}
});
}
// Note: This will be modified later, so we rely on
// getting a new instance every time!
var transitiveModule = this._getTransitiveNgModuleMetadata(importedModules, exportedModules);
if (meta.declarations) {
flattenAndDedupeArray(meta.declarations).forEach(function (declaredType) {
if (!isValidType(declaredType)) {
throw new Error("Unexpected value '" + stringify(declaredType) + "' declared by the module '" + stringify(moduleType) + "'");
}
var declaredIdentifier = _this._getIdentifierMetadata(declaredType, staticTypeModuleUrl(declaredType));
if (_this._directiveResolver.isDirective(declaredType)) {
transitiveModule.directivesSet.add(declaredType);
transitiveModule.directives.push(declaredIdentifier);
declaredDirectives.push(declaredIdentifier);
_this._addTypeToModule(declaredType, moduleType);
var loadingPromise = _this._loadDirectiveMetadata(declaredType, isSync);
if (loadingPromise) {
transitiveModule.loadingPromises.push(loadingPromise);
}
else {
throw new Error("Unexpected value '" + stringify(importedType) + "' imported by the module '" + stringify(moduleType) + "'");
}
});
}
else if (_this._pipeResolver.isPipe(declaredType)) {
transitiveModule.pipesSet.add(declaredType);
transitiveModule.pipes.push(declaredIdentifier);
declaredPipes.push(declaredIdentifier);
_this._addTypeToModule(declaredType, moduleType);
_this._loadPipeMetadata(declaredType);
}
else {
throw new Error("Unexpected " + _this._getTypeDescriptor(declaredType) + " '" + stringify(declaredType) + "' declared by the module '" + stringify(moduleType) + "'");
}
});
}
var exportedDirectives = [];
var exportedPipes = [];
exportedNonModuleIdentifiers.forEach(function (exportedId) {
if (transitiveModule.directivesSet.has(exportedId.reference)) {
exportedDirectives.push(exportedId);
}
if (meta.exports) {
flattenAndDedupeArray(meta.exports).forEach(function (exportedType) {
if (!isValidType(exportedType)) {
throw new Error("Unexpected value '" + stringify(exportedType) + "' exported by the module '" + stringify(moduleType) + "'");
}
var exportedDirMeta;
var exportedPipeMeta;
var exportedModuleMeta;
if (exportedDirMeta = _this.getDirectiveMetadata(exportedType, false)) {
exportedDirectives_1.push(exportedDirMeta);
}
else if (exportedPipeMeta = _this.getPipeMetadata(exportedType, false)) {
exportedPipes_1.push(exportedPipeMeta);
}
else if (exportedModuleMeta = _this.getNgModuleMetadata(exportedType, false)) {
exportedModules_1.push(exportedModuleMeta);
}
else {
throw new Error("Unexpected " + _this._getTypeDescriptor(exportedType) + " '" + stringify(exportedType) + "' exported by the module '" + stringify(moduleType) + "'");
}
});
else if (transitiveModule.pipesSet.has(exportedId.reference)) {
exportedPipes.push(exportedId);
}
// Note: This will be modified later, so we rely on
// getting a new instance every time!
var transitiveModule_1 = this._getTransitiveNgModuleMetadata(importedModules_1, exportedModules_1);
if (meta.declarations) {
flattenAndDedupeArray(meta.declarations).forEach(function (declaredType) {
if (!isValidType(declaredType)) {
throw new Error("Unexpected value '" + stringify(declaredType) + "' declared by the module '" + stringify(moduleType) + "'");
}
var declaredDirMeta;
var declaredPipeMeta;
if (declaredDirMeta = _this.getDirectiveMetadata(declaredType, false)) {
_this._addDirectiveToModule(declaredDirMeta, moduleType, transitiveModule_1, declaredDirectives_1, true);
}
else if (declaredPipeMeta = _this.getPipeMetadata(declaredType, false)) {
_this._addPipeToModule(declaredPipeMeta, moduleType, transitiveModule_1, declaredPipes_1, true);
}
else {
throw new Error("Unexpected " + _this._getTypeDescriptor(declaredType) + " '" + stringify(declaredType) + "' declared by the module '" + stringify(moduleType) + "'");
}
});
else {
throw new Error("Can't export " + _this._getTypeDescriptor(exportedId.reference) + " " + stringify(exportedId.reference) + " from " + stringify(moduleType) + " as it was neither declared nor imported!");
}
// The providers of the module have to go last
// so that they overwrite any other provider we already added.
if (meta.providers) {
providers_1.push.apply(providers_1, this.getProvidersMetadata(meta.providers, entryComponents_1, "provider for the NgModule '" + stringify(moduleType) + "'"));
}
if (meta.entryComponents) {
entryComponents_1.push.apply(entryComponents_1, flattenAndDedupeArray(meta.entryComponents)
.map(function (type) { return _this.getTypeMetadata(type, staticTypeModuleUrl(type)); }));
}
if (meta.bootstrap) {
var typeMetadata = flattenAndDedupeArray(meta.bootstrap).map(function (type) {
if (!isValidType(type)) {
throw new Error("Unexpected value '" + stringify(type) + "' used in the bootstrap property of module '" + stringify(moduleType) + "'");
}
return _this.getTypeMetadata(type, staticTypeModuleUrl(type));
});
bootstrapComponents.push.apply(bootstrapComponents, typeMetadata);
}
entryComponents_1.push.apply(entryComponents_1, bootstrapComponents);
if (meta.schemas) {
schemas.push.apply(schemas, flattenAndDedupeArray(meta.schemas));
}
(_a = transitiveModule_1.entryComponents).push.apply(_a, entryComponents_1);
(_b = transitiveModule_1.providers).push.apply(_b, providers_1);
compileMeta = new cpl.CompileNgModuleMetadata({
type: this.getTypeMetadata(moduleType, staticTypeModuleUrl(moduleType)),
providers: providers_1,
entryComponents: entryComponents_1,
bootstrapComponents: bootstrapComponents,
schemas: schemas,
declaredDirectives: declaredDirectives_1,
exportedDirectives: exportedDirectives_1,
declaredPipes: declaredPipes_1,
exportedPipes: exportedPipes_1,
importedModules: importedModules_1,
exportedModules: exportedModules_1,
transitiveModule: transitiveModule_1,
id: meta.id,
});
// The providers of the module have to go last
// so that they overwrite any other provider we already added.
if (meta.providers) {
providers.push.apply(providers, this._getProvidersMetadata(meta.providers, entryComponents, "provider for the NgModule '" + stringify(moduleType) + "'"));
}
if (meta.entryComponents) {
entryComponents.push.apply(entryComponents, flattenAndDedupeArray(meta.entryComponents)
.map(function (type) { return _this._getTypeMetadata(type, staticTypeModuleUrl(type)); }));
}
if (meta.bootstrap) {
var typeMetadata = flattenAndDedupeArray(meta.bootstrap).map(function (type) {
if (!isValidType(type)) {
throw new Error("Unexpected value '" + stringify(type) + "' used in the bootstrap property of module '" + stringify(moduleType) + "'");
}
return _this._getTypeMetadata(type, staticTypeModuleUrl(type));
});
transitiveModule_1.modules.push(compileMeta);
this._verifyModule(compileMeta);
this._ngModuleCache.set(moduleType, compileMeta);
bootstrapComponents.push.apply(bootstrapComponents, typeMetadata);
}
entryComponents.push.apply(entryComponents, bootstrapComponents);
if (meta.schemas) {
schemas.push.apply(schemas, flattenAndDedupeArray(meta.schemas));
}
(_a = transitiveModule.entryComponents).push.apply(_a, entryComponents);
(_b = transitiveModule.providers).push.apply(_b, providers);
compileMeta = new cpl.CompileNgModuleMetadata({
type: this._getTypeMetadata(moduleType, staticTypeModuleUrl(moduleType)),
providers: providers,
entryComponents: entryComponents,
bootstrapComponents: bootstrapComponents,
schemas: schemas,
declaredDirectives: declaredDirectives,
exportedDirectives: exportedDirectives,
declaredPipes: declaredPipes,
exportedPipes: exportedPipes,
importedModules: importedModules,
exportedModules: exportedModules,
transitiveModule: transitiveModule,
id: meta.id,
});
transitiveModule.modules.push(compileMeta.toInjectorSummary());
this._ngModuleCache.set(moduleType, compileMeta);
return compileMeta;
var _a, _b;
};
CompileMetadataResolver.prototype._verifyModule = function (moduleMeta) {
moduleMeta.exportedDirectives.forEach(function (dirMeta) {
if (!moduleMeta.transitiveModule.directivesSet.has(dirMeta.type.reference)) {
throw new Error("Can't export directive " + stringify(dirMeta.type.reference) + " from " + stringify(moduleMeta.type.reference) + " as it was neither declared nor imported!");
}
});
moduleMeta.exportedPipes.forEach(function (pipeMeta) {
if (!moduleMeta.transitiveModule.pipesSet.has(pipeMeta.type.reference)) {
throw new Error("Can't export pipe " + stringify(pipeMeta.type.reference) + " from " + stringify(moduleMeta.type.reference) + " as it was neither declared nor imported!");
}
});
};
CompileMetadataResolver.prototype._getTypeDescriptor = function (type) {
if (this._directiveResolver.resolve(type, false)) {
if (this._directiveResolver.isDirective(type)) {
return 'directive';
}
if (this._pipeResolver.resolve(type, false)) {
if (this._pipeResolver.isPipe(type)) {
return 'pipe';
}
if (this._ngModuleResolver.resolve(type, false)) {
if (this._ngModuleResolver.isNgModule(type)) {
return 'module';

@@ -373,44 +466,27 @@ }

// collect `providers` / `entryComponents` from all imported and all exported modules
var transitiveModules = getTransitiveModules(importedModules.concat(exportedModules), true);
var transitiveModules = getTransitiveImportedModules(importedModules.concat(exportedModules));
var providers = flattenArray(transitiveModules.map(function (ngModule) { return ngModule.providers; }));
var entryComponents = flattenArray(transitiveModules.map(function (ngModule) { return ngModule.entryComponents; }));
var transitiveExportedModules = getTransitiveModules(importedModules, false);
var transitiveExportedModules = getTransitiveExportedModules(importedModules);
var directives = flattenArray(transitiveExportedModules.map(function (ngModule) { return ngModule.exportedDirectives; }));
var pipes = flattenArray(transitiveExportedModules.map(function (ngModule) { return ngModule.exportedPipes; }));
return new cpl.TransitiveCompileNgModuleMetadata(transitiveModules, providers, entryComponents, directives, pipes);
var loadingPromises = ListWrapper.flatten(transitiveExportedModules.map(function (ngModule) { return ngModule.loadingPromises; }));
return new cpl.TransitiveCompileNgModuleMetadata(transitiveModules, providers, entryComponents, directives, pipes, loadingPromises);
};
CompileMetadataResolver.prototype._addDirectiveToModule = function (dirMeta, moduleType, transitiveModule, declaredDirectives, force) {
if (force === void 0) { force = false; }
if (force || !transitiveModule.directivesSet.has(dirMeta.type.reference)) {
transitiveModule.directivesSet.add(dirMeta.type.reference);
transitiveModule.directives.push(dirMeta);
declaredDirectives.push(dirMeta);
this._addTypeToModule(dirMeta.type.reference, moduleType);
return true;
}
return false;
CompileMetadataResolver.prototype._getIdentifierMetadata = function (type, moduleUrl) {
type = resolveForwardRef(type);
return new cpl.CompileIdentifierMetadata({ name: this.sanitizeTokenName(type), moduleUrl: moduleUrl, reference: type });
};
CompileMetadataResolver.prototype._addPipeToModule = function (pipeMeta, moduleType, transitiveModule, declaredPipes, force) {
if (force === void 0) { force = false; }
if (force || !transitiveModule.pipesSet.has(pipeMeta.type.reference)) {
transitiveModule.pipesSet.add(pipeMeta.type.reference);
transitiveModule.pipes.push(pipeMeta);
declaredPipes.push(pipeMeta);
this._addTypeToModule(pipeMeta.type.reference, moduleType);
return true;
}
return false;
};
CompileMetadataResolver.prototype.getTypeMetadata = function (type, moduleUrl, dependencies) {
CompileMetadataResolver.prototype._getTypeMetadata = function (type, moduleUrl, dependencies) {
if (dependencies === void 0) { dependencies = null; }
type = resolveForwardRef(type);
var identifier = this._getIdentifierMetadata(type, moduleUrl);
return new cpl.CompileTypeMetadata({
name: this.sanitizeTokenName(type),
moduleUrl: moduleUrl,
reference: type,
diDeps: this.getDependenciesMetadata(type, dependencies),
lifecycleHooks: LIFECYCLE_HOOKS_VALUES.filter(function (hook) { return hasLifecycleHook(hook, type); }),
name: identifier.name,
moduleUrl: identifier.moduleUrl,
reference: identifier.reference,
diDeps: this._getDependenciesMetadata(identifier.reference, dependencies),
lifecycleHooks: LIFECYCLE_HOOKS_VALUES.filter(function (hook) { return hasLifecycleHook(hook, identifier.reference); }),
});
};
CompileMetadataResolver.prototype.getFactoryMetadata = function (factory, moduleUrl, dependencies) {
CompileMetadataResolver.prototype._getFactoryMetadata = function (factory, moduleUrl, dependencies) {
if (dependencies === void 0) { dependencies = null; }

@@ -422,24 +498,38 @@ factory = resolveForwardRef(factory);

reference: factory,
diDeps: this.getDependenciesMetadata(factory, dependencies)
diDeps: this._getDependenciesMetadata(factory, dependencies)
});
};
CompileMetadataResolver.prototype.getPipeMetadata = function (pipeType, throwIfNotFound) {
if (throwIfNotFound === void 0) { throwIfNotFound = true; }
/**
* Gets the metadata for the given pipe.
* This assumes `loadNgModuleMetadata` has been called first.
*/
CompileMetadataResolver.prototype.getPipeMetadata = function (pipeType) {
var pipeMeta = this._pipeCache.get(pipeType);
if (!pipeMeta) {
throw new Error("Illegal state: getPipeMetadata can only be called after loadNgModuleMetadata for a module that declares it. Pipe " + stringify(pipeType) + ".");
}
return pipeMeta;
};
CompileMetadataResolver.prototype.getPipeSummary = function (pipeType) {
var pipeSummary = this._pipeSummaryCache.get(pipeType);
if (!pipeSummary) {
throw new Error("Illegal state: getPipeSummary can only be called after loadNgModuleMetadata for a module that imports it. Pipe " + stringify(pipeType) + ".");
}
return pipeSummary;
};
CompileMetadataResolver.prototype._loadPipeMetadata = function (pipeType) {
pipeType = resolveForwardRef(pipeType);
var meta = this._pipeCache.get(pipeType);
if (!meta) {
var pipeMeta = this._pipeResolver.resolve(pipeType, throwIfNotFound);
if (!pipeMeta) {
return null;
}
meta = new cpl.CompilePipeMetadata({
type: this.getTypeMetadata(pipeType, staticTypeModuleUrl(pipeType)),
name: pipeMeta.name,
pure: pipeMeta.pure
});
this._pipeCache.set(pipeType, meta);
var pipeMeta = this._pipeResolver.resolve(pipeType);
if (!pipeMeta) {
return null;
}
return meta;
var meta = new cpl.CompilePipeMetadata({
type: this._getTypeMetadata(pipeType, staticTypeModuleUrl(pipeType)),
name: pipeMeta.name,
pure: pipeMeta.pure
});
this._pipeCache.set(pipeType, meta);
this._pipeSummaryCache.set(pipeType, meta.toSummary());
};
CompileMetadataResolver.prototype.getDependenciesMetadata = function (typeOrFunc, dependencies) {
CompileMetadataResolver.prototype._getDependenciesMetadata = function (typeOrFunc, dependencies) {
var _this = this;

@@ -494,3 +584,3 @@ var hasUnknownDeps = false;

isOptional: isOptional,
token: _this.getTokenMetadata(token)
token: _this._getTokenMetadata(token)
});

@@ -504,3 +594,3 @@ });

};
CompileMetadataResolver.prototype.getTokenMetadata = function (token) {
CompileMetadataResolver.prototype._getTokenMetadata = function (token) {
token = resolveForwardRef(token);

@@ -522,3 +612,3 @@ var compileToken;

};
CompileMetadataResolver.prototype.getProvidersMetadata = function (providers, targetEntryComponents, debugInfo) {
CompileMetadataResolver.prototype._getProvidersMetadata = function (providers, targetEntryComponents, debugInfo) {
var _this = this;

@@ -533,6 +623,6 @@ var compileProviders = [];

if (Array.isArray(provider)) {
compileProvider = _this.getProvidersMetadata(provider, targetEntryComponents, debugInfo);
compileProvider = _this._getProvidersMetadata(provider, targetEntryComponents, debugInfo);
}
else if (provider instanceof cpl.ProviderMeta) {
var tokenMeta = _this.getTokenMetadata(provider.token);
var tokenMeta = _this._getTokenMetadata(provider.token);
if (tokenMeta.reference ===

@@ -547,3 +637,3 @@ resolveIdentifierToken(Identifiers.ANALYZE_FOR_ENTRY_COMPONENTS).reference) {

else if (isValidType(provider)) {
compileProvider = _this.getTypeMetadata(provider, staticTypeModuleUrl(provider));
compileProvider = _this._getTypeMetadata(provider, staticTypeModuleUrl(provider));
}

@@ -584,5 +674,4 @@ else {

collectedIdentifiers.forEach(function (identifier) {
var dirMeta = _this.getDirectiveMetadata(identifier.reference, false);
if (dirMeta) {
components.push(dirMeta.type);
if (_this._directiveResolver.isDirective(identifier.reference)) {
components.push(identifier);
}

@@ -597,15 +686,15 @@ });

if (provider.useClass) {
compileTypeMetadata = this.getTypeMetadata(provider.useClass, staticTypeModuleUrl(provider.useClass), provider.dependencies);
compileTypeMetadata = this._getTypeMetadata(provider.useClass, staticTypeModuleUrl(provider.useClass), provider.dependencies);
compileDeps = compileTypeMetadata.diDeps;
}
else if (provider.useFactory) {
compileFactoryMetadata = this.getFactoryMetadata(provider.useFactory, staticTypeModuleUrl(provider.useFactory), provider.dependencies);
compileFactoryMetadata = this._getFactoryMetadata(provider.useFactory, staticTypeModuleUrl(provider.useFactory), provider.dependencies);
compileDeps = compileFactoryMetadata.diDeps;
}
return new cpl.CompileProviderMetadata({
token: this.getTokenMetadata(provider.token),
token: this._getTokenMetadata(provider.token),
useClass: compileTypeMetadata,
useValue: convertToCompileValue(provider.useValue, []),
useFactory: compileFactoryMetadata,
useExisting: provider.useExisting ? this.getTokenMetadata(provider.useExisting) : null,
useExisting: provider.useExisting ? this._getTokenMetadata(provider.useExisting) : null,
deps: compileDeps,

@@ -615,3 +704,3 @@ multi: provider.multi

};
CompileMetadataResolver.prototype.getQueriesMetadata = function (queries, isViewQuery, directiveType) {
CompileMetadataResolver.prototype._getQueriesMetadata = function (queries, isViewQuery, directiveType) {
var _this = this;

@@ -622,3 +711,3 @@ var res = [];

if (query.isViewQuery === isViewQuery) {
res.push(_this.getQueryMetadata(query, propertyName, directiveType));
res.push(_this._getQueryMetadata(query, propertyName, directiveType));
}

@@ -629,7 +718,8 @@ });

CompileMetadataResolver.prototype._queryVarBindings = function (selector) { return selector.split(/\s*,\s*/); };
CompileMetadataResolver.prototype.getQueryMetadata = function (q, propertyName, typeOrFunc) {
CompileMetadataResolver.prototype._getQueryMetadata = function (q, propertyName, typeOrFunc) {
var _this = this;
var selectors;
if (typeof q.selector === 'string') {
selectors = this._queryVarBindings(q.selector).map(function (varName) { return _this.getTokenMetadata(varName); });
selectors =
this._queryVarBindings(q.selector).map(function (varName) { return _this._getTokenMetadata(varName); });
}

@@ -640,3 +730,3 @@ else {

}
selectors = [this.getTokenMetadata(q.selector)];
selectors = [this._getTokenMetadata(q.selector)];
}

@@ -647,3 +737,3 @@ return new cpl.CompileQueryMetadata({

descendants: q.descendants, propertyName: propertyName,
read: q.read ? this.getTokenMetadata(q.read) : null
read: q.read ? this._getTokenMetadata(q.read) : null
});

@@ -660,2 +750,3 @@ };

{ type: ElementSchemaRegistry, },
{ type: DirectiveNormalizer, },
{ type: ReflectorReader, },

@@ -665,3 +756,3 @@ ];

}());
function getTransitiveModules(modules, includeImports, targetModules, visitedModules) {
function getTransitiveExportedModules(modules, targetModules, visitedModules) {
if (targetModules === void 0) { targetModules = []; }

@@ -672,6 +763,3 @@ if (visitedModules === void 0) { visitedModules = new Set(); }

visitedModules.add(ngModule.type.reference);
var nestedModules = includeImports ?
ngModule.importedModules.concat(ngModule.exportedModules) :
ngModule.exportedModules;
getTransitiveModules(nestedModules, includeImports, targetModules, visitedModules);
getTransitiveExportedModules(ngModule.exportedModules, targetModules, visitedModules);
// Add after recursing so imported/exported modules are before the module itself.

@@ -684,2 +772,17 @@ // This is important for overwriting providers of imported modules!

}
function getTransitiveImportedModules(modules, targetModules, visitedModules) {
if (targetModules === void 0) { targetModules = []; }
if (visitedModules === void 0) { visitedModules = new Set(); }
modules.forEach(function (ngModule) {
if (!visitedModules.has(ngModule.type.reference)) {
visitedModules.add(ngModule.type.reference);
var nestedModules = ngModule.importedModules.concat(ngModule.exportedModules);
getTransitiveImportedModules(nestedModules, targetModules, visitedModules);
// Add after recursing so imported/exported modules are before the module itself.
// This is important for overwriting providers of imported modules!
targetModules.push(ngModule);
}
});
return targetModules;
}
function flattenArray(tree, out) {

@@ -686,0 +789,0 @@ if (out === void 0) { out = []; }

@@ -1,1 +0,1 @@

{"__symbolic":"module","version":1,"metadata":{"CompileMetadataResolver":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable"}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"./ng_module_resolver","name":"NgModuleResolver"},{"__symbolic":"reference","module":"./directive_resolver","name":"DirectiveResolver"},{"__symbolic":"reference","module":"./pipe_resolver","name":"PipeResolver"},{"__symbolic":"reference","module":"./schema/element_schema_registry","name":"ElementSchemaRegistry"},{"__symbolic":"reference","module":"./private_import_core","name":"ReflectorReader"}]}],"sanitizeTokenName":[{"__symbolic":"method"}],"clearCacheFor":[{"__symbolic":"method"}],"clearCache":[{"__symbolic":"method"}],"getAnimationEntryMetadata":[{"__symbolic":"method"}],"getAnimationStateMetadata":[{"__symbolic":"method"}],"getAnimationStyleMetadata":[{"__symbolic":"method"}],"getAnimationMetadata":[{"__symbolic":"method"}],"getDirectiveMetadata":[{"__symbolic":"method"}],"getNgModuleMetadata":[{"__symbolic":"method"}],"_verifyModule":[{"__symbolic":"method"}],"_getTypeDescriptor":[{"__symbolic":"method"}],"_addTypeToModule":[{"__symbolic":"method"}],"_getTransitiveNgModuleMetadata":[{"__symbolic":"method"}],"_addDirectiveToModule":[{"__symbolic":"method"}],"_addPipeToModule":[{"__symbolic":"method"}],"getTypeMetadata":[{"__symbolic":"method"}],"getFactoryMetadata":[{"__symbolic":"method"}],"getPipeMetadata":[{"__symbolic":"method"}],"getDependenciesMetadata":[{"__symbolic":"method"}],"getTokenMetadata":[{"__symbolic":"method"}],"getProvidersMetadata":[{"__symbolic":"method"}],"_getEntryComponentsFromProvider":[{"__symbolic":"method"}],"getProviderMetadata":[{"__symbolic":"method"}],"getQueriesMetadata":[{"__symbolic":"method"}],"_queryVarBindings":[{"__symbolic":"method"}],"getQueryMetadata":[{"__symbolic":"method"}]}}}}
{"__symbolic":"module","version":1,"metadata":{"CompileMetadataResolver":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable"}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"./ng_module_resolver","name":"NgModuleResolver"},{"__symbolic":"reference","module":"./directive_resolver","name":"DirectiveResolver"},{"__symbolic":"reference","module":"./pipe_resolver","name":"PipeResolver"},{"__symbolic":"reference","module":"./schema/element_schema_registry","name":"ElementSchemaRegistry"},{"__symbolic":"reference","module":"./directive_normalizer","name":"DirectiveNormalizer"},{"__symbolic":"reference","module":"./private_import_core","name":"ReflectorReader"}]}],"sanitizeTokenName":[{"__symbolic":"method"}],"clearCacheFor":[{"__symbolic":"method"}],"clearCache":[{"__symbolic":"method"}],"getAnimationEntryMetadata":[{"__symbolic":"method"}],"_getAnimationStateMetadata":[{"__symbolic":"method"}],"_getAnimationStyleMetadata":[{"__symbolic":"method"}],"_getAnimationMetadata":[{"__symbolic":"method"}],"_loadDirectiveMetadata":[{"__symbolic":"method"}],"getDirectiveMetadata":[{"__symbolic":"method"}],"getDirectiveSummary":[{"__symbolic":"method"}],"isDirective":[{"__symbolic":"method"}],"isPipe":[{"__symbolic":"method"}],"getNgModuleMetadata":[{"__symbolic":"method"}],"_loadNgModuleSummary":[{"__symbolic":"method"}],"loadNgModuleMetadata":[{"__symbolic":"method"}],"_loadNgModuleMetadata":[{"__symbolic":"method"}],"_getTypeDescriptor":[{"__symbolic":"method"}],"_addTypeToModule":[{"__symbolic":"method"}],"_getTransitiveNgModuleMetadata":[{"__symbolic":"method"}],"_getIdentifierMetadata":[{"__symbolic":"method"}],"_getTypeMetadata":[{"__symbolic":"method"}],"_getFactoryMetadata":[{"__symbolic":"method"}],"getPipeMetadata":[{"__symbolic":"method"}],"getPipeSummary":[{"__symbolic":"method"}],"_loadPipeMetadata":[{"__symbolic":"method"}],"_getDependenciesMetadata":[{"__symbolic":"method"}],"_getTokenMetadata":[{"__symbolic":"method"}],"_getProvidersMetadata":[{"__symbolic":"method"}],"_getEntryComponentsFromProvider":[{"__symbolic":"method"}],"getProviderMetadata":[{"__symbolic":"method"}],"_getQueriesMetadata":[{"__symbolic":"method"}],"_queryVarBindings":[{"__symbolic":"method"}],"_getQueryMetadata":[{"__symbolic":"method"}]}}}}

@@ -101,2 +101,6 @@ /**

errors.push.apply(errors, expansionResult.errors);
if (c.value === 'other') {
// other is the default case when no values match
return new html.Element("template", [new html.Attribute('ngSwitchDefault', '', c.valueSourceSpan)], expansionResult.nodes, c.sourceSpan, c.sourceSpan, c.sourceSpan);
}
return new html.Element("template", [new html.Attribute('ngSwitchCase', "" + c.value, c.valueSourceSpan)], expansionResult.nodes, c.sourceSpan, c.sourceSpan, c.sourceSpan);

@@ -103,0 +107,0 @@ });

@@ -16,3 +16,4 @@ /**

constructor(_reflector?: ReflectorReader);
isNgModule(type: any): boolean;
resolve(type: Type<any>, throwIfNotFound?: boolean): NgModule;
}

@@ -22,2 +22,3 @@ /**

}
NgModuleResolver.prototype.isNgModule = function (type) { return this._reflector.annotations(type).some(_isNgModuleMetadata); };
NgModuleResolver.prototype.resolve = function (type, throwIfNotFound) {

@@ -24,0 +25,0 @@ if (throwIfNotFound === void 0) { throwIfNotFound = true; }

@@ -1,1 +0,1 @@

{"__symbolic":"module","version":1,"metadata":{"NgModuleResolver":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable"}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"./private_import_core","name":"ReflectorReader"}]}],"resolve":[{"__symbolic":"method"}]}}}}
{"__symbolic":"module","version":1,"metadata":{"NgModuleResolver":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable"}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"./private_import_core","name":"ReflectorReader"}]}],"isNgModule":[{"__symbolic":"method"}],"resolve":[{"__symbolic":"method"}]}}}}

@@ -0,3 +1,3 @@

import { AnimationParser } from './animation/animation_parser';
import { CompileNgModuleMetadata, StaticSymbol } from './compile_metadata';
import { DirectiveNormalizer } from './directive_normalizer';
import { DirectiveWrapperCompiler } from './directive_wrapper_compiler';

@@ -18,3 +18,3 @@ import { CompileMetadataResolver } from './metadata_resolver';

transitiveModules: boolean;
}, metadataResolver: CompileMetadataResolver): {
}, metadataResolver: CompileMetadataResolver): Promise<{
ngModuleByPipeOrDirective: Map<StaticSymbol, CompileNgModuleMetadata>;

@@ -26,6 +26,5 @@ files: Array<{

}>;
};
}>;
export declare class OfflineCompiler {
private _metadataResolver;
private _directiveNormalizer;
private _templateParser;

@@ -41,3 +40,3 @@ private _styleCompiler;

private _animationCompiler;
constructor(_metadataResolver: CompileMetadataResolver, _directiveNormalizer: DirectiveNormalizer, _templateParser: TemplateParser, _styleCompiler: StyleCompiler, _viewCompiler: ViewCompiler, _dirWrapperCompiler: DirectiveWrapperCompiler, _ngModuleCompiler: NgModuleCompiler, _outputEmitter: OutputEmitter, _localeId: string, _translationFormat: string);
constructor(_metadataResolver: CompileMetadataResolver, _templateParser: TemplateParser, _styleCompiler: StyleCompiler, _viewCompiler: ViewCompiler, _dirWrapperCompiler: DirectiveWrapperCompiler, _ngModuleCompiler: NgModuleCompiler, _outputEmitter: OutputEmitter, _localeId: string, _translationFormat: string, _animationParser: AnimationParser);
clearCache(): void;

@@ -50,6 +49,6 @@ compileModules(staticSymbols: StaticSymbol[], options: {

private _compileDirectiveWrapper(directiveType, targetStatements);
private _compileComponentFactory(compMeta, fileSuffix, targetStatements);
private _compileComponent(compMeta, directives, pipes, schemas, componentStyles, fileSuffix, targetStatements);
private _compileComponentFactory(compMeta, ngModule, fileSuffix, targetStatements);
private _compileComponent(compMeta, ngModule, directiveIdentifiers, componentStyles, fileSuffix, targetStatements);
private _codgenStyles(fileUrl, stylesCompileResult, fileSuffix);
private _codegenSourceModule(fileUrl, moduleUrl, statements, exportedVars);
}

@@ -9,8 +9,7 @@ /**

import { AnimationCompiler } from './animation/animation_compiler';
import { AnimationParser } from './animation/animation_parser';
import { CompileProviderMetadata, createHostComponentMeta } from './compile_metadata';
import { ListWrapper, MapWrapper } from './facade/collection';
import { ListWrapper } from './facade/collection';
import { Identifiers, resolveIdentifier, resolveIdentifierToken } from './identifiers';
import * as o from './output/output_ast';
import { ComponentFactoryDependency, DirectiveWrapperDependency, ViewFactoryDependency } from './view_compiler/view_compiler';
import { ComponentFactoryDependency, DirectiveWrapperDependency, ViewClassDependency } from './view_compiler/view_compiler';
export var SourceModule = (function () {

@@ -26,14 +25,7 @@ function SourceModule(fileUrl, moduleUrl, source) {

export function analyzeNgModules(programStaticSymbols, options, metadataResolver) {
var _a = _extractModulesAndPipesOrDirectives(programStaticSymbols, metadataResolver), programNgModules = _a.ngModules, programPipesOrDirectives = _a.pipesAndDirectives;
return _loadNgModules(programStaticSymbols, options, metadataResolver).then(_analyzeNgModules);
}
function _analyzeNgModules(ngModuleMetas) {
var moduleMetasByRef = new Map();
programNgModules.forEach(function (modMeta) {
if (options.transitiveModules) {
// For every input modules add the list of transitively included modules
modMeta.transitiveModule.modules.forEach(function (modMeta) { moduleMetasByRef.set(modMeta.type.reference, modMeta); });
}
else {
moduleMetasByRef.set(modMeta.type.reference, modMeta);
}
});
var ngModuleMetas = MapWrapper.values(moduleMetasByRef);
ngModuleMetas.forEach(function (ngModule) { return moduleMetasByRef.set(ngModule.type.reference, ngModule); });
var ngModuleByPipeOrDirective = new Map();

@@ -51,20 +43,14 @@ var ngModulesByFile = new Map();

ngModulesByFile.set(srcFileUrl, (ngModulesByFile.get(srcFileUrl) || []).concat(ngModuleMeta.type.reference));
ngModuleMeta.declaredDirectives.forEach(function (dirMeta) {
var fileUrl = dirMeta.type.reference.filePath;
ngModuleMeta.declaredDirectives.forEach(function (dirIdentifier) {
var fileUrl = dirIdentifier.reference.filePath;
filePaths.add(fileUrl);
ngDirectivesByFile.set(fileUrl, (ngDirectivesByFile.get(fileUrl) || []).concat(dirMeta.type.reference));
ngModuleByPipeOrDirective.set(dirMeta.type.reference, ngModuleMeta);
ngDirectivesByFile.set(fileUrl, (ngDirectivesByFile.get(fileUrl) || []).concat(dirIdentifier.reference));
ngModuleByPipeOrDirective.set(dirIdentifier.reference, ngModuleMeta);
});
ngModuleMeta.declaredPipes.forEach(function (pipeMeta) {
var fileUrl = pipeMeta.type.reference.filePath;
ngModuleMeta.declaredPipes.forEach(function (pipeIdentifier) {
var fileUrl = pipeIdentifier.reference.filePath;
filePaths.add(fileUrl);
ngModuleByPipeOrDirective.set(pipeMeta.type.reference, ngModuleMeta);
ngModuleByPipeOrDirective.set(pipeIdentifier.reference, ngModuleMeta);
});
});
// Throw an error if any of the program pipe or directives is not declared by a module
var symbolsMissingModule = programPipesOrDirectives.filter(function (s) { return !ngModuleByPipeOrDirective.has(s); });
if (symbolsMissingModule.length) {
var messages = symbolsMissingModule.map(function (s) { return ("Cannot determine the module for class " + s.name + " in " + s.filePath + "!"); });
throw new Error(messages.join('\n'));
}
var files = [];

@@ -84,5 +70,4 @@ filePaths.forEach(function (srcUrl) {

export var OfflineCompiler = (function () {
function OfflineCompiler(_metadataResolver, _directiveNormalizer, _templateParser, _styleCompiler, _viewCompiler, _dirWrapperCompiler, _ngModuleCompiler, _outputEmitter, _localeId, _translationFormat) {
function OfflineCompiler(_metadataResolver, _templateParser, _styleCompiler, _viewCompiler, _dirWrapperCompiler, _ngModuleCompiler, _outputEmitter, _localeId, _translationFormat, _animationParser) {
this._metadataResolver = _metadataResolver;
this._directiveNormalizer = _directiveNormalizer;
this._templateParser = _templateParser;

@@ -96,15 +81,14 @@ this._styleCompiler = _styleCompiler;

this._translationFormat = _translationFormat;
this._animationParser = new AnimationParser();
this._animationParser = _animationParser;
this._animationCompiler = new AnimationCompiler();
}
OfflineCompiler.prototype.clearCache = function () {
this._directiveNormalizer.clearCache();
this._metadataResolver.clearCache();
};
OfflineCompiler.prototype.clearCache = function () { this._metadataResolver.clearCache(); };
OfflineCompiler.prototype.compileModules = function (staticSymbols, options) {
var _this = this;
var _a = analyzeNgModules(staticSymbols, options, this._metadataResolver), ngModuleByPipeOrDirective = _a.ngModuleByPipeOrDirective, files = _a.files;
var sourceModules = files.map(function (file) { return _this._compileSrcFile(file.srcUrl, ngModuleByPipeOrDirective, file.directives, file.ngModules); });
return Promise.all(sourceModules)
.then(function (modules) { return ListWrapper.flatten(modules); });
return analyzeNgModules(staticSymbols, options, this._metadataResolver)
.then(function (_a) {
var ngModuleByPipeOrDirective = _a.ngModuleByPipeOrDirective, files = _a.files;
var sourceModules = files.map(function (file) { return _this._compileSrcFile(file.srcUrl, ngModuleByPipeOrDirective, file.directives, file.ngModules); });
return ListWrapper.flatten(sourceModules);
});
};

@@ -122,4 +106,3 @@ OfflineCompiler.prototype._compileSrcFile = function (srcFileUrl, ngModuleByPipeOrDirective, directives, ngModules) {

// compile components
return Promise
.all(directives.map(function (dirType) {
directives.forEach(function (dirType) {
var compMeta = _this._metadataResolver.getDirectiveMetadata(dirType);

@@ -133,23 +116,16 @@ if (!compMeta.isComponent) {

}
return Promise
.all([compMeta].concat(ngModule.transitiveModule.directives).map(function (dirMeta) { return _this._directiveNormalizer.normalizeDirective(dirMeta).asyncResult; }))
.then(function (normalizedCompWithDirectives) {
var compMeta = normalizedCompWithDirectives[0], dirMetas = normalizedCompWithDirectives.slice(1);
_assertComponent(compMeta);
// compile styles
var stylesCompileResults = _this._styleCompiler.compileComponent(compMeta);
stylesCompileResults.externalStylesheets.forEach(function (compiledStyleSheet) {
outputSourceModules.push(_this._codgenStyles(srcFileUrl, compiledStyleSheet, fileSuffix));
});
// compile components
exportedVars.push(_this._compileComponentFactory(compMeta, fileSuffix, statements), _this._compileComponent(compMeta, dirMetas, ngModule.transitiveModule.pipes, ngModule.schemas, stylesCompileResults.componentStylesheet, fileSuffix, statements));
_assertComponent(compMeta);
// compile styles
var stylesCompileResults = _this._styleCompiler.compileComponent(compMeta);
stylesCompileResults.externalStylesheets.forEach(function (compiledStyleSheet) {
outputSourceModules.push(_this._codgenStyles(srcFileUrl, compiledStyleSheet, fileSuffix));
});
}))
.then(function () {
if (statements.length > 0) {
var srcModule = _this._codegenSourceModule(srcFileUrl, _ngfactoryModuleUrl(srcFileUrl), statements, exportedVars);
outputSourceModules.unshift(srcModule);
}
return outputSourceModules;
// compile components
exportedVars.push(_this._compileComponentFactory(compMeta, ngModule, fileSuffix, statements), _this._compileComponent(compMeta, ngModule, ngModule.transitiveModule.directives, stylesCompileResults.componentStylesheet, fileSuffix, statements));
});
if (statements.length > 0) {
var srcModule = this._codegenSourceModule(srcFileUrl, _ngfactoryModuleUrl(srcFileUrl), statements, exportedVars);
outputSourceModules.unshift(srcModule);
}
return outputSourceModules;
};

@@ -185,5 +161,5 @@ OfflineCompiler.prototype._compileModule = function (ngModuleType, targetStatements) {

};
OfflineCompiler.prototype._compileComponentFactory = function (compMeta, fileSuffix, targetStatements) {
OfflineCompiler.prototype._compileComponentFactory = function (compMeta, ngModule, fileSuffix, targetStatements) {
var hostMeta = createHostComponentMeta(compMeta);
var hostViewFactoryVar = this._compileComponent(hostMeta, [compMeta], [], [], null, fileSuffix, targetStatements);
var hostViewFactoryVar = this._compileComponent(hostMeta, ngModule, [compMeta.type], null, fileSuffix, targetStatements);
var compFactoryVar = _componentFactoryName(compMeta.type);

@@ -200,5 +176,8 @@ targetStatements.push(o.variable(compFactoryVar)

};
OfflineCompiler.prototype._compileComponent = function (compMeta, directives, pipes, schemas, componentStyles, fileSuffix, targetStatements) {
OfflineCompiler.prototype._compileComponent = function (compMeta, ngModule, directiveIdentifiers, componentStyles, fileSuffix, targetStatements) {
var _this = this;
var parsedAnimations = this._animationParser.parseComponent(compMeta);
var parsedTemplate = this._templateParser.parse(compMeta, compMeta.template.template, directives, pipes, schemas, compMeta.type.name);
var directives = directiveIdentifiers.map(function (dir) { return _this._metadataResolver.getDirectiveSummary(dir.reference); });
var pipes = ngModule.transitiveModule.pipes.map(function (pipe) { return _this._metadataResolver.getPipeSummary(pipe.reference); });
var parsedTemplate = this._templateParser.parse(compMeta, compMeta.template.template, directives, pipes, ngModule.schemas, compMeta.type.name);
var stylesExpr = componentStyles ? o.variable(componentStyles.stylesVar) : o.literalArr([]);

@@ -210,5 +189,5 @@ var compiledAnimations = this._animationCompiler.compile(compMeta.type.name, parsedAnimations);

}
compiledAnimations.forEach(function (entry) { entry.statements.forEach(function (statement) { targetStatements.push(statement); }); });
compiledAnimations.forEach(function (entry) { return targetStatements.push.apply(targetStatements, entry.statements); });
targetStatements.push.apply(targetStatements, _resolveViewStatements(viewResult));
return viewResult.viewFactoryVar;
return viewResult.viewClassVar;
};

@@ -226,3 +205,3 @@ OfflineCompiler.prototype._codgenStyles = function (fileUrl, stylesCompileResult, fileSuffix) {

compileResult.dependencies.forEach(function (dep) {
if (dep instanceof ViewFactoryDependency) {
if (dep instanceof ViewClassDependency) {
var vfd = dep;

@@ -274,24 +253,41 @@ vfd.placeholder.moduleUrl = _ngfactoryModuleUrl(vfd.comp.moduleUrl);

}
// Group the symbols by types:
// - NgModules,
// - Pipes and Directives.
function _extractModulesAndPipesOrDirectives(programStaticSymbols, metadataResolver) {
var ngModules = [];
var pipesAndDirectives = [];
programStaticSymbols.forEach(function (staticSymbol) {
var ngModule = metadataResolver.getNgModuleMetadata(staticSymbol, false);
var directive = metadataResolver.getDirectiveMetadata(staticSymbol, false);
var pipe = metadataResolver.getPipeMetadata(staticSymbol, false);
// Load the NgModules and check
// that all directives / pipes that are present in the program
// are also declared by a module.
function _loadNgModules(programStaticSymbols, options, metadataResolver) {
var ngModules = new Map();
var programPipesAndDirectives = [];
var ngModulePipesAndDirective = new Set();
var loadingPromises = [];
var addNgModule = function (staticSymbol) {
if (ngModules.has(staticSymbol)) {
return false;
}
var _a = metadataResolver.loadNgModuleMetadata(staticSymbol, false, false), ngModule = _a.ngModule, loading = _a.loading;
if (ngModule) {
ngModules.push(ngModule);
ngModules.set(ngModule.type.reference, ngModule);
loadingPromises.push(loading);
ngModule.declaredDirectives.forEach(function (dir) { return ngModulePipesAndDirective.add(dir.reference); });
ngModule.declaredPipes.forEach(function (pipe) { return ngModulePipesAndDirective.add(pipe.reference); });
if (options.transitiveModules) {
// For every input modules add the list of transitively included modules
ngModule.transitiveModule.modules.forEach(function (modMeta) { return addNgModule(modMeta.type.reference); });
}
}
else if (directive) {
pipesAndDirectives.push(staticSymbol);
return !!ngModule;
};
programStaticSymbols.forEach(function (staticSymbol) {
if (!addNgModule(staticSymbol) &&
(metadataResolver.isDirective(staticSymbol) || metadataResolver.isPipe(staticSymbol))) {
programPipesAndDirectives.push(staticSymbol);
}
else if (pipe) {
pipesAndDirectives.push(staticSymbol);
}
});
return { ngModules: ngModules, pipesAndDirectives: pipesAndDirectives };
// Throw an error if any of the program pipe or directives is not declared by a module
var symbolsMissingModule = programPipesAndDirectives.filter(function (s) { return !ngModulePipesAndDirective.has(s); });
if (symbolsMissingModule.length) {
var messages = symbolsMissingModule.map(function (s) { return ("Cannot determine the module for class " + s.name + " in " + s.filePath + "!"); });
throw new Error(messages.join('\n'));
}
return Promise.all(loadingPromises).then(function () { return Array.from(ngModules.values()); });
}
//# sourceMappingURL=offline_compiler.js.map

@@ -47,3 +47,3 @@ import * as o from './output_ast';

visitInstantiateExpr(ast: o.InstantiateExpr, ctx: EmitterVisitorContext): any;
visitLiteralExpr(ast: o.LiteralExpr, ctx: EmitterVisitorContext, absentValue?: string): any;
visitLiteralExpr(ast: o.LiteralExpr, ctx: EmitterVisitorContext): any;
abstract visitExternalExpr(ast: o.ExternalExpr, ctx: EmitterVisitorContext): any;

@@ -50,0 +50,0 @@ visitConditionalExpr(ast: o.ConditionalExpr, ctx: EmitterVisitorContext): any;

@@ -241,4 +241,3 @@ /**

};
AbstractEmitterVisitor.prototype.visitLiteralExpr = function (ast, ctx, absentValue) {
if (absentValue === void 0) { absentValue = 'null'; }
AbstractEmitterVisitor.prototype.visitLiteralExpr = function (ast, ctx) {
var value = ast.value;

@@ -248,5 +247,2 @@ if (typeof value === 'string') {

}
else if (isBlank(value)) {
ctx.print(absentValue);
}
else {

@@ -253,0 +249,0 @@ ctx.print("" + value);

@@ -25,2 +25,3 @@ /**

Function = 5,
Null = 6,
}

@@ -54,2 +55,3 @@ export declare class BuiltinType extends Type {

export declare var FUNCTION_TYPE: BuiltinType;
export declare var NULL_TYPE: BuiltinType;
export interface TypeVisitor {

@@ -263,2 +265,3 @@ visitBuiltintType(type: BuiltinType, context: any): any;

export declare var NULL_EXPR: LiteralExpr;
export declare var TYPED_NULL_EXPR: LiteralExpr;
export declare enum StmtModifier {

@@ -265,0 +268,0 @@ Final = 0,

@@ -38,2 +38,3 @@ /**

BuiltinTypeName[BuiltinTypeName["Function"] = 5] = "Function";
BuiltinTypeName[BuiltinTypeName["Null"] = 6] = "Null";
})(BuiltinTypeName || (BuiltinTypeName = {}));

@@ -94,2 +95,3 @@ export var BuiltinType = (function (_super) {

export var FUNCTION_TYPE = new BuiltinType(BuiltinTypeName.Function);
export var NULL_TYPE = new BuiltinType(BuiltinTypeName.Null);
///// Expressions

@@ -182,3 +184,4 @@ export var BinaryOperator;

// Note: We use equals by purpose here to compare to null and undefined in JS.
return this.equals(NULL_EXPR);
// We use the typed null to allow strictNullChecks to narrow types.
return this.equals(TYPED_NULL_EXPR);
};

@@ -481,2 +484,3 @@ Expression.prototype.cast = function (type) { return new CastExpr(this, type); };

export var NULL_EXPR = new LiteralExpr(null, null);
export var TYPED_NULL_EXPR = new LiteralExpr(null, NULL_TYPE);
//// Statements

@@ -483,0 +487,0 @@ export var StmtModifier;

@@ -1,1 +0,1 @@

{"__symbolic":"module","version":1,"metadata":{"TypeModifier":{"Const":0},"BuiltinTypeName":{"Dynamic":0,"Bool":1,"String":2,"Int":3,"Number":4,"Function":5},"DYNAMIC_TYPE":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"BuiltinType"},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"BuiltinTypeName"},"member":"Dynamic"}]},"BOOL_TYPE":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"BuiltinType"},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"BuiltinTypeName"},"member":"Bool"}]},"INT_TYPE":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"BuiltinType"},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"BuiltinTypeName"},"member":"Int"}]},"NUMBER_TYPE":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"BuiltinType"},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"BuiltinTypeName"},"member":"Number"}]},"STRING_TYPE":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"BuiltinType"},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"BuiltinTypeName"},"member":"String"}]},"FUNCTION_TYPE":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"BuiltinType"},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"BuiltinTypeName"},"member":"Function"}]},"BinaryOperator":{"Equals":0,"NotEquals":1,"Identical":2,"NotIdentical":3,"Minus":4,"Plus":5,"Divide":6,"Multiply":7,"Modulo":8,"And":9,"Or":10,"Lower":11,"LowerEquals":12,"Bigger":13,"BiggerEquals":14},"BuiltinVar":{"This":0,"Super":1,"CatchError":2,"CatchStack":3},"BuiltinMethod":{"ConcatArray":0,"SubscribeObservable":1,"Bind":2},"THIS_EXPR":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"ReadVarExpr"},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"BuiltinVar"},"member":"This"}]},"SUPER_EXPR":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"ReadVarExpr"},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"BuiltinVar"},"member":"Super"}]},"CATCH_ERROR_VAR":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"ReadVarExpr"},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"BuiltinVar"},"member":"CatchError"}]},"CATCH_STACK_VAR":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"ReadVarExpr"},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"BuiltinVar"},"member":"CatchStack"}]},"NULL_EXPR":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"LiteralExpr"},"arguments":[null,null]},"StmtModifier":{"Final":0,"Private":1},"variable":{"__symbolic":"function","parameters":["name","type"],"value":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"ReadVarExpr"},"arguments":[{"__symbolic":"reference","name":"name"},{"__symbolic":"reference","name":"type"}]},"defaults":[null,null]},"importExpr":{"__symbolic":"function","parameters":["id","typeParams"],"value":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"ExternalExpr"},"arguments":[{"__symbolic":"reference","name":"id"},null,{"__symbolic":"reference","name":"typeParams"}]},"defaults":[null,null]},"importType":{"__symbolic":"function","parameters":["id","typeParams","typeModifiers"],"value":{"__symbolic":"if","condition":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"../facade/lang","name":"isPresent"},"arguments":[{"__symbolic":"reference","name":"id"}]},"thenExpression":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"ExternalType"},"arguments":[{"__symbolic":"reference","name":"id"},{"__symbolic":"reference","name":"typeParams"},{"__symbolic":"reference","name":"typeModifiers"}]},"elseExpression":null},"defaults":[null,null,null]},"literalArr":{"__symbolic":"function","parameters":["values","type"],"value":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"LiteralArrayExpr"},"arguments":[{"__symbolic":"reference","name":"values"},{"__symbolic":"reference","name":"type"}]},"defaults":[null,null]},"literalMap":{"__symbolic":"function","parameters":["values","type"],"value":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"LiteralMapExpr"},"arguments":[{"__symbolic":"reference","name":"values"},{"__symbolic":"reference","name":"type"}]},"defaults":[null,null]},"not":{"__symbolic":"function","parameters":["expr"],"value":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"NotExpr"},"arguments":[{"__symbolic":"reference","name":"expr"}]}},"fn":{"__symbolic":"function","parameters":["params","body","type"],"value":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"FunctionExpr"},"arguments":[{"__symbolic":"reference","name":"params"},{"__symbolic":"reference","name":"body"},{"__symbolic":"reference","name":"type"}]},"defaults":[null,null,null]},"literal":{"__symbolic":"function","parameters":["value","type"],"value":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"LiteralExpr"},"arguments":[{"__symbolic":"reference","name":"value"},{"__symbolic":"reference","name":"type"}]},"defaults":[null,null]}}}
{"__symbolic":"module","version":1,"metadata":{"TypeModifier":{"Const":0},"BuiltinTypeName":{"Dynamic":0,"Bool":1,"String":2,"Int":3,"Number":4,"Function":5,"Null":6},"DYNAMIC_TYPE":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"BuiltinType"},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"BuiltinTypeName"},"member":"Dynamic"}]},"BOOL_TYPE":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"BuiltinType"},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"BuiltinTypeName"},"member":"Bool"}]},"INT_TYPE":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"BuiltinType"},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"BuiltinTypeName"},"member":"Int"}]},"NUMBER_TYPE":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"BuiltinType"},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"BuiltinTypeName"},"member":"Number"}]},"STRING_TYPE":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"BuiltinType"},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"BuiltinTypeName"},"member":"String"}]},"FUNCTION_TYPE":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"BuiltinType"},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"BuiltinTypeName"},"member":"Function"}]},"NULL_TYPE":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"BuiltinType"},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"BuiltinTypeName"},"member":"Null"}]},"BinaryOperator":{"Equals":0,"NotEquals":1,"Identical":2,"NotIdentical":3,"Minus":4,"Plus":5,"Divide":6,"Multiply":7,"Modulo":8,"And":9,"Or":10,"Lower":11,"LowerEquals":12,"Bigger":13,"BiggerEquals":14},"BuiltinVar":{"This":0,"Super":1,"CatchError":2,"CatchStack":3},"BuiltinMethod":{"ConcatArray":0,"SubscribeObservable":1,"Bind":2},"THIS_EXPR":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"ReadVarExpr"},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"BuiltinVar"},"member":"This"}]},"SUPER_EXPR":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"ReadVarExpr"},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"BuiltinVar"},"member":"Super"}]},"CATCH_ERROR_VAR":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"ReadVarExpr"},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"BuiltinVar"},"member":"CatchError"}]},"CATCH_STACK_VAR":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"ReadVarExpr"},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"BuiltinVar"},"member":"CatchStack"}]},"NULL_EXPR":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"LiteralExpr"},"arguments":[null,null]},"TYPED_NULL_EXPR":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"LiteralExpr"},"arguments":[null,{"__symbolic":"reference","name":"NULL_TYPE"}]},"StmtModifier":{"Final":0,"Private":1},"variable":{"__symbolic":"function","parameters":["name","type"],"value":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"ReadVarExpr"},"arguments":[{"__symbolic":"reference","name":"name"},{"__symbolic":"reference","name":"type"}]},"defaults":[null,null]},"importExpr":{"__symbolic":"function","parameters":["id","typeParams"],"value":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"ExternalExpr"},"arguments":[{"__symbolic":"reference","name":"id"},null,{"__symbolic":"reference","name":"typeParams"}]},"defaults":[null,null]},"importType":{"__symbolic":"function","parameters":["id","typeParams","typeModifiers"],"value":{"__symbolic":"if","condition":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"../facade/lang","name":"isPresent"},"arguments":[{"__symbolic":"reference","name":"id"}]},"thenExpression":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"ExternalType"},"arguments":[{"__symbolic":"reference","name":"id"},{"__symbolic":"reference","name":"typeParams"},{"__symbolic":"reference","name":"typeModifiers"}]},"elseExpression":null},"defaults":[null,null,null]},"literalArr":{"__symbolic":"function","parameters":["values","type"],"value":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"LiteralArrayExpr"},"arguments":[{"__symbolic":"reference","name":"values"},{"__symbolic":"reference","name":"type"}]},"defaults":[null,null]},"literalMap":{"__symbolic":"function","parameters":["values","type"],"value":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"LiteralMapExpr"},"arguments":[{"__symbolic":"reference","name":"values"},{"__symbolic":"reference","name":"type"}]},"defaults":[null,null]},"not":{"__symbolic":"function","parameters":["expr"],"value":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"NotExpr"},"arguments":[{"__symbolic":"reference","name":"expr"}]}},"fn":{"__symbolic":"function","parameters":["params","body","type"],"value":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"FunctionExpr"},"arguments":[{"__symbolic":"reference","name":"params"},{"__symbolic":"reference","name":"body"},{"__symbolic":"reference","name":"type"}]},"defaults":[null,null,null]},"literal":{"__symbolic":"function","parameters":["value","type"],"value":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"LiteralExpr"},"arguments":[{"__symbolic":"reference","name":"value"},{"__symbolic":"reference","name":"type"}]},"defaults":[null,null]}}}

@@ -53,4 +53,4 @@ /**

this._evalArgValues.push(value);
var name = isPresent(ast.value.name) ? sanitizeIdentifier(ast.value.name) : 'val';
this._evalArgNames.push(sanitizeIdentifier("jit_" + name + id));
var name_1 = isPresent(ast.value.name) ? sanitizeIdentifier(ast.value.name) : 'val';
this._evalArgNames.push(sanitizeIdentifier("jit_" + name_1 + id));
}

@@ -57,0 +57,0 @@ ctx.print(this._evalArgNames[id]);

@@ -74,3 +74,8 @@ /**

_TsEmitterVisitor.prototype.visitLiteralExpr = function (ast, ctx) {
_super.prototype.visitLiteralExpr.call(this, ast, ctx, '(null as any)');
var value = ast.value;
if (isBlank(value) && ast.type != o.NULL_TYPE) {
ctx.print("(" + value + " as any)");
return null;
}
return _super.prototype.visitLiteralExpr.call(this, ast, ctx);
};

@@ -77,0 +82,0 @@ // Temporary workaround to support strictNullCheck enabled consumers of ngc emit.

@@ -20,2 +20,3 @@ /**

constructor(_reflector?: ReflectorReader);
isPipe(type: Type<any>): boolean;
/**

@@ -22,0 +23,0 @@ * Return {@link Pipe} for a given `Type`.

@@ -26,2 +26,6 @@ /**

}
PipeResolver.prototype.isPipe = function (type) {
var typeMetadata = this._reflector.annotations(resolveForwardRef(type));
return typeMetadata && typeMetadata.some(_isPipeMetadata);
};
/**

@@ -28,0 +32,0 @@ * Return {@link Pipe} for a given `Type`.

@@ -1,1 +0,1 @@

{"__symbolic":"module","version":1,"metadata":{"PipeResolver":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable"}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"./private_import_core","name":"ReflectorReader"}]}],"resolve":[{"__symbolic":"method"}]}}}}
{"__symbolic":"module","version":1,"metadata":{"PipeResolver":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable"}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"./private_import_core","name":"ReflectorReader"}]}],"isPipe":[{"__symbolic":"method"}],"resolve":[{"__symbolic":"method"}]}}}}

@@ -17,5 +17,6 @@ /**

export declare const ReflectorReader: typeof r.ReflectorReader;
export declare type AppElement = typeof r._AppElement;
export declare const AppElement: typeof r.AppElement;
export declare type ViewContainer = typeof r._ViewContainer;
export declare const ViewContainer: typeof r.ViewContainer;
export declare const CodegenComponentFactoryResolver: typeof r.CodegenComponentFactoryResolver;
export declare const ComponentRef_: typeof r.ComponentRef_;
export declare const AppView: typeof r.AppView;

@@ -22,0 +23,0 @@ export declare const DebugAppView: typeof r.DebugAppView;

@@ -14,4 +14,5 @@ /**

export var ReflectorReader = r.ReflectorReader;
export var AppElement = r.AppElement;
export var ViewContainer = r.ViewContainer;
export var CodegenComponentFactoryResolver = r.CodegenComponentFactoryResolver;
export var ComponentRef_ = r.ComponentRef_;
export var AppView = r.AppView;

@@ -18,0 +19,0 @@ export var DebugAppView = r.DebugAppView;

@@ -1,1 +0,1 @@

{"__symbolic":"module","version":1,"metadata":{"isDefaultChangeDetectionStrategy":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"isDefaultChangeDetectionStrategy"},"ChangeDetectorStatus":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"ChangeDetectorStatus"},"LifecycleHooks":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"LifecycleHooks"},"LIFECYCLE_HOOKS_VALUES":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"LIFECYCLE_HOOKS_VALUES"},"ReflectorReader":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"ReflectorReader"},"AppElement":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"AppElement"},"CodegenComponentFactoryResolver":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"CodegenComponentFactoryResolver"},"AppView":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"AppView"},"DebugAppView":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"DebugAppView"},"NgModuleInjector":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"NgModuleInjector"},"registerModuleFactory":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"registerModuleFactory"},"ViewType":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"ViewType"},"view_utils":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"view_utils"},"DebugContext":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"DebugContext"},"StaticNodeDebugInfo":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"StaticNodeDebugInfo"},"devModeEqual":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"devModeEqual"},"UNINITIALIZED":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"UNINITIALIZED"},"ValueUnwrapper":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"ValueUnwrapper"},"TemplateRef_":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"TemplateRef_"},"RenderDebugInfo":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"RenderDebugInfo"},"Console":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"Console"},"reflector":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"reflector"},"Reflector":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"Reflector"},"ReflectionCapabilities":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"ReflectionCapabilities"},"NoOpAnimationPlayer":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"NoOpAnimationPlayer"},"AnimationPlayer":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"AnimationPlayer"},"AnimationSequencePlayer":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"AnimationSequencePlayer"},"AnimationGroupPlayer":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"AnimationGroupPlayer"},"AnimationKeyframe":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"AnimationKeyframe"},"AnimationStyles":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"AnimationStyles"},"ANY_STATE":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"ANY_STATE"},"DEFAULT_STATE":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"DEFAULT_STATE"},"EMPTY_STATE":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"EMPTY_STATE"},"FILL_STYLE_FLAG":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"FILL_STYLE_FLAG"},"prepareFinalAnimationStyles":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"prepareFinalAnimationStyles"},"balanceAnimationKeyframes":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"balanceAnimationKeyframes"},"clearStyles":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"clearStyles"},"collectAndResolveStyles":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"collectAndResolveStyles"},"renderStyles":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"renderStyles"},"ViewMetadata":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"ViewMetadata"},"ComponentStillLoadingError":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"ComponentStillLoadingError"},"AnimationTransition":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"AnimationTransition"}}}
{"__symbolic":"module","version":1,"metadata":{"isDefaultChangeDetectionStrategy":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"isDefaultChangeDetectionStrategy"},"ChangeDetectorStatus":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"ChangeDetectorStatus"},"LifecycleHooks":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"LifecycleHooks"},"LIFECYCLE_HOOKS_VALUES":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"LIFECYCLE_HOOKS_VALUES"},"ReflectorReader":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"ReflectorReader"},"ViewContainer":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"ViewContainer"},"CodegenComponentFactoryResolver":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"CodegenComponentFactoryResolver"},"ComponentRef_":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"ComponentRef_"},"AppView":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"AppView"},"DebugAppView":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"DebugAppView"},"NgModuleInjector":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"NgModuleInjector"},"registerModuleFactory":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"registerModuleFactory"},"ViewType":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"ViewType"},"view_utils":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"view_utils"},"DebugContext":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"DebugContext"},"StaticNodeDebugInfo":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"StaticNodeDebugInfo"},"devModeEqual":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"devModeEqual"},"UNINITIALIZED":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"UNINITIALIZED"},"ValueUnwrapper":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"ValueUnwrapper"},"TemplateRef_":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"TemplateRef_"},"RenderDebugInfo":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"RenderDebugInfo"},"Console":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"Console"},"reflector":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"reflector"},"Reflector":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"Reflector"},"ReflectionCapabilities":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"ReflectionCapabilities"},"NoOpAnimationPlayer":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"NoOpAnimationPlayer"},"AnimationPlayer":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"AnimationPlayer"},"AnimationSequencePlayer":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"AnimationSequencePlayer"},"AnimationGroupPlayer":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"AnimationGroupPlayer"},"AnimationKeyframe":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"AnimationKeyframe"},"AnimationStyles":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"AnimationStyles"},"ANY_STATE":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"ANY_STATE"},"DEFAULT_STATE":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"DEFAULT_STATE"},"EMPTY_STATE":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"EMPTY_STATE"},"FILL_STYLE_FLAG":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"FILL_STYLE_FLAG"},"prepareFinalAnimationStyles":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"prepareFinalAnimationStyles"},"balanceAnimationKeyframes":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"balanceAnimationKeyframes"},"clearStyles":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"clearStyles"},"collectAndResolveStyles":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"collectAndResolveStyles"},"renderStyles":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"renderStyles"},"ViewMetadata":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"ViewMetadata"},"ComponentStillLoadingError":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"ComponentStillLoadingError"},"AnimationTransition":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"AnimationTransition"}}}

@@ -14,3 +14,2 @@ /**

import { CompileDiDependencyMetadata, CompileProviderMetadata, CompileTokenMetadata, CompileTypeMetadata } from './compile_metadata';
import { MapWrapper } from './facade/collection';
import { isBlank, isPresent } from './facade/lang';

@@ -61,3 +60,3 @@ import { Identifiers, resolveIdentifierToken } from './identifiers';

var queriedTokens = new Map();
MapWrapper.values(this._allProviders).forEach(function (provider) {
Array.from(this._allProviders.values()).forEach(function (provider) {
_this._addQueryReadsTo(provider.token, queriedTokens);

@@ -72,3 +71,3 @@ });

// create the providers that we know are eager first
MapWrapper.values(this._allProviders).forEach(function (provider) {
Array.from(this._allProviders.values()).forEach(function (provider) {
var eager = provider.eager || isPresent(queriedTokens.get(provider.token.reference));

@@ -83,3 +82,3 @@ if (eager) {

// collect lazy providers
MapWrapper.values(this._allProviders).forEach(function (provider) {
Array.from(this._allProviders.values()).forEach(function (provider) {
_this._getOrCreateLocalProvider(provider.providerType, provider.token, false);

@@ -89,3 +88,5 @@ });

Object.defineProperty(ProviderElementContext.prototype, "transformProviders", {
get: function () { return MapWrapper.values(this._transformedProviders); },
get: function () {
return Array.from(this._transformedProviders.values());
},
enumerable: true,

@@ -287,3 +288,3 @@ configurable: true

var _this = this;
MapWrapper.values(this._allProviders).forEach(function (provider) {
Array.from(this._allProviders.values()).forEach(function (provider) {
_this._getOrCreateLocalProvider(provider.token, provider.eager);

@@ -295,3 +296,3 @@ });

}
return MapWrapper.values(this._transformedProviders);
return Array.from(this._transformedProviders.values());
};

@@ -298,0 +299,0 @@ NgModuleProviderAnalyzer.prototype._getOrCreateLocalProvider = function (token, eager) {

@@ -9,4 +9,4 @@ /**

import { Compiler, Injector, ModuleWithComponentFactories, NgModuleFactory, Type } from '@angular/core';
import { AnimationParser } from './animation/animation_parser';
import { CompilerConfig } from './config';
import { DirectiveNormalizer } from './directive_normalizer';
import { DirectiveWrapperCompiler } from './directive_wrapper_compiler';

@@ -30,3 +30,2 @@ import { CompileMetadataResolver } from './metadata_resolver';

private _metadataResolver;
private _templateNormalizer;
private _templateParser;

@@ -38,2 +37,3 @@ private _styleCompiler;

private _compilerConfig;
private _animationParser;
private _compiledTemplateCache;

@@ -43,5 +43,4 @@ private _compiledHostTemplateCache;

private _compiledNgModuleCache;
private _animationParser;
private _animationCompiler;
constructor(_injector: Injector, _metadataResolver: CompileMetadataResolver, _templateNormalizer: DirectiveNormalizer, _templateParser: TemplateParser, _styleCompiler: StyleCompiler, _viewCompiler: ViewCompiler, _ngModuleCompiler: NgModuleCompiler, _directiveWrapperCompiler: DirectiveWrapperCompiler, _compilerConfig: CompilerConfig);
constructor(_injector: Injector, _metadataResolver: CompileMetadataResolver, _templateParser: TemplateParser, _styleCompiler: StyleCompiler, _viewCompiler: ViewCompiler, _ngModuleCompiler: NgModuleCompiler, _directiveWrapperCompiler: DirectiveWrapperCompiler, _compilerConfig: CompilerConfig, _animationParser: AnimationParser);
injector: Injector;

@@ -54,2 +53,3 @@ compileModuleSync<T>(moduleType: Type<T>): NgModuleFactory<T>;

private _compileModuleAndAllComponents<T>(moduleType, isSync);
private _loadModules(mainModule, isSync);
private _compileModule<T>(moduleType);

@@ -61,3 +61,2 @@ clearCacheFor(type: Type<any>): void;

private _assertComponentKnown(compType, isHost);
private _assertComponentLoaded(compType, isHost);
private _assertDirectiveWrapper(dirType);

@@ -64,0 +63,0 @@ private _compileDirectiveWrapper(dirMeta, moduleMeta);

@@ -13,3 +13,2 @@ /**

import { CompilerConfig } from './config';
import { DirectiveNormalizer } from './directive_normalizer';
import { DirectiveWrapperCompiler } from './directive_wrapper_compiler';

@@ -22,7 +21,6 @@ import { stringify } from './facade/lang';

import { jitStatements } from './output/output_jit';
import { ComponentStillLoadingError } from './private_import_core';
import { StyleCompiler } from './style_compiler';
import { TemplateParser } from './template_parser/template_parser';
import { SyncAsyncResult } from './util';
import { ComponentFactoryDependency, DirectiveWrapperDependency, ViewCompiler, ViewFactoryDependency } from './view_compiler/view_compiler';
import { ComponentFactoryDependency, DirectiveWrapperDependency, ViewClassDependency, ViewCompiler } from './view_compiler/view_compiler';
/**

@@ -38,6 +36,5 @@ * An internal module of the Angular compiler that begins with component types,

export var RuntimeCompiler = (function () {
function RuntimeCompiler(_injector, _metadataResolver, _templateNormalizer, _templateParser, _styleCompiler, _viewCompiler, _ngModuleCompiler, _directiveWrapperCompiler, _compilerConfig) {
function RuntimeCompiler(_injector, _metadataResolver, _templateParser, _styleCompiler, _viewCompiler, _ngModuleCompiler, _directiveWrapperCompiler, _compilerConfig, _animationParser) {
this._injector = _injector;
this._metadataResolver = _metadataResolver;
this._templateNormalizer = _templateNormalizer;
this._templateParser = _templateParser;

@@ -49,2 +46,3 @@ this._styleCompiler = _styleCompiler;

this._compilerConfig = _compilerConfig;
this._animationParser = _animationParser;
this._compiledTemplateCache = new Map();

@@ -54,3 +52,2 @@ this._compiledHostTemplateCache = new Map();

this._compiledNgModuleCache = new Map();
this._animationParser = new AnimationParser();
this._animationCompiler = new AnimationCompiler();

@@ -76,33 +73,45 @@ }

RuntimeCompiler.prototype._compileModuleAndComponents = function (moduleType, isSync) {
var componentPromise = this._compileComponents(moduleType, isSync);
var ngModuleFactory = this._compileModule(moduleType);
return new SyncAsyncResult(ngModuleFactory, componentPromise.then(function () { return ngModuleFactory; }));
var _this = this;
var loadingPromise = this._loadModules(moduleType, isSync);
var createResult = function () {
_this._compileComponents(moduleType, null);
return _this._compileModule(moduleType);
};
if (isSync) {
return new SyncAsyncResult(createResult());
}
else {
return new SyncAsyncResult(null, loadingPromise.then(createResult));
}
};
RuntimeCompiler.prototype._compileModuleAndAllComponents = function (moduleType, isSync) {
var _this = this;
var componentPromise = this._compileComponents(moduleType, isSync);
var ngModuleFactory = this._compileModule(moduleType);
var moduleMeta = this._metadataResolver.getNgModuleMetadata(moduleType);
var componentFactories = [];
var templates = new Set();
moduleMeta.transitiveModule.modules.forEach(function (localModuleMeta) {
localModuleMeta.declaredDirectives.forEach(function (dirMeta) {
if (dirMeta.isComponent) {
var template = _this._createCompiledHostTemplate(dirMeta.type.reference, localModuleMeta);
templates.add(template);
componentFactories.push(template.proxyComponentFactory);
}
});
});
var syncResult = new ModuleWithComponentFactories(ngModuleFactory, componentFactories);
// Note: host components themselves can always be compiled synchronously as they have an
// inline template. However, we still need to wait for the components that they
// reference to be loaded / compiled.
var compile = function () {
templates.forEach(function (template) { _this._compileTemplate(template); });
return syncResult;
var loadingPromise = this._loadModules(moduleType, isSync);
var createResult = function () {
var componentFactories = [];
_this._compileComponents(moduleType, componentFactories);
return new ModuleWithComponentFactories(_this._compileModule(moduleType), componentFactories);
};
var asyncResult = isSync ? Promise.resolve(compile()) : componentPromise.then(compile);
return new SyncAsyncResult(syncResult, asyncResult);
if (isSync) {
return new SyncAsyncResult(createResult());
}
else {
return new SyncAsyncResult(null, loadingPromise.then(createResult));
}
};
RuntimeCompiler.prototype._loadModules = function (mainModule, isSync) {
var _this = this;
var loadingPromises = [];
var _a = this._metadataResolver.loadNgModuleMetadata(mainModule, isSync), ngModule = _a.ngModule, loading = _a.loading;
loadingPromises.push(loading);
// Note: the loadingPromise for a module only includes the loading of the exported directives
// of imported modules.
// However, for runtime compilation, we want to transitively compile all modules,
// so we also need to call loadNgModuleMetadata for all nested modules.
ngModule.transitiveModule.modules.forEach(function (localModuleMeta) {
loadingPromises.push(_this._metadataResolver.loadNgModuleMetadata(localModuleMeta.type.reference, isSync)
.loading);
});
return Promise.all(loadingPromises);
};
RuntimeCompiler.prototype._compileModule = function (moduleType) {

@@ -135,19 +144,27 @@ var _this = this;

*/
RuntimeCompiler.prototype._compileComponents = function (mainModule, isSync) {
RuntimeCompiler.prototype._compileComponents = function (mainModule, allComponentFactories) {
var _this = this;
var templates = new Set();
var loadingPromises = [];
var ngModule = this._metadataResolver.getNgModuleMetadata(mainModule);
var moduleByDirective = new Map();
ngModule.transitiveModule.modules.forEach(function (localModuleMeta) {
localModuleMeta.declaredDirectives.forEach(function (dirMeta) {
moduleByDirective.set(dirMeta.type.reference, localModuleMeta);
var templates = new Set();
ngModule.transitiveModule.modules.forEach(function (localModuleSummary) {
var localModuleMeta = _this._metadataResolver.getNgModuleMetadata(localModuleSummary.type.reference);
localModuleMeta.declaredDirectives.forEach(function (dirIdentifier) {
moduleByDirective.set(dirIdentifier.reference, localModuleMeta);
var dirMeta = _this._metadataResolver.getDirectiveMetadata(dirIdentifier.reference);
_this._compileDirectiveWrapper(dirMeta, localModuleMeta);
if (dirMeta.isComponent) {
templates.add(_this._createCompiledTemplate(dirMeta, localModuleMeta));
if (allComponentFactories) {
var template = _this._createCompiledHostTemplate(dirMeta.type.reference, localModuleMeta);
templates.add(template);
allComponentFactories.push(template.proxyComponentFactory);
}
}
});
});
ngModule.transitiveModule.modules.forEach(function (localModuleMeta) {
localModuleMeta.declaredDirectives.forEach(function (dirMeta) {
ngModule.transitiveModule.modules.forEach(function (localModuleSummary) {
var localModuleMeta = _this._metadataResolver.getNgModuleMetadata(localModuleSummary.type.reference);
localModuleMeta.declaredDirectives.forEach(function (dirIdentifier) {
var dirMeta = _this._metadataResolver.getDirectiveMetadata(dirIdentifier.reference);
if (dirMeta.isComponent) {

@@ -165,20 +182,3 @@ dirMeta.entryComponents.forEach(function (entryComponentType) {

});
templates.forEach(function (template) {
if (template.loading) {
if (isSync) {
throw new ComponentStillLoadingError(template.compType.reference);
}
else {
loadingPromises.push(template.loading);
}
}
});
var compile = function () { templates.forEach(function (template) { _this._compileTemplate(template); }); };
if (isSync) {
compile();
return Promise.resolve(null);
}
else {
return Promise.all(loadingPromises).then(compile);
}
templates.forEach(function (template) { return _this._compileTemplate(template); });
};

@@ -191,3 +191,2 @@ RuntimeCompiler.prototype.clearCacheFor = function (type) {

if (compiledTemplate) {
this._templateNormalizer.clearCacheFor(compiledTemplate.normalizedCompMeta);
this._compiledTemplateCache.delete(type);

@@ -200,3 +199,2 @@ }

this._compiledHostTemplateCache.clear();
this._templateNormalizer.clearCache();
this._compiledNgModuleCache.clear();

@@ -213,3 +211,3 @@ };

var hostMeta = createHostComponentMeta(compMeta);
compiledTemplate = new CompiledTemplate(true, compMeta.selector, compMeta.type, ngModule, [compMeta], this._templateNormalizer.normalizeDirective(hostMeta));
compiledTemplate = new CompiledTemplate(true, compMeta.selector, compMeta.type, hostMeta, ngModule, [compMeta.type]);
this._compiledHostTemplateCache.set(compType, compiledTemplate);

@@ -223,3 +221,3 @@ }

assertComponent(compMeta);
compiledTemplate = new CompiledTemplate(false, compMeta.selector, compMeta.type, ngModule, ngModule.transitiveModule.directives, this._templateNormalizer.normalizeDirective(compMeta));
compiledTemplate = new CompiledTemplate(false, compMeta.selector, compMeta.type, compMeta, ngModule, ngModule.transitiveModule.directives);
this._compiledTemplateCache.set(compMeta.type.reference, compiledTemplate);

@@ -233,13 +231,6 @@ }

if (!compiledTemplate) {
throw new Error("Illegal state: Compiled view for component " + stringify(compType) + " does not exist!");
throw new Error("Illegal state: Compiled view for component " + stringify(compType) + " (host: " + isHost + ") does not exist!");
}
return compiledTemplate;
};
RuntimeCompiler.prototype._assertComponentLoaded = function (compType, isHost) {
var compiledTemplate = this._assertComponentKnown(compType, isHost);
if (compiledTemplate.loading) {
throw new Error("Illegal state: CompiledTemplate for " + stringify(compType) + " (isHost: " + isHost + ") is still loading!");
}
return compiledTemplate;
};
RuntimeCompiler.prototype._assertDirectiveWrapper = function (dirType) {

@@ -269,3 +260,3 @@ var dirWrapper = this._compiledDirectiveWrapperCache.get(dirType);

}
var compMeta = template.normalizedCompMeta;
var compMeta = template.compMeta;
var externalStylesheetsByModuleUrl = new Map();

@@ -275,18 +266,19 @@ var stylesCompileResult = this._styleCompiler.compileComponent(compMeta);

this._resolveStylesCompileResult(stylesCompileResult.componentStylesheet, externalStylesheetsByModuleUrl);
var viewCompMetas = template.viewComponentTypes.map(function (compType) { return _this._assertComponentLoaded(compType, false).normalizedCompMeta; });
var parsedAnimations = this._animationParser.parseComponent(compMeta);
var parsedTemplate = this._templateParser.parse(compMeta, compMeta.template.template, template.viewDirectives.concat(viewCompMetas), template.viewPipes, template.schemas, compMeta.type.name);
var directives = template.directives.map(function (dir) { return _this._metadataResolver.getDirectiveSummary(dir.reference); });
var pipes = template.ngModule.transitiveModule.pipes.map(function (pipe) { return _this._metadataResolver.getPipeSummary(pipe.reference); });
var parsedTemplate = this._templateParser.parse(compMeta, compMeta.template.template, directives, pipes, template.ngModule.schemas, compMeta.type.name);
var compiledAnimations = this._animationCompiler.compile(compMeta.type.name, parsedAnimations);
var compileResult = this._viewCompiler.compileComponent(compMeta, parsedTemplate, ir.variable(stylesCompileResult.componentStylesheet.stylesVar), template.viewPipes, compiledAnimations);
var compileResult = this._viewCompiler.compileComponent(compMeta, parsedTemplate, ir.variable(stylesCompileResult.componentStylesheet.stylesVar), pipes, compiledAnimations);
compileResult.dependencies.forEach(function (dep) {
var depTemplate;
if (dep instanceof ViewFactoryDependency) {
if (dep instanceof ViewClassDependency) {
var vfd = dep;
depTemplate = _this._assertComponentLoaded(vfd.comp.reference, false);
vfd.placeholder.reference = depTemplate.proxyViewFactory;
vfd.placeholder.name = "viewFactory_" + vfd.comp.name;
depTemplate = _this._assertComponentKnown(vfd.comp.reference, false);
vfd.placeholder.reference = depTemplate.proxyViewClass;
vfd.placeholder.name = "View_" + vfd.comp.name;
}
else if (dep instanceof ComponentFactoryDependency) {
var cfd = dep;
depTemplate = _this._assertComponentLoaded(cfd.comp.reference, true);
depTemplate = _this._assertComponentKnown(cfd.comp.reference, true);
cfd.placeholder.reference = depTemplate.proxyComponentFactory;

@@ -300,12 +292,13 @@ cfd.placeholder.name = "compFactory_" + cfd.comp.name;

});
var statements = stylesCompileResult.componentStylesheet.statements.concat(compileResult.statements);
compiledAnimations.forEach(function (entry) { entry.statements.forEach(function (statement) { statements.push(statement); }); });
var factory;
var statements = (_a = stylesCompileResult.componentStylesheet.statements).concat.apply(_a, compiledAnimations.map(function (ca) { return ca.statements; }))
.concat(compileResult.statements);
var viewClass;
if (!this._compilerConfig.useJit) {
factory = interpretStatements(statements, compileResult.viewFactoryVar);
viewClass = interpretStatements(statements, compileResult.viewClassVar);
}
else {
factory = jitStatements("/" + template.ngModule.type.name + "/" + template.compType.name + "/" + (template.isHost ? 'host' : 'component') + ".ngfactory.js", statements, compileResult.viewFactoryVar);
viewClass = jitStatements("/" + template.ngModule.type.name + "/" + template.compType.name + "/" + (template.isHost ? 'host' : 'component') + ".ngfactory.js", statements, compileResult.viewClassVar);
}
template.compiled(factory);
template.compiled(viewClass);
var _a;
};

@@ -337,3 +330,2 @@ RuntimeCompiler.prototype._resolveStylesCompileResult = function (result, externalStylesheetsByModuleUrl) {

{ type: CompileMetadataResolver, },
{ type: DirectiveNormalizer, },
{ type: TemplateParser, },

@@ -345,2 +337,3 @@ { type: StyleCompiler, },

{ type: CompilerConfig, },
{ type: AnimationParser, },
];

@@ -350,62 +343,26 @@ return RuntimeCompiler;

var CompiledTemplate = (function () {
function CompiledTemplate(isHost, selector, compType, ngModule, viewDirectiveAndComponents, _normalizeResult) {
var _this = this;
function CompiledTemplate(isHost, selector, compType, compMeta, ngModule, directives) {
this.isHost = isHost;
this.compType = compType;
this.compMeta = compMeta;
this.ngModule = ngModule;
this._viewFactory = null;
this.loading = null;
this._normalizedCompMeta = null;
this.directives = directives;
this._viewClass = null;
this.isCompiled = false;
this.isCompiledWithDeps = false;
this.viewComponentTypes = [];
this.viewDirectives = [];
this.viewPipes = ngModule.transitiveModule.pipes;
this.schemas = ngModule.schemas;
viewDirectiveAndComponents.forEach(function (dirMeta) {
if (dirMeta.isComponent) {
_this.viewComponentTypes.push(dirMeta.type.reference);
var self = this;
this.proxyViewClass = function () {
if (!self._viewClass) {
throw new Error("Illegal state: CompiledTemplate for " + stringify(self.compType) + " is not compiled yet!");
}
else {
_this.viewDirectives.push(dirMeta);
}
});
this.proxyViewFactory = function () {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i - 0] = arguments[_i];
}
if (!_this._viewFactory) {
throw new Error("Illegal state: CompiledTemplate for " + stringify(_this.compType) + " is not compiled yet!");
}
return _this._viewFactory.apply(null, args);
return self._viewClass.apply(this, arguments);
};
this.proxyComponentFactory = isHost ?
new ComponentFactory(selector, this.proxyViewFactory, compType.reference) :
new ComponentFactory(selector, this.proxyViewClass, compType.reference) :
null;
if (_normalizeResult.syncResult) {
this._normalizedCompMeta = _normalizeResult.syncResult;
}
else {
this.loading = _normalizeResult.asyncResult.then(function (normalizedCompMeta) {
_this._normalizedCompMeta = normalizedCompMeta;
_this.loading = null;
});
}
}
Object.defineProperty(CompiledTemplate.prototype, "normalizedCompMeta", {
get: function () {
if (this.loading) {
throw new Error("Template is still loading for " + this.compType.name + "!");
}
return this._normalizedCompMeta;
},
enumerable: true,
configurable: true
});
CompiledTemplate.prototype.compiled = function (viewFactory) {
this._viewFactory = viewFactory;
CompiledTemplate.prototype.compiled = function (viewClass) {
this._viewClass = viewClass;
this.proxyViewClass.prototype = viewClass.prototype;
this.isCompiled = true;
};
CompiledTemplate.prototype.depsCompiled = function () { this.isCompiledWithDeps = true; };
return CompiledTemplate;

@@ -412,0 +369,0 @@ }());

@@ -1,1 +0,1 @@

{"__symbolic":"module","version":1,"metadata":{"RuntimeCompiler":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable"}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector"},{"__symbolic":"reference","module":"./metadata_resolver","name":"CompileMetadataResolver"},{"__symbolic":"reference","module":"./directive_normalizer","name":"DirectiveNormalizer"},{"__symbolic":"reference","module":"./template_parser/template_parser","name":"TemplateParser"},{"__symbolic":"reference","module":"./style_compiler","name":"StyleCompiler"},{"__symbolic":"reference","module":"./view_compiler/view_compiler","name":"ViewCompiler"},{"__symbolic":"reference","module":"./ng_module_compiler","name":"NgModuleCompiler"},{"__symbolic":"reference","module":"./directive_wrapper_compiler","name":"DirectiveWrapperCompiler"},{"__symbolic":"reference","module":"./config","name":"CompilerConfig"}]}],"compileModuleSync":[{"__symbolic":"method"}],"compileModuleAsync":[{"__symbolic":"method"}],"compileModuleAndAllComponentsSync":[{"__symbolic":"method"}],"compileModuleAndAllComponentsAsync":[{"__symbolic":"method"}],"_compileModuleAndComponents":[{"__symbolic":"method"}],"_compileModuleAndAllComponents":[{"__symbolic":"method"}],"_compileModule":[{"__symbolic":"method"}],"_compileComponents":[{"__symbolic":"method"}],"clearCacheFor":[{"__symbolic":"method"}],"clearCache":[{"__symbolic":"method"}],"_createCompiledHostTemplate":[{"__symbolic":"method"}],"_createCompiledTemplate":[{"__symbolic":"method"}],"_assertComponentKnown":[{"__symbolic":"method"}],"_assertComponentLoaded":[{"__symbolic":"method"}],"_assertDirectiveWrapper":[{"__symbolic":"method"}],"_compileDirectiveWrapper":[{"__symbolic":"method"}],"_compileTemplate":[{"__symbolic":"method"}],"_resolveStylesCompileResult":[{"__symbolic":"method"}],"_resolveAndEvalStylesCompileResult":[{"__symbolic":"method"}]}}}}
{"__symbolic":"module","version":1,"metadata":{"RuntimeCompiler":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable"}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector"},{"__symbolic":"reference","module":"./metadata_resolver","name":"CompileMetadataResolver"},{"__symbolic":"reference","module":"./template_parser/template_parser","name":"TemplateParser"},{"__symbolic":"reference","module":"./style_compiler","name":"StyleCompiler"},{"__symbolic":"reference","module":"./view_compiler/view_compiler","name":"ViewCompiler"},{"__symbolic":"reference","module":"./ng_module_compiler","name":"NgModuleCompiler"},{"__symbolic":"reference","module":"./directive_wrapper_compiler","name":"DirectiveWrapperCompiler"},{"__symbolic":"reference","module":"./config","name":"CompilerConfig"},{"__symbolic":"reference","module":"./animation/animation_parser","name":"AnimationParser"}]}],"compileModuleSync":[{"__symbolic":"method"}],"compileModuleAsync":[{"__symbolic":"method"}],"compileModuleAndAllComponentsSync":[{"__symbolic":"method"}],"compileModuleAndAllComponentsAsync":[{"__symbolic":"method"}],"_compileModuleAndComponents":[{"__symbolic":"method"}],"_compileModuleAndAllComponents":[{"__symbolic":"method"}],"_loadModules":[{"__symbolic":"method"}],"_compileModule":[{"__symbolic":"method"}],"_compileComponents":[{"__symbolic":"method"}],"clearCacheFor":[{"__symbolic":"method"}],"clearCache":[{"__symbolic":"method"}],"_createCompiledHostTemplate":[{"__symbolic":"method"}],"_createCompiledTemplate":[{"__symbolic":"method"}],"_assertComponentKnown":[{"__symbolic":"method"}],"_assertDirectiveWrapper":[{"__symbolic":"method"}],"_compileDirectiveWrapper":[{"__symbolic":"method"}],"_compileTemplate":[{"__symbolic":"method"}],"_resolveStylesCompileResult":[{"__symbolic":"method"}],"_resolveAndEvalStylesCompileResult":[{"__symbolic":"method"}]}}}}

@@ -37,2 +37,7 @@ /**

allKnownElementNames(): string[];
normalizeAnimationStyleProperty(propName: string): string;
normalizeAnimationStyleValue(camelCaseProp: string, userProvidedProp: string, val: string | number): {
error: string;
value: string;
};
}

@@ -14,2 +14,3 @@ /**

import { CUSTOM_ELEMENTS_SCHEMA, Injectable, NO_ERRORS_SCHEMA, SecurityContext } from '@angular/core';
import { dashCaseToCamelCase } from '../util';
import { SECURITY_SCHEMA } from './dom_security_schema';

@@ -229,2 +230,3 @@ import { ElementSchemaRegistry } from './element_schema_registry';

'class': 'className',
'for': 'htmlFor',
'formaction': 'formAction',

@@ -360,2 +362,22 @@ 'innerHtml': 'innerHTML',

DomElementSchemaRegistry.prototype.allKnownElementNames = function () { return Object.keys(this._schema); };
DomElementSchemaRegistry.prototype.normalizeAnimationStyleProperty = function (propName) {
return dashCaseToCamelCase(propName);
};
DomElementSchemaRegistry.prototype.normalizeAnimationStyleValue = function (camelCaseProp, userProvidedProp, val) {
var unit = '';
var strVal = val.toString().trim();
var errorMsg = null;
if (_isPixelDimensionStyle(camelCaseProp) && val !== 0 && val !== '0') {
if (typeof val === 'number') {
unit = 'px';
}
else {
var valAndSuffixMatch = val.match(/^[+-]?[\d\.]+([a-z]*)$/);
if (valAndSuffixMatch && valAndSuffixMatch[1].length == 0) {
errorMsg = "Please provide a CSS unit value for " + userProvidedProp + ":" + val;
}
}
}
return { error: errorMsg, value: strVal + unit };
};
DomElementSchemaRegistry.decorators = [

@@ -368,2 +390,37 @@ { type: Injectable },

}(ElementSchemaRegistry));
function _isPixelDimensionStyle(prop) {
switch (prop) {
case 'width':
case 'height':
case 'minWidth':
case 'minHeight':
case 'maxWidth':
case 'maxHeight':
case 'left':
case 'top':
case 'bottom':
case 'right':
case 'fontSize':
case 'outlineWidth':
case 'outlineOffset':
case 'paddingTop':
case 'paddingLeft':
case 'paddingBottom':
case 'paddingRight':
case 'marginTop':
case 'marginLeft':
case 'marginBottom':
case 'marginRight':
case 'borderRadius':
case 'borderWidth':
case 'borderTopWidth':
case 'borderLeftWidth':
case 'borderRightWidth':
case 'borderBottomWidth':
case 'textIndent':
return true;
default:
return false;
}
}
//# sourceMappingURL=dom_element_schema_registry.js.map

@@ -1,1 +0,1 @@

{"__symbolic":"module","version":1,"metadata":{"DomElementSchemaRegistry":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable"}}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"hasProperty":[{"__symbolic":"method"}],"hasElement":[{"__symbolic":"method"}],"securityContext":[{"__symbolic":"method"}],"getMappedPropName":[{"__symbolic":"method"}],"getDefaultComponentElementName":[{"__symbolic":"method"}],"validateProperty":[{"__symbolic":"method"}],"validateAttribute":[{"__symbolic":"method"}],"allKnownElementNames":[{"__symbolic":"method"}]}}}}
{"__symbolic":"module","version":1,"metadata":{"DomElementSchemaRegistry":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable"}}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"hasProperty":[{"__symbolic":"method"}],"hasElement":[{"__symbolic":"method"}],"securityContext":[{"__symbolic":"method"}],"getMappedPropName":[{"__symbolic":"method"}],"getDefaultComponentElementName":[{"__symbolic":"method"}],"validateProperty":[{"__symbolic":"method"}],"validateAttribute":[{"__symbolic":"method"}],"allKnownElementNames":[{"__symbolic":"method"}],"normalizeAnimationStyleProperty":[{"__symbolic":"method"}],"normalizeAnimationStyleValue":[{"__symbolic":"method"}]}}}}

@@ -24,2 +24,7 @@ /**

};
abstract normalizeAnimationStyleProperty(propName: string): string;
abstract normalizeAnimationStyleValue(camelCaseProp: string, userProvidedProp: string, val: string | number): {
error: string;
value: string;
};
}

@@ -379,3 +379,7 @@ /**

return selector
.replace(_polyfillHostNoCombinatorRe, function (hnc, selector) { return selector[0] === ':' ? replaceBy_1 + selector : selector + replaceBy_1; })
.replace(_polyfillHostNoCombinatorRe, function (hnc, selector) {
return selector.replace(/([^:]*)(:*)(.*)/, function (_, before, colon, after) {
return before + replaceBy_1 + colon + after;
});
})
.replace(_polyfillHostRe, replaceBy_1 + ' ');

@@ -411,3 +415,3 @@ }

var matches = t.match(/([^:]*)(:*)(.*)/);
if (matches !== null) {
if (matches) {
scopedP = matches[1] + attrName + matches[2] + matches[3];

@@ -419,12 +423,4 @@ }

};
var attrSelectorIndex = 0;
var attrSelectors = [];
// replace attribute selectors with placeholders to avoid issue with white space being treated
// as separator
selector = selector.replace(/\[[^\]]*\]/g, function (attrSelector) {
var replaceBy = "__attr_sel_" + attrSelectorIndex + "__";
attrSelectors.push(attrSelector);
attrSelectorIndex++;
return replaceBy;
});
var safeContent = new SafeSelector(selector);
selector = safeContent.content();
var scopedSelector = '';

@@ -446,3 +442,3 @@ var startIndex = 0;

// replace the placeholders with their original values
return scopedSelector.replace(/__attr_sel_(\d+)__/g, function (ph, index) { return attrSelectors[+index]; });
return safeContent.restore(scopedSelector);
};

@@ -455,2 +451,32 @@ ShadowCss.prototype._insertPolyfillHostInCssText = function (selector) {

}());
var SafeSelector = (function () {
function SafeSelector(selector) {
var _this = this;
this.placeholders = [];
this.index = 0;
// Replaces attribute selectors with placeholders.
// The WS in [attr="va lue"] would otherwise be interpreted as a selector separator.
selector = selector.replace(/(\[[^\]]*\])/g, function (_, keep) {
var replaceBy = "__ph-" + _this.index + "__";
_this.placeholders.push(keep);
_this.index++;
return replaceBy;
});
// Replaces the expression in `:nth-child(2n + 1)` with a placeholder.
// WS and "+" would otherwise be interpreted as selector separators.
this._content = selector.replace(/(:nth-[-\w]+)(\([^)]+\))/g, function (_, pseudo, exp) {
var replaceBy = "__ph-" + _this.index + "__";
_this.placeholders.push(exp);
_this.index++;
return pseudo + replaceBy;
});
}
;
SafeSelector.prototype.restore = function (content) {
var _this = this;
return content.replace(/__ph-(\d+)__/g, function (ph, index) { return _this.placeholders[+index]; });
};
SafeSelector.prototype.content = function () { return this._content; };
return SafeSelector;
}());
var _cssContentNextSelectorRe = /polyfill-next-selector[^}]*content:[\s]*?(['"])(.*?)\1[;\s]*}([^{]*?){/gim;

@@ -457,0 +483,0 @@ var _cssContentRuleRe = /(polyfill-rule)[^}]*(content:[\s]*(['"])(.*?)\3)[;\s]*[^}]*}/gim;

@@ -9,3 +9,3 @@ /**

import { SecurityContext } from '@angular/core';
import { CompileDirectiveMetadata, CompilePipeMetadata } from '../compile_metadata';
import { CompileDirectiveSummary, CompilePipeSummary } from '../compile_metadata';
import { ASTWithSource, BindingPipe, RecursiveAstVisitor } from '../expression_parser/ast';

@@ -42,9 +42,9 @@ import { Parser } from '../expression_parser/parser';

private _targetErrors;
pipesByName: Map<string, CompilePipeMetadata>;
constructor(_exprParser: Parser, _interpolationConfig: InterpolationConfig, _schemaRegistry: ElementSchemaRegistry, pipes: CompilePipeMetadata[], _targetErrors: ParseError[]);
createDirectiveHostPropertyAsts(dirMeta: CompileDirectiveMetadata, sourceSpan: ParseSourceSpan): BoundElementPropertyAst[];
createDirectiveHostEventAsts(dirMeta: CompileDirectiveMetadata, sourceSpan: ParseSourceSpan): BoundEventAst[];
pipesByName: Map<string, CompilePipeSummary>;
constructor(_exprParser: Parser, _interpolationConfig: InterpolationConfig, _schemaRegistry: ElementSchemaRegistry, pipes: CompilePipeSummary[], _targetErrors: ParseError[]);
createDirectiveHostPropertyAsts(dirMeta: CompileDirectiveSummary, sourceSpan: ParseSourceSpan): BoundElementPropertyAst[];
createDirectiveHostEventAsts(dirMeta: CompileDirectiveSummary, sourceSpan: ParseSourceSpan): BoundEventAst[];
parseInterpolation(value: string, sourceSpan: ParseSourceSpan): ASTWithSource;
parseInlineTemplateBinding(name: string, value: string, sourceSpan: ParseSourceSpan, targetMatchableAttrs: string[][], targetProps: BoundProperty[], targetVars: VariableAst[]): void;
private _parseTemplateBindings(value, sourceSpan);
parseInlineTemplateBinding(name: string, prefixToken: string, value: string, sourceSpan: ParseSourceSpan, targetMatchableAttrs: string[][], targetProps: BoundProperty[], targetVars: VariableAst[]): void;
private _parseTemplateBindings(prefixToken, value, sourceSpan);
parseLiteralAttr(name: string, value: string, sourceSpan: ParseSourceSpan, targetMatchableAttrs: string[][], targetProps: BoundProperty[]): void;

@@ -51,0 +51,0 @@ parsePropertyBinding(name: string, expression: string, isHost: boolean, sourceSpan: ParseSourceSpan, targetMatchableAttrs: string[][], targetProps: BoundProperty[]): void;

@@ -18,3 +18,2 @@ /**

import { ParseError, ParseErrorLevel } from '../parse_util';
import { view_utils } from '../private_import_core';
import { CssSelector } from '../selector';

@@ -108,6 +107,2 @@ import { splitAtColon, splitAtPeriod } from '../util';

this._checkPipes(ast, sourceSpan);
if (ast &&
ast.ast.expressions.length > view_utils.MAX_INTERPOLATION_VALUES) {
throw new Error("Only support at most " + view_utils.MAX_INTERPOLATION_VALUES + " interpolation values!");
}
return ast;

@@ -120,4 +115,4 @@ }

};
BindingParser.prototype.parseInlineTemplateBinding = function (name, value, sourceSpan, targetMatchableAttrs, targetProps, targetVars) {
var bindings = this._parseTemplateBindings(value, sourceSpan);
BindingParser.prototype.parseInlineTemplateBinding = function (name, prefixToken, value, sourceSpan, targetMatchableAttrs, targetProps, targetVars) {
var bindings = this._parseTemplateBindings(prefixToken, value, sourceSpan);
for (var i = 0; i < bindings.length; i++) {

@@ -137,7 +132,7 @@ var binding = bindings[i];

};
BindingParser.prototype._parseTemplateBindings = function (value, sourceSpan) {
BindingParser.prototype._parseTemplateBindings = function (prefixToken, value, sourceSpan) {
var _this = this;
var sourceInfo = sourceSpan.start.toString();
try {
var bindingsResult = this._exprParser.parseTemplateBindings(value, sourceInfo);
var bindingsResult = this._exprParser.parseTemplateBindings(prefixToken, value, sourceInfo);
this._reportExpressionParserErrors(bindingsResult.errors, sourceSpan);

@@ -144,0 +139,0 @@ bindingsResult.templateBindings.forEach(function (binding) {

@@ -9,3 +9,3 @@ /**

import { SecurityContext } from '@angular/core';
import { CompileDirectiveMetadata, CompileProviderMetadata, CompileTokenMetadata } from '../compile_metadata';
import { CompileDirectiveSummary, CompileProviderMetadata, CompileTokenMetadata } from '../compile_metadata';
import { AST } from '../expression_parser/ast';

@@ -160,3 +160,3 @@ import { ParseSourceSpan } from '../parse_util';

export declare class DirectiveAst implements TemplateAst {
directive: CompileDirectiveMetadata;
directive: CompileDirectiveSummary;
inputs: BoundDirectivePropertyAst[];

@@ -166,3 +166,3 @@ hostProperties: BoundElementPropertyAst[];

sourceSpan: ParseSourceSpan;
constructor(directive: CompileDirectiveMetadata, inputs: BoundDirectivePropertyAst[], hostProperties: BoundElementPropertyAst[], hostEvents: BoundEventAst[], sourceSpan: ParseSourceSpan);
constructor(directive: CompileDirectiveSummary, inputs: BoundDirectivePropertyAst[], hostProperties: BoundElementPropertyAst[], hostEvents: BoundEventAst[], sourceSpan: ParseSourceSpan);
visit(visitor: TemplateAstVisitor, context: any): any;

@@ -169,0 +169,0 @@ }

@@ -9,3 +9,3 @@ /**

import { OpaqueToken, SchemaMetadata } from '@angular/core';
import { CompileDirectiveMetadata, CompilePipeMetadata } from '../compile_metadata';
import { CompileDirectiveMetadata, CompileDirectiveSummary, CompilePipeSummary, CompileTypeMetadata } from '../compile_metadata';
import { Parser } from '../expression_parser/parser';

@@ -42,5 +42,5 @@ import { I18NHtmlParser } from '../i18n/i18n_html_parser';

constructor(_exprParser: Parser, _schemaRegistry: ElementSchemaRegistry, _htmlParser: I18NHtmlParser, _console: Console, transforms: TemplateAstVisitor[]);
parse(component: CompileDirectiveMetadata, template: string, directives: CompileDirectiveMetadata[], pipes: CompilePipeMetadata[], schemas: SchemaMetadata[], templateUrl: string): TemplateAst[];
tryParse(component: CompileDirectiveMetadata, template: string, directives: CompileDirectiveMetadata[], pipes: CompilePipeMetadata[], schemas: SchemaMetadata[], templateUrl: string): TemplateParseResult;
tryParseHtml(htmlAstWithErrors: ParseTreeResult, component: CompileDirectiveMetadata, template: string, directives: CompileDirectiveMetadata[], pipes: CompilePipeMetadata[], schemas: SchemaMetadata[], templateUrl: string): TemplateParseResult;
parse(component: CompileDirectiveMetadata, template: string, directives: CompileDirectiveSummary[], pipes: CompilePipeSummary[], schemas: SchemaMetadata[], templateUrl: string): TemplateAst[];
tryParse(component: CompileDirectiveMetadata, template: string, directives: CompileDirectiveSummary[], pipes: CompilePipeSummary[], schemas: SchemaMetadata[], templateUrl: string): TemplateParseResult;
tryParseHtml(htmlAstWithErrors: ParseTreeResult, component: CompileDirectiveMetadata, template: string, directives: CompileDirectiveSummary[], pipes: CompilePipeSummary[], schemas: SchemaMetadata[], templateUrl: string): TemplateParseResult;
expandHtml(htmlAstWithErrors: ParseTreeResult, forced?: boolean): ParseTreeResult;

@@ -50,1 +50,4 @@ getInterpolationConfig(component: CompileDirectiveMetadata): InterpolationConfig;

export declare function splitClasses(classAttrValue: string): string[];
export declare function removeSummaryDuplicates<T extends {
type: CompileTypeMetadata;
}>(items: T[]): T[];

@@ -14,3 +14,2 @@ /**

import { Inject, Injectable, OpaqueToken, Optional } from '@angular/core';
import { removeIdentifierDuplicates } from '../compile_metadata';
import { Parser } from '../expression_parser/parser';

@@ -110,4 +109,4 @@ import { isPresent } from '../facade/lang';

if (htmlAstWithErrors.rootNodes.length > 0) {
var uniqDirectives = removeIdentifierDuplicates(directives);
var uniqPipes = removeIdentifierDuplicates(pipes);
var uniqDirectives = removeSummaryDuplicates(directives);
var uniqPipes = removeSummaryDuplicates(pipes);
var providerViewContext = new ProviderViewContext(component, htmlAstWithErrors.rootNodes[0].sourceSpan);

@@ -246,3 +245,4 @@ var interpolationConfig = void 0;

var hasBinding = _this._parseAttr(isTemplateElement, attr, matchableAttrs, elementOrDirectiveProps, events, elementOrDirectiveRefs, elementVars);
var templateBindingsSource;
var templateBindingsSource = undefined;
var prefixToken = undefined;
if (_this._normalizeAttributeName(attr.name) == TEMPLATE_ATTR) {

@@ -252,4 +252,4 @@ templateBindingsSource = attr.value;

else if (attr.name.startsWith(TEMPLATE_ATTR_PREFIX)) {
var key = attr.name.substring(TEMPLATE_ATTR_PREFIX.length); // remove the star
templateBindingsSource = (attr.value.length == 0) ? key : key + ' ' + attr.value;
templateBindingsSource = attr.value;
prefixToken = attr.name.substring(TEMPLATE_ATTR_PREFIX.length); // remove the star
}

@@ -262,3 +262,3 @@ var hasTemplateBinding = isPresent(templateBindingsSource);

hasInlineTemplates = true;
_this._bindingParser.parseInlineTemplateBinding(attr.name, templateBindingsSource, attr.sourceSpan, templateMatchableAttrs, templateElementOrDirectiveProps, templateElementVars);
_this._bindingParser.parseInlineTemplateBinding(attr.name, prefixToken, templateBindingsSource, attr.sourceSpan, templateMatchableAttrs, templateElementOrDirectiveProps, templateElementVars);
}

@@ -305,3 +305,3 @@ if (!hasBinding && !hasTemplateBinding) {

var componentTemplate = providerContext.viewContext.component.template;
this._validateElementAnimationInputOutputs(elementProps, events, componentTemplate);
this._validateElementAnimationInputOutputs(elementProps, events, componentTemplate.toSummary());
}

@@ -323,3 +323,3 @@ if (hasInlineTemplates) {

var triggerLookup = new Set();
template.animations.forEach(function (entry) { triggerLookup.add(entry.name); });
template.animations.forEach(function (entry) { triggerLookup.add(entry); });
var animationInputs = inputs.filter(function (input) { return input.isAnimation; });

@@ -685,2 +685,11 @@ animationInputs.forEach(function (input) {

}
export function removeSummaryDuplicates(items) {
var map = new Map();
items.forEach(function (item) {
if (!map.get(item.type.reference)) {
map.set(item.type.reference, item);
}
});
return Array.from(map.values());
}
//# sourceMappingURL=template_parser.js.map

@@ -1,1 +0,1 @@

{"__symbolic":"module","version":1,"metadata":{"TEMPLATE_TRANSFORMS":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"OpaqueToken"},"arguments":["TemplateTransforms"]},"TemplateParser":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable"}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional"}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject"},"arguments":[{"__symbolic":"reference","name":"TEMPLATE_TRANSFORMS"}]}]],"parameters":[{"__symbolic":"reference","module":"../expression_parser/parser","name":"Parser"},{"__symbolic":"reference","module":"../schema/element_schema_registry","name":"ElementSchemaRegistry"},{"__symbolic":"reference","module":"../i18n/i18n_html_parser","name":"I18NHtmlParser"},{"__symbolic":"reference","module":"../private_import_core","name":"Console"},{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","module":"./template_ast","name":"TemplateAstVisitor"}]}]}],"parse":[{"__symbolic":"method"}],"tryParse":[{"__symbolic":"method"}],"tryParseHtml":[{"__symbolic":"method"}],"expandHtml":[{"__symbolic":"method"}],"getInterpolationConfig":[{"__symbolic":"method"}],"_assertNoReferenceDuplicationOnTemplate":[{"__symbolic":"method"}]}},"splitClasses":{"__symbolic":"function","parameters":["classAttrValue"],"value":{"__symbolic":"error","message":"Expression form not supported","line":773,"character":37}}}}
{"__symbolic":"module","version":1,"metadata":{"TEMPLATE_TRANSFORMS":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"OpaqueToken"},"arguments":["TemplateTransforms"]},"TemplateParser":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable"}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional"}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject"},"arguments":[{"__symbolic":"reference","name":"TEMPLATE_TRANSFORMS"}]}]],"parameters":[{"__symbolic":"reference","module":"../expression_parser/parser","name":"Parser"},{"__symbolic":"reference","module":"../schema/element_schema_registry","name":"ElementSchemaRegistry"},{"__symbolic":"reference","module":"../i18n/i18n_html_parser","name":"I18NHtmlParser"},{"__symbolic":"reference","module":"../private_import_core","name":"Console"},{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","module":"./template_ast","name":"TemplateAstVisitor"}]}]}],"parse":[{"__symbolic":"method"}],"tryParse":[{"__symbolic":"method"}],"tryParseHtml":[{"__symbolic":"method"}],"expandHtml":[{"__symbolic":"method"}],"getInterpolationConfig":[{"__symbolic":"method"}],"_assertNoReferenceDuplicationOnTemplate":[{"__symbolic":"method"}]}},"splitClasses":{"__symbolic":"function","parameters":["classAttrValue"],"value":{"__symbolic":"error","message":"Expression form not supported","line":775,"character":37}}}}
export declare const MODULE_SUFFIX: string;
export declare function camelCaseToDashCase(input: string): string;
export declare function dashCaseToCamelCase(input: string): string;
export declare function splitAtColon(input: string, defaultValues: string[]): string[];

@@ -4,0 +5,0 @@ export declare function splitAtPeriod(input: string, defaultValues: string[]): string[];

@@ -11,2 +11,3 @@ /**

var CAMEL_CASE_REGEXP = /([A-Z])/g;
var DASH_CASE_REGEXP = /-+([a-z0-9])/g;
export function camelCaseToDashCase(input) {

@@ -21,2 +22,11 @@ return input.replace(CAMEL_CASE_REGEXP, function () {

}
export function dashCaseToCamelCase(input) {
return input.replace(DASH_CASE_REGEXP, function () {
var m = [];
for (var _i = 0; _i < arguments.length; _i++) {
m[_i - 0] = arguments[_i];
}
return m[1].toUpperCase();
});
}
export function splitAtColon(input, defaultValues) {

@@ -23,0 +33,0 @@ return _splitAt(input, ':', defaultValues);

@@ -1,1 +0,1 @@

{"__symbolic":"module","version":1,"metadata":{"MODULE_SUFFIX":"","camelCaseToDashCase":{"__symbolic":"function","parameters":["input"],"value":{"__symbolic":"error","message":"Reference to a local symbol","line":12,"character":6,"context":{"name":"CAMEL_CASE_REGEXP"}}},"splitAtColon":{"__symbolic":"function","parameters":["input","defaultValues"],"value":{"__symbolic":"error","message":"Reference to a non-exported function","line":26,"character":9,"context":{"name":"_splitAt"}}},"splitAtPeriod":{"__symbolic":"function","parameters":["input","defaultValues"],"value":{"__symbolic":"error","message":"Reference to a non-exported function","line":26,"character":9,"context":{"name":"_splitAt"}}},"sanitizeIdentifier":{"__symbolic":"function","parameters":["name"],"value":{"__symbolic":"error","message":"Expression form not supported","line":33,"character":22}}}}
{"__symbolic":"module","version":1,"metadata":{"MODULE_SUFFIX":"","camelCaseToDashCase":{"__symbolic":"function","parameters":["input"],"value":{"__symbolic":"error","message":"Reference to a local symbol","line":12,"character":6,"context":{"name":"CAMEL_CASE_REGEXP"}}},"dashCaseToCamelCase":{"__symbolic":"function","parameters":["input"],"value":{"__symbolic":"error","message":"Reference to a local symbol","line":13,"character":6,"context":{"name":"DASH_CASE_REGEXP"}}},"splitAtColon":{"__symbolic":"function","parameters":["input","defaultValues"],"value":{"__symbolic":"error","message":"Reference to a non-exported function","line":31,"character":9,"context":{"name":"_splitAt"}}},"splitAtPeriod":{"__symbolic":"function","parameters":["input","defaultValues"],"value":{"__symbolic":"error","message":"Reference to a non-exported function","line":31,"character":9,"context":{"name":"_splitAt"}}},"sanitizeIdentifier":{"__symbolic":"function","parameters":["name"],"value":{"__symbolic":"error","message":"Expression form not supported","line":38,"character":22}}}}

@@ -8,7 +8,7 @@ /**

*/
import { CompileDirectiveMetadata, CompileTokenMetadata } from '../compile_metadata';
import { CompileDirectiveSummary, CompileTokenMetadata } from '../compile_metadata';
import * as o from '../output/output_ast';
import { ProviderAst, ReferenceAst, TemplateAst } from '../template_parser/template_ast';
import { CompileView, CompileViewRootNode } from './compile_view';
import { ComponentFactoryDependency, DirectiveWrapperDependency, ViewFactoryDependency } from './deps';
import { ComponentFactoryDependency, DirectiveWrapperDependency, ViewClassDependency } from './deps';
export declare class CompileNode {

@@ -25,3 +25,3 @@ parent: CompileElement;

export declare class CompileElement extends CompileNode {
component: CompileDirectiveMetadata;
component: CompileDirectiveSummary;
private _directives;

@@ -33,6 +33,5 @@ private _resolvedProvidersArray;

static createNull(): CompileElement;
private _compViewExpr;
appElement: o.ReadPropExpr;
compViewExpr: o.Expression;
viewContainer: o.ReadPropExpr;
elementRef: o.Expression;
injector: o.Expression;
instances: Map<any, o.Expression>;

@@ -48,4 +47,4 @@ directiveWrapperInstance: Map<any, o.Expression>;

};
constructor(parent: CompileElement, view: CompileView, nodeIndex: number, renderNode: o.Expression, sourceAst: TemplateAst, component: CompileDirectiveMetadata, _directives: CompileDirectiveMetadata[], _resolvedProvidersArray: ProviderAst[], hasViewContainer: boolean, hasEmbeddedView: boolean, references: ReferenceAst[], _targetDependencies: Array<ViewFactoryDependency | ComponentFactoryDependency | DirectiveWrapperDependency>);
private _createAppElement();
constructor(parent: CompileElement, view: CompileView, nodeIndex: number, renderNode: o.Expression, sourceAst: TemplateAst, component: CompileDirectiveSummary, _directives: CompileDirectiveSummary[], _resolvedProvidersArray: ProviderAst[], hasViewContainer: boolean, hasEmbeddedView: boolean, references: ReferenceAst[], _targetDependencies: Array<ViewClassDependency | ComponentFactoryDependency | DirectiveWrapperDependency>);
private _createViewContainer();
private _createComponentFactoryResolver();

@@ -52,0 +51,0 @@ setComponentView(compViewExpr: o.Expression): void;

@@ -16,3 +16,2 @@ /**

import { DirectiveWrapperCompiler, DirectiveWrapperExpressions } from '../directive_wrapper_compiler';
import { MapWrapper } from '../facade/collection';
import { isPresent } from '../facade/lang';

@@ -51,3 +50,3 @@ import { Identifiers, identifierToken, resolveIdentifier, resolveIdentifierToken } from '../identifiers';

this._targetDependencies = _targetDependencies;
this._compViewExpr = null;
this.compViewExpr = null;
this.instances = new Map();

@@ -63,7 +62,6 @@ this.directiveWrapperInstance = new Map();

this.instances.set(resolveIdentifierToken(Identifiers.ElementRef).reference, this.elementRef);
this.injector = o.THIS_EXPR.callMethod('injector', [o.literal(this.nodeIndex)]);
this.instances.set(resolveIdentifierToken(Identifiers.Injector).reference, this.injector);
this.instances.set(resolveIdentifierToken(Identifiers.Injector).reference, o.THIS_EXPR.callMethod('injector', [o.literal(this.nodeIndex)]));
this.instances.set(resolveIdentifierToken(Identifiers.Renderer).reference, o.THIS_EXPR.prop('renderer'));
if (this.hasViewContainer || this.hasEmbeddedView || isPresent(this.component)) {
this._createAppElement();
if (this.hasViewContainer || this.hasEmbeddedView) {
this._createViewContainer();
}

@@ -77,9 +75,9 @@ if (this.component) {

};
CompileElement.prototype._createAppElement = function () {
var fieldName = "_appEl_" + this.nodeIndex;
CompileElement.prototype._createViewContainer = function () {
var fieldName = "_vc_" + this.nodeIndex;
var parentNodeIndex = this.isRootElement() ? null : this.parent.nodeIndex;
// private is fine here as no child view will reference an AppElement
this.view.fields.push(new o.ClassField(fieldName, o.importType(resolveIdentifier(Identifiers.AppElement)), [o.StmtModifier.Private]));
// private is fine here as no child view will reference a ViewContainer
this.view.fields.push(new o.ClassField(fieldName, o.importType(resolveIdentifier(Identifiers.ViewContainer)), [o.StmtModifier.Private]));
var statement = o.THIS_EXPR.prop(fieldName)
.set(o.importExpr(resolveIdentifier(Identifiers.AppElement)).instantiate([
.set(o.importExpr(resolveIdentifier(Identifiers.ViewContainer)).instantiate([
o.literal(this.nodeIndex), o.literal(parentNodeIndex), o.THIS_EXPR, this.renderNode

@@ -89,7 +87,5 @@ ]))

this.view.createMethod.addStmt(statement);
this.appElement = o.THIS_EXPR.prop(fieldName);
this.instances.set(resolveIdentifierToken(Identifiers.AppElement).reference, this.appElement);
if (this.hasViewContainer) {
this.view.viewContainerAppElements.push(this.appElement);
}
this.viewContainer = o.THIS_EXPR.prop(fieldName);
this.instances.set(resolveIdentifierToken(Identifiers.ViewContainer).reference, this.viewContainer);
this.view.viewContainers.push(this.viewContainer);
};

@@ -108,3 +104,3 @@ CompileElement.prototype._createComponentFactoryResolver = function () {

o.literalArr(entryComponents.map(function (entryComponent) { return o.importExpr(entryComponent); })),
injectFromViewParentInjector(resolveIdentifierToken(Identifiers.ComponentFactoryResolver), false)
injectFromViewParentInjector(this.view, resolveIdentifierToken(Identifiers.ComponentFactoryResolver), false)
]);

@@ -121,3 +117,3 @@ var provider = new CompileProviderMetadata({

CompileElement.prototype.setComponentView = function (compViewExpr) {
this._compViewExpr = compViewExpr;
this.compViewExpr = compViewExpr;
this.contentNodesByNgContentIndex =

@@ -133,3 +129,3 @@ new Array(this.component.template.ngContentSelectors.length);

var createTemplateRefExpr = o.importExpr(resolveIdentifier(Identifiers.TemplateRef_)).instantiate([
this.appElement, this.embeddedView.viewFactory
o.THIS_EXPR, o.literal(this.nodeIndex), this.renderNode
]);

@@ -147,3 +143,3 @@ var provider = new CompileProviderMetadata({

if (this.hasViewContainer) {
this.instances.set(resolveIdentifierToken(Identifiers.ViewContainerRef).reference, this.appElement.prop('vcRef'));
this.instances.set(resolveIdentifierToken(Identifiers.ViewContainerRef).reference, this.viewContainer.prop('vcRef'));
}

@@ -154,10 +150,10 @@ this._resolvedProviders = new Map();

// some as getters. We rely on the fact that they are already sorted topologically.
MapWrapper.values(this._resolvedProviders).forEach(function (resolvedProvider) {
Array.from(this._resolvedProviders.values()).forEach(function (resolvedProvider) {
var isDirectiveWrapper = resolvedProvider.providerType === ProviderAstType.Component ||
resolvedProvider.providerType === ProviderAstType.Directive;
var providerValueExpressions = resolvedProvider.providers.map(function (provider) {
if (isPresent(provider.useExisting)) {
if (provider.useExisting) {
return _this._getDependency(resolvedProvider.providerType, new CompileDiDependencyMetadata({ token: provider.useExisting }));
}
else if (isPresent(provider.useFactory)) {
else if (provider.useFactory) {
var deps = provider.deps || provider.useFactory.diDeps;

@@ -167,3 +163,3 @@ var depsExpr = deps.map(function (dep) { return _this._getDependency(resolvedProvider.providerType, dep); });

}
else if (isPresent(provider.useClass)) {
else if (provider.useClass) {
var deps = provider.deps || provider.useClass.diDeps;

@@ -195,9 +191,13 @@ var depsExpr = deps.map(function (dep) { return _this._getDependency(resolvedProvider.providerType, dep); });

});
var _loop_1 = function(i) {
var directive = this_1._directives[i];
var directiveInstance = this_1.instances.get(identifierToken(directive.type).reference);
directive.queries.forEach(function (queryMeta) { _this._addQuery(queryMeta, directiveInstance); });
};
var this_1 = this;
for (var i = 0; i < this._directives.length; i++) {
var directive = this._directives[i];
var directiveInstance = this.instances.get(identifierToken(directive.type).reference);
directive.queries.forEach(function (queryMeta) { _this._addQuery(queryMeta, directiveInstance); });
_loop_1(i);
}
var queriesWithReads = [];
MapWrapper.values(this._resolvedProviders).forEach(function (resolvedProvider) {
Array.from(this._resolvedProviders.values()).forEach(function (resolvedProvider) {
var queriesForProvider = _this._getQueriesFor(resolvedProvider.token);

@@ -209,3 +209,3 @@ queriesWithReads.push.apply(queriesWithReads, queriesForProvider.map(function (query) { return new _QueryWithRead(query, resolvedProvider.token); }));

var varValue;
if (isPresent(token)) {
if (token) {
varValue = _this.instances.get(token.reference);

@@ -240,10 +240,6 @@ }

});
if (isPresent(this.component)) {
var compExpr = isPresent(this.getComponent()) ? this.getComponent() : o.NULL_EXPR;
this.view.createMethod.addStmt(this.appElement.callMethod('initComponent', [compExpr, this._compViewExpr]).toStmt());
}
};
CompileElement.prototype.afterChildren = function (childNodeCount) {
var _this = this;
MapWrapper.values(this._resolvedProviders).forEach(function (resolvedProvider) {
Array.from(this._resolvedProviders.values()).forEach(function (resolvedProvider) {
// Note: afterChildren is called after recursing into children.

@@ -260,4 +256,6 @@ // This is good so that an injector match in an element that is closer to a requesting element

});
MapWrapper.values(this._queries)
.forEach(function (queries) { return queries.forEach(function (query) { return query.afterChildren(_this.view.createMethod, _this.view.updateContentQueriesMethod); }); });
Array.from(this._queries.values())
.forEach(function (queries) { return queries.forEach(function (q) {
return q.afterChildren(_this.view.createMethod, _this.view.updateContentQueriesMethod);
}); });
};

@@ -273,3 +271,3 @@ CompileElement.prototype.addContentNode = function (ngContentIndex, nodeExpr) {

CompileElement.prototype.getProviderTokens = function () {
return MapWrapper.values(this._resolvedProviders)
return Array.from(this._resolvedProviders.values())
.map(function (resolvedProvider) { return createDiTokenExpression(resolvedProvider.token); });

@@ -313,3 +311,3 @@ };

if (requestingProviderType === ProviderAstType.Component) {
return this._compViewExpr.prop('ref');
return this.compViewExpr.prop('ref');
}

@@ -351,3 +349,3 @@ else {

if (!result) {
result = injectFromViewParentInjector(dep.token, dep.isOptional);
result = injectFromViewParentInjector(this.view, dep.token, dep.isOptional);
}

@@ -354,0 +352,0 @@ if (!result) {

@@ -8,3 +8,3 @@ /**

*/
import { CompilePipeMetadata } from '../compile_metadata';
import { CompilePipeSummary } from '../compile_metadata';
import * as o from '../output/output_ast';

@@ -14,9 +14,9 @@ import { CompileView } from './compile_view';

view: CompileView;
meta: CompilePipeMetadata;
meta: CompilePipeSummary;
static call(view: CompileView, name: string, args: o.Expression[]): o.Expression;
instance: o.ReadPropExpr;
private _purePipeProxyCount;
constructor(view: CompileView, meta: CompilePipeMetadata);
constructor(view: CompileView, meta: CompilePipeSummary);
pure: boolean;
private _call(callingView, args);
}

@@ -24,3 +24,3 @@ /**

}
return injectFromViewParentInjector(diDep.token, false);
return injectFromViewParentInjector(view, diDep.token, false);
});

@@ -27,0 +27,0 @@ this.view.fields.push(new o.ClassField(this.instance.name, o.importType(this.meta.type)));

@@ -83,3 +83,3 @@ /**

if (entry instanceof ViewQueryValues) {
return mapNestedViews(entry.view.declarationElement.appElement, entry.view, createQueryValues(entry));
return mapNestedViews(entry.view.declarationElement.viewContainer, entry.view, createQueryValues(entry));
}

@@ -91,5 +91,5 @@ else {

}
function mapNestedViews(declarationAppElement, view, expressions) {
function mapNestedViews(viewContainer, view, expressions) {
var adjustedExpressions = expressions.map(function (expr) { return o.replaceVarInExpression(o.THIS_EXPR.name, o.variable('nestedView'), expr); });
return declarationAppElement.callMethod('mapNestedViews', [
return viewContainer.callMethod('mapNestedViews', [
o.variable(view.className),

@@ -96,0 +96,0 @@ o.fn([new o.FnParam('nestedView', view.classType)], [new o.ReturnStatement(o.literalArr(adjustedExpressions))], o.DYNAMIC_TYPE)

@@ -9,3 +9,3 @@ /**

import { AnimationEntryCompileResult } from '../animation/animation_compiler';
import { CompileDirectiveMetadata, CompilePipeMetadata } from '../compile_metadata';
import { CompileDirectiveMetadata, CompilePipeSummary } from '../compile_metadata';
import { NameResolver } from '../compiler_util/expression_converter';

@@ -33,3 +33,3 @@ import { CompilerConfig } from '../config';

genConfig: CompilerConfig;
pipeMetas: CompilePipeMetadata[];
pipeMetas: CompilePipeSummary[];
styles: o.Expression;

@@ -46,3 +46,3 @@ animations: AnimationEntryCompileResult[];

lastRenderNode: o.Expression;
viewContainerAppElements: o.Expression[];
viewContainers: o.Expression[];
createMethod: CompileMethod;

@@ -71,3 +71,3 @@ animationBindingsMethod: CompileMethod;

classType: o.Type;
viewFactory: o.ReadVarExpr;
classExpr: o.ReadVarExpr;
literalArrayCount: number;

@@ -77,3 +77,3 @@ literalMapCount: number;

componentContext: o.Expression;
constructor(component: CompileDirectiveMetadata, genConfig: CompilerConfig, pipeMetas: CompilePipeMetadata[], styles: o.Expression, animations: AnimationEntryCompileResult[], viewIndex: number, declarationElement: CompileElement, templateVariableBindings: string[][]);
constructor(component: CompileDirectiveMetadata, genConfig: CompilerConfig, pipeMetas: CompilePipeSummary[], styles: o.Expression, animations: AnimationEntryCompileResult[], viewIndex: number, declarationElement: CompileElement, templateVariableBindings: string[][]);
callPipe(name: string, input: o.Expression, args: o.Expression[]): o.Expression;

@@ -80,0 +80,0 @@ getLocal(name: string): o.Expression;

@@ -10,3 +10,2 @@ /**

import { EventHandlerVars } from '../compiler_util/expression_converter';
import { MapWrapper } from '../facade/collection';
import { isPresent } from '../facade/lang';

@@ -18,3 +17,3 @@ import * as o from '../output/output_ast';

import { CompileQuery, addQueryToTokenMap, createQueryList } from './compile_query';
import { getPropertyInView, getViewFactoryName } from './util';
import { getPropertyInView, getViewClassName } from './util';
export var CompileViewRootNodeType;

@@ -49,3 +48,3 @@ (function (CompileViewRootNodeType) {

this.lastRenderNode = o.NULL_EXPR;
this.viewContainerAppElements = [];
this.viewContainers = [];
this.methods = [];

@@ -75,5 +74,5 @@ this.ctorStmts = [];

this.viewType = getViewType(component, viewIndex);
this.className = "_View_" + component.type.name + viewIndex;
this.className = getViewClassName(component, viewIndex);
this.classType = o.importType(new CompileIdentifierMetadata({ name: this.className }));
this.viewFactory = o.variable(getViewFactoryName(component, viewIndex));
this.classExpr = o.variable(this.className);
if (this.viewType === ViewType.COMPONENT || this.viewType === ViewType.HOST) {

@@ -89,7 +88,7 @@ this.componentView = this;

if (this.viewType === ViewType.COMPONENT) {
var directiveInstance = o.THIS_EXPR.prop('context');
var directiveInstance_1 = o.THIS_EXPR.prop('context');
this.component.viewQueries.forEach(function (queryMeta, queryIndex) {
var propName = "_viewQuery_" + queryMeta.selectors[0].name + "_" + queryIndex;
var queryList = createQueryList(queryMeta, directiveInstance, propName, _this);
var query = new CompileQuery(queryMeta, queryList, directiveInstance, _this);
var queryList = createQueryList(queryMeta, directiveInstance_1, propName, _this);
var query = new CompileQuery(queryMeta, queryList, directiveInstance_1, _this);
addQueryToTokenMap(viewQueries, query);

@@ -126,4 +125,4 @@ });

var _this = this;
MapWrapper.values(this.viewQueries)
.forEach(function (queries) { return queries.forEach(function (query) { return query.afterChildren(_this.createMethod, _this.updateViewQueriesMethod); }); });
Array.from(this.viewQueries.values())
.forEach(function (queries) { return queries.forEach(function (q) { return q.afterChildren(_this.createMethod, _this.updateViewQueriesMethod); }); });
};

@@ -136,9 +135,7 @@ return CompileView;

}
else if (component.type.isHost) {
if (component.type.isHost) {
return ViewType.HOST;
}
else {
return ViewType.COMPONENT;
}
return ViewType.COMPONENT;
}
//# sourceMappingURL=compile_view.js.map

@@ -25,4 +25,5 @@ /**

static viewUtils: o.ReadVarExpr;
static parentInjector: o.ReadVarExpr;
static declarationEl: o.ReadVarExpr;
static parentView: o.ReadVarExpr;
static parentIndex: o.ReadVarExpr;
static parentElement: o.ReadVarExpr;
}

@@ -29,0 +30,0 @@ export declare class ViewProperties {

@@ -47,4 +47,5 @@ /**

ViewConstructorVars.viewUtils = o.variable('viewUtils');
ViewConstructorVars.parentInjector = o.variable('parentInjector');
ViewConstructorVars.declarationEl = o.variable('declarationEl');
ViewConstructorVars.parentView = o.variable('parentView');
ViewConstructorVars.parentIndex = o.variable('parentIndex');
ViewConstructorVars.parentElement = o.variable('parentElement');
return ViewConstructorVars;

@@ -51,0 +52,0 @@ }());

@@ -9,3 +9,3 @@ /**

import { CompileIdentifierMetadata } from '../compile_metadata';
export declare class ViewFactoryDependency {
export declare class ViewClassDependency {
comp: CompileIdentifierMetadata;

@@ -12,0 +12,0 @@ placeholder: CompileIdentifierMetadata;

@@ -8,8 +8,8 @@ /**

*/
export var ViewFactoryDependency = (function () {
function ViewFactoryDependency(comp, placeholder) {
export var ViewClassDependency = (function () {
function ViewClassDependency(comp, placeholder) {
this.comp = comp;
this.placeholder = placeholder;
}
return ViewFactoryDependency;
return ViewClassDependency;
}());

@@ -16,0 +16,0 @@ export var ComponentFactoryDependency = (function () {

@@ -11,3 +11,2 @@ /**

import { DirectiveWrapperExpressions } from '../directive_wrapper_compiler';
import { MapWrapper } from '../facade/collection';
import { Identifiers, resolveIdentifier } from '../identifiers';

@@ -56,3 +55,3 @@ import * as o from '../output/output_ast';

function subscribeToDirectiveEvents(usedEvents, directives, compileElement) {
var usedEventNames = MapWrapper.keys(usedEvents);
var usedEventNames = Array.from(usedEvents.keys());
directives.forEach(function (dirAst) {

@@ -65,3 +64,3 @@ var dirWrapper = compileElement.directiveWrapperInstance.get(dirAst.directive.type.reference);

var hasComponentHostListener = directives.some(function (dirAst) { return dirAst.hostEvents.some(function (event) { return dirAst.directive.isComponent; }); });
var markPathToRootStart = hasComponentHostListener ? compileElement.appElement.prop('componentView') : o.THIS_EXPR;
var markPathToRootStart = hasComponentHostListener ? compileElement.compViewExpr : o.THIS_EXPR;
var handleEventStmts = new CompileMethod(compileElement.view);

@@ -68,0 +67,0 @@ handleEventStmts.resetDebugInfo(compileElement.nodeIndex, compileElement.sourceAst);

@@ -8,3 +8,3 @@ /**

*/
import { CompileDirectiveMetadata, CompilePipeMetadata } from '../compile_metadata';
import { CompileDirectiveSummary, CompilePipeSummary } from '../compile_metadata';
import * as o from '../output/output_ast';

@@ -14,6 +14,6 @@ import { DirectiveAst, ProviderAst } from '../template_parser/template_ast';

import { CompileView } from './compile_view';
export declare function bindDirectiveAfterContentLifecycleCallbacks(directiveMeta: CompileDirectiveMetadata, directiveInstance: o.Expression, compileElement: CompileElement): void;
export declare function bindDirectiveAfterViewLifecycleCallbacks(directiveMeta: CompileDirectiveMetadata, directiveInstance: o.Expression, compileElement: CompileElement): void;
export declare function bindDirectiveAfterContentLifecycleCallbacks(directiveMeta: CompileDirectiveSummary, directiveInstance: o.Expression, compileElement: CompileElement): void;
export declare function bindDirectiveAfterViewLifecycleCallbacks(directiveMeta: CompileDirectiveSummary, directiveInstance: o.Expression, compileElement: CompileElement): void;
export declare function bindDirectiveWrapperLifecycleCallbacks(dir: DirectiveAst, directiveWrapperIntance: o.Expression, compileElement: CompileElement): void;
export declare function bindInjectableDestroyLifecycleCallbacks(provider: ProviderAst, providerInstance: o.Expression, compileElement: CompileElement): void;
export declare function bindPipeDestroyLifecycleCallbacks(pipeMeta: CompilePipeMetadata, pipeInstance: o.Expression, view: CompileView): void;
export declare function bindPipeDestroyLifecycleCallbacks(pipeMeta: CompilePipeSummary, pipeInstance: o.Expression, view: CompileView): void;

@@ -41,3 +41,3 @@ /**

compileElement.view.destroyMethod.addStmts(DirectiveWrapperExpressions.ngOnDestroy(dir.directive, directiveWrapperIntance));
compileElement.view.detachMethod.addStmts(DirectiveWrapperExpressions.ngOnDetach(dir.hostProperties, directiveWrapperIntance, o.THIS_EXPR, compileElement.component ? compileElement.appElement.prop('componentView') : o.THIS_EXPR, compileElement.renderNode));
compileElement.view.detachMethod.addStmts(DirectiveWrapperExpressions.ngOnDetach(dir.hostProperties, directiveWrapperIntance, o.THIS_EXPR, compileElement.compViewExpr || o.THIS_EXPR, compileElement.renderNode));
}

@@ -44,0 +44,0 @@ export function bindInjectableDestroyLifecycleCallbacks(provider, providerInstance, compileElement) {

@@ -78,3 +78,3 @@ /**

});
compileElement.view.detectChangesRenderPropertiesMethod.addStmts(DirectiveWrapperExpressions.checkHost(directiveAst.hostProperties, directiveWrapperInstance, o.THIS_EXPR, compileElement.component ? compileElement.appElement.prop('componentView') : o.THIS_EXPR, compileElement.renderNode, DetectChangesVars.throwOnChange, runtimeSecurityCtxExprs));
compileElement.view.detectChangesRenderPropertiesMethod.addStmts(DirectiveWrapperExpressions.checkHost(directiveAst.hostProperties, directiveWrapperInstance, o.THIS_EXPR, compileElement.compViewExpr || o.THIS_EXPR, compileElement.renderNode, DetectChangesVars.throwOnChange, runtimeSecurityCtxExprs));
}

@@ -105,5 +105,3 @@ export function bindDirectiveInputs(directiveAst, directiveWrapperInstance, dirIndex, compileElement) {

var directiveDetectChangesStmt = isOnPushComp ?
new o.IfStmt(directiveDetectChangesExpr, [compileElement.appElement.prop('componentView')
.callMethod('markAsCheckOnce', [])
.toStmt()]) :
new o.IfStmt(directiveDetectChangesExpr, [compileElement.compViewExpr.callMethod('markAsCheckOnce', []).toStmt()]) :
directiveDetectChangesExpr.toStmt();

@@ -110,0 +108,0 @@ detectChangesInInputsMethod.addStmt(directiveDetectChangesStmt);

@@ -8,8 +8,8 @@ /**

*/
import { CompileDirectiveMetadata, CompileTokenMetadata } from '../compile_metadata';
import { CompileDirectiveMetadata, CompileDirectiveSummary, CompileTokenMetadata } from '../compile_metadata';
import * as o from '../output/output_ast';
import { CompileView } from './compile_view';
export declare function getPropertyInView(property: o.Expression, callingView: CompileView, definedView: CompileView): o.Expression;
export declare function injectFromViewParentInjector(token: CompileTokenMetadata, optional: boolean): o.Expression;
export declare function getViewFactoryName(component: CompileDirectiveMetadata, embeddedTemplateIndex: number): string;
export declare function injectFromViewParentInjector(view: CompileView, token: CompileTokenMetadata, optional: boolean): o.Expression;
export declare function getViewClassName(component: CompileDirectiveSummary | CompileDirectiveMetadata, embeddedTemplateIndex: number): string;
export declare function getHandleEventMethodName(elementIndex: number): string;

@@ -16,2 +16,3 @@ /**

import * as o from '../output/output_ast';
import { ViewType } from '../private_import_core';
export function getPropertyInView(property, callingView, definedView) {

@@ -26,3 +27,3 @@ if (callingView === definedView) {

currView = currView.declarationElement.view;
viewProp = viewProp.prop('parent');
viewProp = viewProp.prop('parentView');
}

@@ -60,11 +61,18 @@ if (currView !== definedView) {

}(o.ExpressionTransformer));
export function injectFromViewParentInjector(token, optional) {
var args = [createDiTokenExpression(token)];
export function injectFromViewParentInjector(view, token, optional) {
var viewExpr;
if (view.viewType === ViewType.HOST) {
viewExpr = o.THIS_EXPR;
}
else {
viewExpr = o.THIS_EXPR.prop('parentView');
}
var args = [createDiTokenExpression(token), o.THIS_EXPR.prop('parentIndex')];
if (optional) {
args.push(o.NULL_EXPR);
}
return o.THIS_EXPR.prop('parentInjector').callMethod('get', args);
return viewExpr.callMethod('injectorGet', args);
}
export function getViewFactoryName(component, embeddedTemplateIndex) {
return "viewFactory_" + component.type.name + embeddedTemplateIndex;
export function getViewClassName(component, embeddedTemplateIndex) {
return "View_" + component.type.name + embeddedTemplateIndex;
}

@@ -71,0 +79,0 @@ export function getHandleEventMethodName(elementIndex) {

@@ -1,1 +0,1 @@

{"__symbolic":"module","version":1,"metadata":{"getViewFactoryName":{"__symbolic":"function","parameters":["component","embeddedTemplateIndex"],"value":{"__symbolic":"error","message":"Expression form not supported","line":68,"character":9}},"getHandleEventMethodName":{"__symbolic":"function","parameters":["elementIndex"],"value":{"__symbolic":"error","message":"Expression form not supported","line":72,"character":9}}}}
{"__symbolic":"module","version":1,"metadata":{"getViewClassName":{"__symbolic":"function","parameters":["component","embeddedTemplateIndex"],"value":{"__symbolic":"error","message":"Expression form not supported","line":76,"character":9}},"getHandleEventMethodName":{"__symbolic":"function","parameters":["elementIndex"],"value":{"__symbolic":"error","message":"Expression form not supported","line":80,"character":9}}}}

@@ -39,3 +39,2 @@ /**

ast.directives.forEach(function (directiveAst, dirIndex) {
var directiveInstance = compileElement.instances.get(directiveAst.directive.type.reference);
var directiveWrapperInstance = compileElement.directiveWrapperInstance.get(directiveAst.directive.type.reference);

@@ -42,0 +41,0 @@ bindDirectiveInputs(directiveAst, directiveWrapperInstance, dirIndex, compileElement);

import * as o from '../output/output_ast';
import { TemplateAst } from '../template_parser/template_ast';
import { CompileView } from './compile_view';
import { ComponentFactoryDependency, DirectiveWrapperDependency, ViewFactoryDependency } from './deps';
export declare function buildView(view: CompileView, template: TemplateAst[], targetDependencies: Array<ViewFactoryDependency | ComponentFactoryDependency | DirectiveWrapperDependency>): number;
import { ComponentFactoryDependency, DirectiveWrapperDependency, ViewClassDependency } from './deps';
export declare function buildView(view: CompileView, template: TemplateAst[], targetDependencies: Array<ViewClassDependency | ComponentFactoryDependency | DirectiveWrapperDependency>): number;
export declare function finishView(view: CompileView, targetStatements: o.Statement[]): void;

@@ -21,4 +21,4 @@ /**

import { ChangeDetectorStatusEnum, DetectChangesVars, InjectMethodVars, ViewConstructorVars, ViewEncapsulationEnum, ViewProperties, ViewTypeEnum } from './constants';
import { ViewFactoryDependency } from './deps';
import { getViewFactoryName } from './util';
import { ViewClassDependency } from './deps';
import { getViewClassName } from './util';
var IMPLICIT_TEMPLATE_VAR = '\$implicit';

@@ -59,11 +59,10 @@ var CLASS_ATTR = 'class';

var ngContentIndex = projectedNode.sourceAst.ngContentIndex;
var vcAppEl = (node instanceof CompileElement && node.hasViewContainer) ? node.appElement : null;
var viewContainer = (node instanceof CompileElement && node.hasViewContainer) ? node.viewContainer : null;
if (this._isRootNode(parent)) {
// store appElement as root node only for ViewContainers
if (this.view.viewType !== ViewType.COMPONENT) {
this.view.rootNodes.push(new CompileViewRootNode(vcAppEl ? CompileViewRootNodeType.ViewContainer : CompileViewRootNodeType.Node, vcAppEl || node.renderNode));
this.view.rootNodes.push(new CompileViewRootNode(viewContainer ? CompileViewRootNodeType.ViewContainer : CompileViewRootNodeType.Node, viewContainer || node.renderNode));
}
}
else if (isPresent(parent.component) && isPresent(ngContentIndex)) {
parent.addContentNode(ngContentIndex, new CompileViewRootNode(vcAppEl ? CompileViewRootNodeType.ViewContainer : CompileViewRootNodeType.Node, vcAppEl || node.renderNode));
parent.addContentNode(ngContentIndex, new CompileViewRootNode(viewContainer ? CompileViewRootNodeType.ViewContainer : CompileViewRootNodeType.Node, viewContainer || node.renderNode));
}

@@ -130,7 +129,3 @@ };

if (parentRenderNode !== o.NULL_EXPR) {
this.view.createMethod.addStmt(ViewProperties.renderer
.callMethod('projectNodes', [
parentRenderNode,
o.THIS_EXPR.callMethod('projectedNodes', [o.literal(ast.index)])
])
this.view.createMethod.addStmt(o.THIS_EXPR.callMethod('projectNodes', [parentRenderNode, o.literal(ast.index)])
.toStmt());

@@ -186,4 +181,4 @@ }

if (isPresent(component)) {
var nestedComponentIdentifier = new CompileIdentifierMetadata({ name: getViewFactoryName(component, 0) });
this.targetDependencies.push(new ViewFactoryDependency(component.type, nestedComponentIdentifier));
var nestedComponentIdentifier = new CompileIdentifierMetadata({ name: getViewClassName(component, 0) });
this.targetDependencies.push(new ViewClassDependency(component.type, nestedComponentIdentifier));
compViewExpr = o.THIS_EXPR.prop("compView_" + nodeIndex); // fix highlighting: `

@@ -194,4 +189,4 @@ this.view.fields.push(new o.ClassField(compViewExpr.name, o.importType(resolveIdentifier(Identifiers.AppView), [o.importType(component.type)])));

this.view.createMethod.addStmt(compViewExpr
.set(o.importExpr(nestedComponentIdentifier).callFn([
ViewProperties.viewUtils, compileElement.injector, compileElement.appElement
.set(o.importExpr(nestedComponentIdentifier).instantiate([
ViewProperties.viewUtils, o.THIS_EXPR, o.literal(nodeIndex), renderNode
]))

@@ -205,3 +200,3 @@ .toStmt());

if (isPresent(compViewExpr)) {
this.view.createMethod.addStmt(compViewExpr.callMethod('create', [compileElement.getComponent(), o.NULL_EXPR]).toStmt());
this.view.createMethod.addStmt(compViewExpr.callMethod('create', [compileElement.getComponent()]).toStmt());
}

@@ -315,3 +310,18 @@ return null;

if (view.viewIndex === 0) {
targetStatements.push(renderCompTypeVar.set(o.NULL_EXPR)
var templateUrlInfo = void 0;
if (view.component.template.templateUrl == view.component.type.moduleUrl) {
templateUrlInfo =
view.component.type.moduleUrl + " class " + view.component.type.name + " - inline template";
}
else {
templateUrlInfo = view.component.template.templateUrl;
}
targetStatements.push(renderCompTypeVar
.set(o.importExpr(resolveIdentifier(Identifiers.createRenderComponentType)).callFn([
view.genConfig.genDebugInfo ? o.literal(templateUrlInfo) : o.literal(''),
o.literal(view.component.template.ngContentSelectors.length),
ViewEncapsulationEnum.fromValue(view.component.template.encapsulation),
view.styles,
o.literalMap(view.animations.map(function (entry) { return [entry.name, entry.fnExp]; })),
]))
.toDeclStmt(o.importType(resolveIdentifier(Identifiers.RenderComponentType))));

@@ -321,3 +331,2 @@ }

targetStatements.push(viewClass);
targetStatements.push(createViewFactory(view, viewClass, renderCompTypeVar));
}

@@ -349,9 +358,10 @@ function createStaticNodeDebugInfo(node) {

new o.FnParam(ViewConstructorVars.viewUtils.name, o.importType(resolveIdentifier(Identifiers.ViewUtils))),
new o.FnParam(ViewConstructorVars.parentInjector.name, o.importType(resolveIdentifier(Identifiers.Injector))),
new o.FnParam(ViewConstructorVars.declarationEl.name, o.importType(resolveIdentifier(Identifiers.AppElement)))
new o.FnParam(ViewConstructorVars.parentView.name, o.importType(resolveIdentifier(Identifiers.AppView), [o.DYNAMIC_TYPE])),
new o.FnParam(ViewConstructorVars.parentIndex.name, o.NUMBER_TYPE),
new o.FnParam(ViewConstructorVars.parentElement.name, o.DYNAMIC_TYPE)
];
var superConstructorArgs = [
o.variable(view.className), renderCompTypeVar, ViewTypeEnum.fromValue(view.viewType),
ViewConstructorVars.viewUtils, ViewConstructorVars.parentInjector,
ViewConstructorVars.declarationEl,
ViewConstructorVars.viewUtils, ViewConstructorVars.parentView, ViewConstructorVars.parentIndex,
ViewConstructorVars.parentElement,
ChangeDetectorStatusEnum.fromValue(getChangeDetectionMode(view))

@@ -362,4 +372,8 @@ ];

}
if (view.viewType === ViewType.EMBEDDED) {
viewConstructorArgs.push(new o.FnParam('declaredViewContainer', o.importType(resolveIdentifier(Identifiers.ViewContainer))));
superConstructorArgs.push(o.variable('declaredViewContainer'));
}
var viewMethods = [
new o.ClassMethod('createInternal', [new o.FnParam(rootSelectorVar.name, o.STRING_TYPE)], generateCreateMethod(view), o.importType(resolveIdentifier(Identifiers.AppElement))),
new o.ClassMethod('createInternal', [new o.FnParam(rootSelectorVar.name, o.STRING_TYPE)], generateCreateMethod(view), o.importType(resolveIdentifier(Identifiers.ComponentRef), [o.DYNAMIC_TYPE])),
new o.ClassMethod('injectorGetInternal', [

@@ -375,3 +389,4 @@ new o.FnParam(InjectMethodVars.token.name, o.DYNAMIC_TYPE),

new o.ClassMethod('detachInternal', [], view.detachMethod.finish()),
generateVisitRootNodesMethod(view), generateVisitProjectableNodesMethod(view)
generateVisitRootNodesMethod(view), generateVisitProjectableNodesMethod(view),
generateCreateEmbeddedViewsMethod(view)
].filter(function (method) { return method.body.length > 0; });

@@ -390,3 +405,5 @@ var superClass = view.genConfig.genDebugInfo ? Identifiers.DebugAppView : Identifiers.AppView;

var stmts = [];
view.viewContainerAppElements.forEach(function (appElement) { stmts.push(appElement.callMethod('destroyNestedViews', []).toStmt()); });
view.viewContainers.forEach(function (viewContainer) {
stmts.push(viewContainer.callMethod('destroyNestedViews', []).toStmt());
});
view.viewChildren.forEach(function (viewChild) { stmts.push(viewChild.callMethod('destroy', []).toStmt()); });

@@ -396,40 +413,2 @@ stmts.push.apply(stmts, view.destroyMethod.finish());

}
function createViewFactory(view, viewClass, renderCompTypeVar) {
var viewFactoryArgs = [
new o.FnParam(ViewConstructorVars.viewUtils.name, o.importType(resolveIdentifier(Identifiers.ViewUtils))),
new o.FnParam(ViewConstructorVars.parentInjector.name, o.importType(resolveIdentifier(Identifiers.Injector))),
new o.FnParam(ViewConstructorVars.declarationEl.name, o.importType(resolveIdentifier(Identifiers.AppElement)))
];
var initRenderCompTypeStmts = [];
var templateUrlInfo;
if (view.component.template.templateUrl == view.component.type.moduleUrl) {
templateUrlInfo =
view.component.type.moduleUrl + " class " + view.component.type.name + " - inline template";
}
else {
templateUrlInfo = view.component.template.templateUrl;
}
if (view.viewIndex === 0) {
var animationsExpr = o.literalMap(view.animations.map(function (entry) { return [entry.name, entry.fnExp]; }));
initRenderCompTypeStmts = [
new o.IfStmt(renderCompTypeVar.identical(o.NULL_EXPR), [
renderCompTypeVar
.set(ViewConstructorVars.viewUtils.callMethod('createRenderComponentType', [
view.genConfig.genDebugInfo ? o.literal(templateUrlInfo) : o.literal(''),
o.literal(view.component.template.ngContentSelectors.length),
ViewEncapsulationEnum.fromValue(view.component.template.encapsulation),
view.styles,
animationsExpr,
]))
.toStmt(),
]),
];
}
return o
.fn(viewFactoryArgs, initRenderCompTypeStmts.concat([
new o.ReturnStatement(o.variable(viewClass.name)
.instantiate(viewClass.constructorMethod.params.map(function (param) { return o.variable(param.name); }))),
]), o.importType(resolveIdentifier(Identifiers.AppView), [getContextType(view)]))
.toDeclStmt(view.viewFactory.name, [o.StmtModifier.Final]);
}
function generateCreateMethod(view) {

@@ -439,3 +418,4 @@ var parentRenderNodeExpr = o.NULL_EXPR;

if (view.viewType === ViewType.COMPONENT) {
parentRenderNodeExpr = ViewProperties.renderer.callMethod('createViewRoot', [o.THIS_EXPR.prop('declarationAppElement').prop('nativeElement')]);
parentRenderNodeExpr =
ViewProperties.renderer.callMethod('createViewRoot', [o.THIS_EXPR.prop('parentElement')]);
parentRenderNodeStmts =

@@ -447,3 +427,7 @@ [parentRenderNodeVar.set(parentRenderNodeExpr)

if (view.viewType === ViewType.HOST) {
resultExpr = view.nodes[0].appElement;
var hostEl = view.nodes[0];
resultExpr =
o.importExpr(resolveIdentifier(Identifiers.ComponentRef_), [o.DYNAMIC_TYPE]).instantiate([
o.literal(hostEl.nodeIndex), o.THIS_EXPR, hostEl.renderNode, hostEl.getComponent()
]);
}

@@ -453,2 +437,5 @@ else {

}
var allNodesExpr = ViewProperties.renderer.cast(o.DYNAMIC_TYPE)
.prop('directRenderer')
.conditional(o.NULL_EXPR, o.literalArr(view.nodes.map(function (node) { return node.renderNode; })));
return parentRenderNodeStmts.concat(view.createMethod.finish(), [

@@ -458,3 +445,3 @@ o.THIS_EXPR

view.lastRenderNode,
o.literalArr(view.nodes.map(function (node) { return node.renderNode; })),
allNodesExpr,
view.disposables.length ? o.literalArr(view.disposables) : o.NULL_EXPR,

@@ -472,3 +459,4 @@ ])

view.detectChangesRenderPropertiesMethod.isEmpty() &&
view.updateViewQueriesMethod.isEmpty() && view.afterViewLifecycleCallbacksMethod.isEmpty()) {
view.updateViewQueriesMethod.isEmpty() && view.afterViewLifecycleCallbacksMethod.isEmpty() &&
view.viewContainers.length === 0 && view.viewChildren.length === 0) {
return stmts;

@@ -478,4 +466,4 @@ }

stmts.push.apply(stmts, view.detectChangesInInputsMethod.finish());
view.viewContainerAppElements.forEach(function (appElement) {
stmts.push(appElement.callMethod('detectChangesInNestedViews', [DetectChangesVars.throwOnChange])
view.viewContainers.forEach(function (viewContainer) {
stmts.push(viewContainer.callMethod('detectChangesInNestedViews', [DetectChangesVars.throwOnChange])
.toStmt());

@@ -578,2 +566,21 @@ });

}
function generateCreateEmbeddedViewsMethod(view) {
var nodeIndexVar = o.variable('nodeIndex');
var stmts = [];
view.nodes.forEach(function (node) {
if (node instanceof CompileElement) {
if (node.embeddedView) {
var parentNodeIndex = node.isRootElement() ? null : node.parent.nodeIndex;
stmts.push(new o.IfStmt(nodeIndexVar.equals(o.literal(node.nodeIndex)), [new o.ReturnStatement(node.embeddedView.classExpr.instantiate([
ViewProperties.viewUtils, o.THIS_EXPR, o.literal(node.nodeIndex), node.renderNode,
node.viewContainer
]))]));
}
}
});
if (stmts.length > 0) {
stmts.push(new o.ReturnStatement(o.NULL_EXPR));
}
return new o.ClassMethod('createEmbeddedViewInternal', [new o.FnParam(nodeIndexVar.name, o.NUMBER_TYPE)], stmts, o.importType(resolveIdentifier(Identifiers.AppView), [o.DYNAMIC_TYPE]));
}
//# sourceMappingURL=view_builder.js.map
import { AnimationEntryCompileResult } from '../animation/animation_compiler';
import { CompileDirectiveMetadata, CompilePipeMetadata } from '../compile_metadata';
import { CompileDirectiveMetadata, CompilePipeSummary } from '../compile_metadata';
import { CompilerConfig } from '../config';

@@ -7,9 +7,9 @@ import * as o from '../output/output_ast';

import { TemplateAst } from '../template_parser/template_ast';
import { ComponentFactoryDependency, DirectiveWrapperDependency, ViewFactoryDependency } from './deps';
export { ComponentFactoryDependency, DirectiveWrapperDependency, ViewFactoryDependency } from './deps';
import { ComponentFactoryDependency, DirectiveWrapperDependency, ViewClassDependency } from './deps';
export { ComponentFactoryDependency, DirectiveWrapperDependency, ViewClassDependency } from './deps';
export declare class ViewCompileResult {
statements: o.Statement[];
viewFactoryVar: string;
dependencies: Array<ViewFactoryDependency | ComponentFactoryDependency | DirectiveWrapperDependency>;
constructor(statements: o.Statement[], viewFactoryVar: string, dependencies: Array<ViewFactoryDependency | ComponentFactoryDependency | DirectiveWrapperDependency>);
viewClassVar: string;
dependencies: Array<ViewClassDependency | ComponentFactoryDependency | DirectiveWrapperDependency>;
constructor(statements: o.Statement[], viewClassVar: string, dependencies: Array<ViewClassDependency | ComponentFactoryDependency | DirectiveWrapperDependency>);
}

@@ -20,3 +20,3 @@ export declare class ViewCompiler {

constructor(_genConfig: CompilerConfig, _schemaRegistry: ElementSchemaRegistry);
compileComponent(component: CompileDirectiveMetadata, template: TemplateAst[], styles: o.Expression, pipes: CompilePipeMetadata[], compiledAnimations: AnimationEntryCompileResult[]): ViewCompileResult;
compileComponent(component: CompileDirectiveMetadata, template: TemplateAst[], styles: o.Expression, pipes: CompilePipeSummary[], compiledAnimations: AnimationEntryCompileResult[]): ViewCompileResult;
}

@@ -15,7 +15,7 @@ /**

import { buildView, finishView } from './view_builder';
export { ComponentFactoryDependency, DirectiveWrapperDependency, ViewFactoryDependency } from './deps';
export { ComponentFactoryDependency, DirectiveWrapperDependency, ViewClassDependency } from './deps';
export var ViewCompileResult = (function () {
function ViewCompileResult(statements, viewFactoryVar, dependencies) {
function ViewCompileResult(statements, viewClassVar, dependencies) {
this.statements = statements;
this.viewFactoryVar = viewFactoryVar;
this.viewClassVar = viewClassVar;
this.dependencies = dependencies;

@@ -39,3 +39,3 @@ }

finishView(view, statements);
return new ViewCompileResult(statements, view.viewFactory.name, dependencies);
return new ViewCompileResult(statements, view.classExpr.name, dependencies);
};

@@ -42,0 +42,0 @@ ViewCompiler.decorators = [

@@ -1,1 +0,1 @@

{"__symbolic":"module","version":1,"metadata":{"ViewCompiler":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable"}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"../config","name":"CompilerConfig"},{"__symbolic":"reference","module":"../schema/element_schema_registry","name":"ElementSchemaRegistry"}]}],"compileComponent":[{"__symbolic":"method"}]}}},"exports":[{"from":"./deps","export":["ComponentFactoryDependency","DirectiveWrapperDependency","ViewFactoryDependency"]}]}
{"__symbolic":"module","version":1,"metadata":{"ViewCompiler":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable"}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"../config","name":"CompilerConfig"},{"__symbolic":"reference","module":"../schema/element_schema_registry","name":"ElementSchemaRegistry"}]}],"compileComponent":[{"__symbolic":"method"}]}}},"exports":[{"from":"./deps","export":["ComponentFactoryDependency","DirectiveWrapperDependency","ViewClassDependency"]}]}

@@ -41,3 +41,2 @@

static parseIntAutoRadix(text: string): number;
static parseInt(text: string, radix: number): number;
static isNumeric(value: any): boolean;

@@ -44,0 +43,0 @@ }

@@ -54,3 +54,3 @@ /**

}
if (token === undefined || token === null) {
if (token == null) {
return '' + token;

@@ -78,21 +78,2 @@ }

};
NumberWrapper.parseInt = function (text, radix) {
if (radix == 10) {
if (/^(\-|\+)?[0-9]+$/.test(text)) {
return parseInt(text, radix);
}
}
else if (radix == 16) {
if (/^(\-|\+)?[0-9ABCDEFabcdef]+$/.test(text)) {
return parseInt(text, radix);
}
}
else {
var result = parseInt(text, radix);
if (!isNaN(result)) {
return result;
}
}
throw new Error('Invalid integer literal when parsing ' + text + ' in base ' + radix);
};
NumberWrapper.isNumeric = function (value) { return !isNaN(value - parseFloat(value)); };

@@ -118,8 +99,8 @@ return NumberWrapper;

while (parts.length > 1) {
var name = parts.shift();
if (obj.hasOwnProperty(name) && isPresent(obj[name])) {
obj = obj[name];
var name_1 = parts.shift();
if (obj.hasOwnProperty(name_1) && obj[name_1] != null) {
obj = obj[name_1];
}
else {
obj = obj[name] = {};
obj = obj[name_1] = {};
}

@@ -126,0 +107,0 @@ }

@@ -1,1 +0,1 @@

{"__symbolic":"module","version":1,"metadata":{"getTypeNameForDebugging":{"__symbolic":"function","parameters":["type"],"value":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"index","expression":{"__symbolic":"reference","name":"type"},"index":"name"},"right":{"__symbolic":"error","message":"Expression form not supported","line":60,"character":25}}},"isPresent":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"binop","operator":"!=","left":{"__symbolic":"reference","name":"obj"},"right":null}},"isBlank":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"binop","operator":"==","left":{"__symbolic":"reference","name":"obj"},"right":null}},"isStrictStringMap":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":80,"character":9},"right":"object"},"right":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"obj"},"right":null}},"right":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Object"},"member":"getPrototypeOf"},"arguments":[{"__symbolic":"reference","name":"obj"}]},"right":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Object"},"member":"getPrototypeOf"},"arguments":[{}]}}}},"isDate":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"instanceof","left":{"__symbolic":"reference","name":"obj"},"right":{"__symbolic":"reference","name":"Date"}},"right":{"__symbolic":"pre","operator":"!","operand":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"isNaN"},"arguments":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"obj"},"member":"valueOf"}}]}}}},"looseIdentical":{"__symbolic":"function","parameters":["a","b"],"value":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"reference","name":"a"},"right":{"__symbolic":"reference","name":"b"}},"right":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":140,"character":20},"right":"number"},"right":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":140,"character":45},"right":"number"}},"right":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"isNaN"},"arguments":[{"__symbolic":"reference","name":"a"}]}},"right":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"isNaN"},"arguments":[{"__symbolic":"reference","name":"b"}]}}}},"isJsObject":{"__symbolic":"function","parameters":["o"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"o"},"right":null},"right":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":144,"character":24},"right":"function"},"right":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":144,"character":51},"right":"object"}}}},"isPrimitive":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"pre","operator":"!","operand":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"isJsObject"},"arguments":[{"__symbolic":"reference","name":"obj"}]}}},"escapeRegExp":{"__symbolic":"function","parameters":["s"],"value":{"__symbolic":"error","message":"Expression form not supported","line":199,"character":19}}}}
{"__symbolic":"module","version":1,"metadata":{"getTypeNameForDebugging":{"__symbolic":"function","parameters":["type"],"value":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"index","expression":{"__symbolic":"reference","name":"type"},"index":"name"},"right":{"__symbolic":"error","message":"Expression form not supported","line":60,"character":25}}},"isPresent":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"binop","operator":"!=","left":{"__symbolic":"reference","name":"obj"},"right":null}},"isBlank":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"binop","operator":"==","left":{"__symbolic":"reference","name":"obj"},"right":null}},"isStrictStringMap":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":80,"character":9},"right":"object"},"right":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"obj"},"right":null}},"right":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Object"},"member":"getPrototypeOf"},"arguments":[{"__symbolic":"reference","name":"obj"}]},"right":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Object"},"member":"getPrototypeOf"},"arguments":[{}]}}}},"isDate":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"instanceof","left":{"__symbolic":"reference","name":"obj"},"right":{"__symbolic":"reference","name":"Date"}},"right":{"__symbolic":"pre","operator":"!","operand":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"isNaN"},"arguments":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"obj"},"member":"valueOf"}}]}}}},"looseIdentical":{"__symbolic":"function","parameters":["a","b"],"value":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"reference","name":"a"},"right":{"__symbolic":"reference","name":"b"}},"right":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":123,"character":20},"right":"number"},"right":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":123,"character":45},"right":"number"}},"right":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"isNaN"},"arguments":[{"__symbolic":"reference","name":"a"}]}},"right":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"isNaN"},"arguments":[{"__symbolic":"reference","name":"b"}]}}}},"isJsObject":{"__symbolic":"function","parameters":["o"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"o"},"right":null},"right":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":127,"character":24},"right":"function"},"right":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":127,"character":51},"right":"object"}}}},"isPrimitive":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"pre","operator":"!","operand":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"isJsObject"},"arguments":[{"__symbolic":"reference","name":"obj"}]}}},"escapeRegExp":{"__symbolic":"function","parameters":["s"],"value":{"__symbolic":"error","message":"Expression form not supported","line":182,"character":19}}}}

@@ -43,2 +43,7 @@ /**

};
normalizeAnimationStyleProperty(propName: string): string;
normalizeAnimationStyleValue(camelCaseProp: string, userProvidedProp: string, val: string | number): {
error: string;
value: string;
};
}

@@ -50,4 +50,8 @@ /**

};
MockSchemaRegistry.prototype.normalizeAnimationStyleProperty = function (propName) { return propName; };
MockSchemaRegistry.prototype.normalizeAnimationStyleValue = function (camelCaseProp, userProvidedProp, val) {
return { error: null, value: val.toString() };
};
return MockSchemaRegistry;
}());
//# sourceMappingURL=schema_registry_mock.js.map

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc