refactor(view_compiler): codegen DI and Queries

BREAKING CHANGE:
- Renderer:
  * renderComponent method is removed form `Renderer`, only present on `RootRenderer`
  * Renderer.setDebugInfo is removed. Renderer.createElement / createText / createTemplateAnchor
    now take the DebugInfo directly.
- Query semantics:
  * Queries don't work with dynamically loaded components.
  * e.g. for router-outlet: loaded components can't be queries via @ViewQuery,
    but router-outlet emits an event `activate` now that emits the activated component
- Exception classes and the context inside changed (renamed fields)
- DebugElement.attributes is an Object and not a Map in JS any more
- ChangeDetectorGenConfig was renamed into CompilerConfig
- AppViewManager.createEmbeddedViewInContainer / AppViewManager.createHostViewInContainer
  are removed, use the methods in ViewContainerRef instead
- Change detection order changed:
  * 1. dirty check component inputs
  * 2. dirty check content children
  * 3. update render nodes

Closes #6301
Closes #6567
This commit is contained in:
Tobias Bosch
2016-01-06 14:13:44 -08:00
parent 45f09ba686
commit 2b34c88b69
312 changed files with 14271 additions and 16566 deletions

View File

@ -29,13 +29,8 @@ const CORE = [
'AfterViewInit',
'AfterViewInit.ngAfterViewInit():any',
'AppViewManager',
'AppViewManager.attachViewInContainer(viewContainerLocation:ElementRef, index:number, viewRef:EmbeddedViewRef):EmbeddedViewRef',
'AppViewManager.createEmbeddedViewInContainer(viewContainerLocation:ElementRef, index:number, templateRef:TemplateRef):EmbeddedViewRef',
'AppViewManager.createHostViewInContainer(viewContainerLocation:ElementRef, index:number, hostViewFactoryRef:HostViewFactoryRef, dynamicallyCreatedProviders:ResolvedProvider[], projectableNodes:any[][]):HostViewRef',
'AppViewManager.createRootHostView(hostViewFactoryRef:HostViewFactoryRef, overrideSelector:string, injector:Injector, projectableNodes:any[][]):HostViewRef',
'AppViewManager.destroyRootHostView(hostViewRef:HostViewRef):any',
'AppViewManager.destroyViewInContainer(viewContainerLocation:ElementRef, index:number):any',
'AppViewManager.detachViewInContainer(viewContainerLocation:ElementRef, index:number):EmbeddedViewRef',
'AppViewManager.getComponent(hostLocation:ElementRef):any',
'AppViewManager.getHostElement(hostViewRef:HostViewRef):ElementRef',
'AppViewManager.getNamedElementInComponentView(hostLocation:ElementRef, variableName:string):ElementRef',
@ -60,9 +55,6 @@ const CORE = [
'Binding.toClass:any',
'Binding.toFactory:any',
'Binding.toValue:any',
'ChangeDetectionError',
'ChangeDetectionError.constructor(exp:string, originalException:any, originalStack:any, context:any)',
'ChangeDetectionError.location:string',
'ChangeDetectionStrategy',
'ChangeDetectionStrategy.CheckAlways',
'ChangeDetectionStrategy.CheckOnce',
@ -123,31 +115,31 @@ const CORE = [
'CyclicDependencyError.constructor(injector:Injector, key:Key)',
'DebugNode',
'DebugNode.componentInstance:any',
'DebugNode.constructor(nativeNode:any, parent:DebugNode)',
'DebugNode.constructor(nativeNode:any, parent:DebugNode, _debugInfo:RenderDebugInfo)',
'DebugNode.getLocal(name:string):any',
'DebugNode.inject(token:any):any',
'DebugNode.injector:Injector',
'DebugNode.listeners:EventListener[]',
'DebugNode.locals:Map<string, any>',
'DebugNode.locals:{[key:string]:any}',
'DebugNode.nativeNode:any',
'DebugNode.parent:DebugElement',
'DebugNode.providerTokens:any[]',
'DebugNode.setDebugInfo(info:RenderDebugInfo):any',
'DebugNode.source:string',
'DebugElement',
'DebugElement.children:DebugElement[]',
'DebugElement.nativeElement:any',
'DebugElement.addChild(child:DebugNode):any',
'DebugElement.attributes:Map<string, any>',
'DebugElement.attributes:{[key:string]:string}',
'DebugElement.childNodes:DebugNode[]',
'DebugElement.constructor(nativeNode:any, parent:any)',
'DebugElement.constructor(nativeNode:any, parent:any, _debugInfo:RenderDebugInfo)',
'DebugElement.insertChildrenAfter(child:DebugNode, newChildren:DebugNode[]):any',
'DebugElement.name:string',
'DebugElement.properties:Map<string, any>',
'DebugElement.properties:{[key:string]:string}',
'DebugElement.query(predicate:Predicate<DebugElement>):DebugElement',
'DebugElement.queryAll(predicate:Predicate<DebugElement>):DebugElement[]',
'DebugElement.queryAllNodes(predicate:Predicate<DebugNode>):DebugNode[]',
'DebugElement.removeChild(child:DebugNode):any',
'DebugElement.triggerEventHandler(eventName:string, eventObj:Event):any',
'DebugElement.triggerEventHandler(eventName:string, eventObj:any):any',
'asNativeElements(debugEls:DebugElement[]):any',
'Dependency',
'Dependency.constructor(key:Key, optional:boolean, lowerBoundVisibility:any, upperBoundVisibility:any, properties:any[])',
@ -168,9 +160,6 @@ const CORE = [
'DirectiveMetadata.providers:any[]',
'DirectiveMetadata.queries:{[key:string]:any}',
'DirectiveMetadata.selector:string',
'DirectiveResolver',
'DirectiveResolver.constructor(_reflector:ReflectorReader)',
'DirectiveResolver.resolve(type:Type):DirectiveMetadata',
'DoCheck',
'DoCheck.ngDoCheck():any',
'DynamicComponentLoader',
@ -193,7 +182,7 @@ const CORE = [
'ExceptionHandler.constructor(_logger:any, _rethrowException:boolean)',
'ExceptionHandler.exceptionToString(exception:any, stackTrace:any, reason:string):string',
'ExpressionChangedAfterItHasBeenCheckedException',
'ExpressionChangedAfterItHasBeenCheckedException.constructor(exp:string, oldValue:any, currValue:any, context:any)',
'ExpressionChangedAfterItHasBeenCheckedException.constructor(oldValue:any, currValue:any, context:any)',
'ForwardRefFn',
'GetTestability',
'GetTestability.addToWindow(registry:TestabilityRegistry):void',
@ -218,24 +207,18 @@ const CORE = [
'InjectableMetadata',
'InjectableMetadata.constructor()',
'Injector',
'Injector.constructor(_proto:any, _parent:Injector, _isHostBoundary:boolean, _depProvider:any, _debugContext:Function)',
'Injector.createChildFromResolved(providers:ResolvedProvider[]):Injector',
'Injector.debugContext():any',
'Injector.displayName:string',
'Injector.fromResolvedBindings(providers:ResolvedProvider[]):Injector',
'Injector.fromResolvedProviders(providers:ResolvedProvider[]):Injector',
'Injector.get(token:any):any',
'Injector.getAt(index:number):any',
'Injector.getOptional(token:any):any',
'Injector.hostBoundary:any',
'Injector.instantiateResolved(provider:ResolvedProvider):any',
'Injector.internalStrategy:any',
'Injector.parent:Injector',
'Injector.resolve(providers:Array<Type|Provider|any[]>):ResolvedProvider[]',
'Injector.resolveAndCreate(providers:Array<Type|Provider|any[]>):Injector',
'Injector.resolveAndCreateChild(providers:Array<Type|Provider|any[]>):Injector',
'Injector.resolveAndInstantiate(provider:Type|Provider):any',
'Injector.toString():string',
'InputFactory',
'InputMetadata',
'InputMetadata.constructor(bindingPropertyName:string)',
@ -347,6 +330,7 @@ const CORE = [
'ProviderBuilder.toValue(value:any):Provider',
'QueryFactory',
'QueryList.changes:Observable<any>',
'QueryList.dirty:any',
'QueryList.filter(fn:(item: T) => boolean):T[]',
'QueryList.first:T',
'QueryList.forEach(fn:(item: T) => void):void',
@ -355,7 +339,8 @@ const CORE = [
'QueryList.map(fn:(item: T) => U):U[]',
'QueryList.notifyOnChanges():void',
'QueryList.reduce(fn:(acc: U, item: T) => U, init:U):U',
'QueryList.reset(res:T[]):void',
'QueryList.reset(res:Array<T|any[]>):void',
'QueryList.setDirty():any',
'QueryList.toArray():T[]',
'QueryList.toString():string',
'QueryList<T>',
@ -391,12 +376,12 @@ const CORE = [
'Reflector.setter(name:string):SetterFn',
'Reflector.trackUsage():void',
'RenderComponentType',
'RenderComponentType.constructor(id:string, encapsulation:ViewEncapsulation, styles:Array<string|any[]>)',
'RenderComponentType.constructor(id:string, templateUrl:string, slotCount:number, encapsulation:ViewEncapsulation, styles:Array<string|any[]>)',
'Renderer',
'Renderer.attachViewAfter(node:any, viewRootNodes:any[]):void',
'Renderer.createElement(parentElement:any, name:string):any',
'Renderer.createTemplateAnchor(parentElement:any):any',
'Renderer.createText(parentElement:any, value:string):any',
'Renderer.createElement(parentElement:any, name:string, debugInfo:RenderDebugInfo):any',
'Renderer.createTemplateAnchor(parentElement:any, debugInfo:RenderDebugInfo):any',
'Renderer.createText(parentElement:any, value:string, debugInfo:RenderDebugInfo):any',
'Renderer.createViewRoot(hostElement:any):any',
'Renderer.destroyView(hostElement:any, viewAllNodes:any[]):void',
'Renderer.detachView(viewRootNodes:any[]):void',
@ -404,15 +389,13 @@ const CORE = [
'Renderer.listen(renderElement:any, name:string, callback:Function):Function',
'Renderer.listenGlobal(target:string, name:string, callback:Function):Function',
'Renderer.projectNodes(parentElement:any, nodes:any[]):void',
'Renderer.renderComponent(componentType:RenderComponentType):Renderer',
'Renderer.selectRootElement(selector:string):any',
'Renderer.selectRootElement(selector:string, debugInfo:RenderDebugInfo):any',
'Renderer.setBindingDebugInfo(renderElement:any, propertyName:string, propertyValue:string):void',
'Renderer.setElementAttribute(renderElement:any, attributeName:string, attributeValue:string):void',
'Renderer.setElementClass(renderElement:any, className:string, isAdd:boolean):any',
'Renderer.setElementProperty(renderElement:any, propertyName:string, propertyValue:any):void',
'Renderer.setElementStyle(renderElement:any, styleName:string, styleValue:string):any',
'Renderer.setText(renderNode:any, text:string):any',
'Renderer.setElementDebugInfo(renderElement:any, info:RenderDebugInfo):any',
'ResolvedBinding',
'ResolvedFactory',
'ResolvedFactory.constructor(factory:Function, dependencies:Dependency[])',
@ -463,11 +446,11 @@ const CORE = [
'ViewContainerRef.clear():void',
'ViewContainerRef.createEmbeddedView(templateRef:TemplateRef, index:number):EmbeddedViewRef',
'ViewContainerRef.createHostView(hostViewFactoryRef:HostViewFactoryRef, index:number, dynamicallyCreatedProviders:ResolvedProvider[], projectableNodes:any[][]):HostViewRef',
'ViewContainerRef.detach(index:number):EmbeddedViewRef',
'ViewContainerRef.detach(index:number):ViewRef',
'ViewContainerRef.element:ElementRef',
'ViewContainerRef.get(index:number):ViewRef',
'ViewContainerRef.indexOf(viewRef:ViewRef):number',
'ViewContainerRef.insert(viewRef:EmbeddedViewRef, index:number):EmbeddedViewRef',
'ViewContainerRef.insert(viewRef:ViewRef, index:number):ViewRef',
'ViewContainerRef.length:number',
'ViewContainerRef.remove(index:number):void',
'ViewDecorator',
@ -493,9 +476,6 @@ const CORE = [
'ViewRef',
'ViewRef.changeDetectorRef:ChangeDetectorRef',
'ViewRef.destroyed:boolean',
'ViewResolver',
'ViewResolver.constructor(_reflector:ReflectorReader)',
'ViewResolver.resolve(component:Type):ViewMetadata',
'WrappedException',
'WrappedException.constructor(_wrapperMessage:string, _originalException:any, _originalStack:any, _context:any)',
'WrappedException.context:any',
@ -856,63 +836,16 @@ const COMPILER =
'BoundTextAst',
'BoundTextAst.constructor(value:AST, ngContentIndex:number, sourceSpan:ParseSourceSpan)',
'BoundTextAst.visit(visitor:TemplateAstVisitor, context:any):any',
'CompileDirectiveMetadata',
'CompileDirectiveMetadata.changeDetection:ChangeDetectionStrategy',
'CompileDirectiveMetadata.constructor({type,isComponent,dynamicLoadable,selector,exportAs,changeDetection,inputs,outputs,hostListeners,hostProperties,hostAttributes,lifecycleHooks,providers,viewProviders,queries,viewQueries,template}:{type?:CompileTypeMetadata, isComponent?:boolean, dynamicLoadable?:boolean, selector?:string, exportAs?:string, changeDetection?:ChangeDetectionStrategy, inputs?:{[key:string]:string}, outputs?:{[key:string]:string}, hostListeners?:{[key:string]:string}, hostProperties?:{[key:string]:string}, hostAttributes?:{[key:string]:string}, lifecycleHooks?:LifecycleHooks[], providers?:Array<CompileProviderMetadata|CompileTypeMetadata|CompileIdentifierMetadata|any[]>, viewProviders?:Array<CompileProviderMetadata|CompileTypeMetadata|CompileIdentifierMetadata|any[]>, queries?:CompileQueryMetadata[], viewQueries?:CompileQueryMetadata[], template?:CompileTemplateMetadata})',
'CompileDirectiveMetadata.create({type,isComponent,dynamicLoadable,selector,exportAs,changeDetection,inputs,outputs,host,lifecycleHooks,providers,viewProviders,queries,viewQueries,template}:{type?:CompileTypeMetadata, isComponent?:boolean, dynamicLoadable?:boolean, selector?:string, exportAs?:string, changeDetection?:ChangeDetectionStrategy, inputs?:string[], outputs?:string[], host?:{[key:string]:string}, lifecycleHooks?:LifecycleHooks[], providers?:Array<CompileProviderMetadata|CompileTypeMetadata|CompileIdentifierMetadata|any[]>, viewProviders?:Array<CompileProviderMetadata|CompileTypeMetadata|CompileIdentifierMetadata|any[]>, queries?:CompileQueryMetadata[], viewQueries?:CompileQueryMetadata[], template?:CompileTemplateMetadata}):CompileDirectiveMetadata',
'CompileDirectiveMetadata.providers:Array<CompileProviderMetadata|CompileTypeMetadata|any[]>',
'CompileDirectiveMetadata.queries:CompileQueryMetadata[]',
'CompileDirectiveMetadata.viewProviders:Array<CompileProviderMetadata|CompileTypeMetadata|any[]>',
'CompileDirectiveMetadata.viewQueries:CompileQueryMetadata[]',
'CompileDirectiveMetadata.dynamicLoadable:boolean',
'CompileDirectiveMetadata.exportAs:string',
'CompileDirectiveMetadata.fromJson(data:{[key:string]:any}):CompileDirectiveMetadata',
'CompileDirectiveMetadata.hostAttributes:{[key:string]:string}',
'CompileDirectiveMetadata.hostListeners:{[key:string]:string}',
'CompileDirectiveMetadata.hostProperties:{[key:string]:string}',
'CompileDirectiveMetadata.inputs:{[key:string]:string}',
'CompileDirectiveMetadata.isComponent:boolean',
'CompileDirectiveMetadata.lifecycleHooks:LifecycleHooks[]',
'CompileDirectiveMetadata.outputs:{[key:string]:string}',
'CompileDirectiveMetadata.selector:string',
'CompileDirectiveMetadata.template:CompileTemplateMetadata',
'CompileDirectiveMetadata.toJson():{[key:string]:any}',
'CompileDirectiveMetadata.type:CompileTypeMetadata',
'CompileDirectiveMetadata.identifier:CompileIdentifierMetadata',
'CompileTemplateMetadata',
'CompileTemplateMetadata.constructor({encapsulation,template,templateUrl,styles,styleUrls,ngContentSelectors}:{encapsulation?:ViewEncapsulation, template?:string, templateUrl?:string, styles?:string[], styleUrls?:string[], ngContentSelectors?:string[]})',
'CompileTemplateMetadata.encapsulation:ViewEncapsulation',
'CompileTemplateMetadata.fromJson(data:{[key:string]:any}):CompileTemplateMetadata',
'CompileTemplateMetadata.ngContentSelectors:string[]',
'CompileTemplateMetadata.styleUrls:string[]',
'CompileTemplateMetadata.styles:string[]',
'CompileTemplateMetadata.template:string',
'CompileTemplateMetadata.templateUrl:string',
'CompileTemplateMetadata.toJson():{[key:string]:any}',
'CompileTypeMetadata',
'CompileTypeMetadata.constructor({runtime,name,moduleUrl,prefix,isHost,constConstructor,value,diDeps}:{runtime?:Type, name?:string, moduleUrl?:string, prefix?:string, isHost?:boolean, constConstructor?:boolean, value?:any, diDeps?:CompileDiDependencyMetadata[]})',
'CompileTypeMetadata.fromJson(data:{[key:string]:any}):CompileTypeMetadata',
'CompileTypeMetadata.value:any',
'CompileTypeMetadata.isHost:boolean',
'CompileTypeMetadata.moduleUrl:string',
'CompileTypeMetadata.name:string',
'CompileTypeMetadata.runtime:Type',
'CompileTypeMetadata.toJson():{[key:string]:any}',
'CompileTypeMetadata.diDeps:CompileDiDependencyMetadata[]',
'CompileTypeMetadata.prefix:string',
'CompileTypeMetadata.constConstructor:boolean',
'CompileTypeMetadata.identifier:CompileIdentifierMetadata',
'CompileTypeMetadata.type:CompileTypeMetadata',
'DirectiveAst',
'DirectiveAst.constructor(directive:CompileDirectiveMetadata, inputs:BoundDirectivePropertyAst[], hostProperties:BoundElementPropertyAst[], hostEvents:BoundEventAst[], exportAsVars:VariableAst[], sourceSpan:ParseSourceSpan)',
'DirectiveAst.visit(visitor:TemplateAstVisitor, context:any):any',
'ElementAst',
'ElementAst.constructor(name:string, attrs:AttrAst[], inputs:BoundElementPropertyAst[], outputs:BoundEventAst[], exportAsVars:VariableAst[], directives:DirectiveAst[], children:TemplateAst[], ngContentIndex:number, sourceSpan:ParseSourceSpan)',
'ElementAst.constructor(name:string, attrs:AttrAst[], inputs:BoundElementPropertyAst[], outputs:BoundEventAst[], exportAsVars:VariableAst[], directives:DirectiveAst[], providers:ProviderAst[], children:TemplateAst[], ngContentIndex:number, sourceSpan:ParseSourceSpan)',
'ElementAst.getComponent():CompileDirectiveMetadata',
'ElementAst.isBound():boolean',
'ElementAst.visit(visitor:TemplateAstVisitor, context:any):any',
'EmbeddedTemplateAst',
'EmbeddedTemplateAst.constructor(attrs:AttrAst[], outputs:BoundEventAst[], vars:VariableAst[], directives:DirectiveAst[], children:TemplateAst[], ngContentIndex:number, sourceSpan:ParseSourceSpan)',
'EmbeddedTemplateAst.constructor(attrs:AttrAst[], outputs:BoundEventAst[], vars:VariableAst[], directives:DirectiveAst[], providers:ProviderAst[], children:TemplateAst[], ngContentIndex:number, sourceSpan:ParseSourceSpan)',
'EmbeddedTemplateAst.visit(visitor:TemplateAstVisitor, context:any):any',
'NgContentAst',
'NgContentAst.constructor(index:number, ngContentIndex:number, sourceSpan:ParseSourceSpan)',
@ -922,12 +855,6 @@ const COMPILER =
'PropertyBindingType.Class',
'PropertyBindingType.Property',
'PropertyBindingType.Style',
'SourceModule',
'SourceModule.constructor(moduleUrl:string, sourceWithModuleRefs:string)',
'SourceModule.getSourceWithImports():SourceWithImports',
'SourceModule.getSourceWithoutImports(sourceWithModuleRefs:string):string',
'SourceWithImports',
'SourceWithImports.constructor(source:string, imports:string[][])',
'TemplateAst',
'TemplateAst.sourceSpan:ParseSourceSpan',
'TemplateAst.visit(visitor:TemplateAstVisitor, context:any):any',
@ -943,18 +870,11 @@ const COMPILER =
'TemplateAstVisitor.visitNgContent(ast:NgContentAst, context:any):any',
'TemplateAstVisitor.visitText(ast:TextAst, context:any):any',
'TemplateAstVisitor.visitVariable(ast:VariableAst, context:any):any',
'TemplateCompiler',
'TemplateCompiler.clearCache():any',
'TemplateCompiler.compileHostComponentRuntime(type:Type):Promise<HostViewFactory>',
'TemplateCompiler.compileStylesheetCodeGen(stylesheetUrl:string, cssText:string):SourceModule[]',
'TemplateCompiler.compileTemplatesCodeGen(components:NormalizedComponentWithViewDirectives[]):SourceModule',
'TemplateCompiler.constructor(_runtimeMetadataResolver:RuntimeMetadataResolver, _templateNormalizer:TemplateNormalizer, _templateParser:TemplateParser, _styleCompiler:StyleCompiler, _cdCompiler:ChangeDetectionCompiler, _protoViewCompiler:ProtoViewCompiler, _viewCompiler:ViewCompiler, _resolvedMetadataCache:ResolvedMetadataCache, _genConfig:ChangeDetectorGenConfig)',
'TemplateCompiler.normalizeDirectiveMetadata(directive:CompileDirectiveMetadata):Promise<CompileDirectiveMetadata>',
'TextAst',
'TextAst.constructor(value:string, ngContentIndex:number, sourceSpan:ParseSourceSpan)',
'TextAst.visit(visitor:TemplateAstVisitor, context:any):any',
'UrlResolver',
'UrlResolver.constructor(packagePrefix:string)',
'UrlResolver.constructor(_packagePrefix:string)',
'UrlResolver.resolve(baseUrl:string, url:string):string',
'VariableAst',
'VariableAst.constructor(name:string, value:string, sourceSpan:ParseSourceSpan)',
@ -965,10 +885,172 @@ const COMPILER =
'const PLATFORM_DIRECTIVES:OpaqueToken',
'const PLATFORM_PIPES:OpaqueToken',
'const TEMPLATE_TRANSFORMS:any',
'createWithoutPackagePrefix():UrlResolver',
'getUrlScheme(url:string):string',
'templateVisitAll(visitor:TemplateAstVisitor, asts:TemplateAst[], context:any):any[]',
'var DEFAULT_PACKAGE_URL_PROVIDER:any'
'var DEFAULT_PACKAGE_URL_PROVIDER:any',
'CompileDiDependencyMetadata',
'CompileDiDependencyMetadata.constructor({isAttribute,isSelf,isHost,isSkipSelf,isOptional,isValue,query,viewQuery,token,value}:{isAttribute?:boolean, isSelf?:boolean, isHost?:boolean, isSkipSelf?:boolean, isOptional?:boolean, isValue?:boolean, query?:CompileQueryMetadata, viewQuery?:CompileQueryMetadata, token?:CompileTokenMetadata, value?:any})',
'CompileDiDependencyMetadata.fromJson(data:{[key:string]:any}):CompileDiDependencyMetadata',
'CompileDiDependencyMetadata.isAttribute:boolean',
'CompileDiDependencyMetadata.isHost:boolean',
'CompileDiDependencyMetadata.isOptional:boolean',
'CompileDiDependencyMetadata.isSelf:boolean',
'CompileDiDependencyMetadata.isSkipSelf:boolean',
'CompileDiDependencyMetadata.query:CompileQueryMetadata',
'CompileDiDependencyMetadata.toJson():{[key:string]:any}',
'CompileDiDependencyMetadata.token:CompileTokenMetadata',
'CompileDiDependencyMetadata.viewQuery:CompileQueryMetadata',
'CompileDiDependencyMetadata.isValue:boolean',
'CompileDiDependencyMetadata.value:any',
'CompileDirectiveMetadata.constructor({type,isComponent,selector,exportAs,changeDetection,inputs,outputs,hostListeners,hostProperties,hostAttributes,lifecycleHooks,providers,viewProviders,queries,viewQueries,template}:{type?:CompileTypeMetadata, isComponent?:boolean, selector?:string, exportAs?:string, changeDetection?:ChangeDetectionStrategy, inputs?:{[key:string]:string}, outputs?:{[key:string]:string}, hostListeners?:{[key:string]:string}, hostProperties?:{[key:string]:string}, hostAttributes?:{[key:string]:string}, lifecycleHooks?:LifecycleHooks[], providers?:Array<CompileProviderMetadata|CompileTypeMetadata|CompileIdentifierMetadata|any[]>, viewProviders?:Array<CompileProviderMetadata|CompileTypeMetadata|CompileIdentifierMetadata|any[]>, queries?:CompileQueryMetadata[], viewQueries?:CompileQueryMetadata[], template?:CompileTemplateMetadata})',
'CompileDirectiveMetadata.create({type,isComponent,selector,exportAs,changeDetection,inputs,outputs,host,lifecycleHooks,providers,viewProviders,queries,viewQueries,template}:{type?:CompileTypeMetadata, isComponent?:boolean, selector?:string, exportAs?:string, changeDetection?:ChangeDetectionStrategy, inputs?:string[], outputs?:string[], host?:{[key:string]:string}, lifecycleHooks?:LifecycleHooks[], providers?:Array<CompileProviderMetadata|CompileTypeMetadata|CompileIdentifierMetadata|any[]>, viewProviders?:Array<CompileProviderMetadata|CompileTypeMetadata|CompileIdentifierMetadata|any[]>, queries?:CompileQueryMetadata[], viewQueries?:CompileQueryMetadata[], template?:CompileTemplateMetadata}):CompileDirectiveMetadata',
'CompileDirectiveMetadata.providers:CompileProviderMetadata[]',
'CompileDirectiveMetadata.viewProviders:CompileProviderMetadata[]',
'CompileFactoryMetadata',
'CompileFactoryMetadata.constructor({runtime,name,moduleUrl,prefix,diDeps,value}:{runtime?:Function, name?:string, prefix?:string, moduleUrl?:string, value?:boolean, diDeps?:CompileDiDependencyMetadata[]})',
'CompileFactoryMetadata.diDeps:CompileDiDependencyMetadata[]',
'CompileFactoryMetadata.fromJson(data:{[key:string]:any}):CompileFactoryMetadata',
'CompileFactoryMetadata.identifier:CompileIdentifierMetadata',
'CompileFactoryMetadata.moduleUrl:string',
'CompileFactoryMetadata.name:string',
'CompileFactoryMetadata.prefix:string',
'CompileFactoryMetadata.runtime:Function',
'CompileFactoryMetadata.toJson():{[key:string]:any}',
'CompileFactoryMetadata.value:any',
'CompileIdentifierMetadata',
'CompileIdentifierMetadata.constructor({runtime,name,moduleUrl,prefix,value}:{runtime?:any, name?:string, moduleUrl?:string, prefix?:string, value?:any})',
'CompileIdentifierMetadata.fromJson(data:{[key:string]:any}):CompileIdentifierMetadata',
'CompileIdentifierMetadata.identifier:CompileIdentifierMetadata',
'CompileIdentifierMetadata.moduleUrl:string',
'CompileIdentifierMetadata.name:string',
'CompileIdentifierMetadata.prefix:string',
'CompileIdentifierMetadata.runtime:any',
'CompileIdentifierMetadata.toJson():{[key:string]:any}',
'CompileIdentifierMetadata.value:any',
'CompileMetadataWithIdentifier',
'CompileMetadataWithIdentifier.identifier:CompileIdentifierMetadata',
'CompileMetadataWithIdentifier.toJson():{[key:string]:any}',
'CompileMetadataWithType',
'CompileMetadataWithType.identifier:CompileIdentifierMetadata',
'CompileMetadataWithType.toJson():{[key:string]:any}',
'CompileMetadataWithType.type:CompileTypeMetadata',
'CompilePipeMetadata',
'CompilePipeMetadata.constructor({type,name,pure,lifecycleHooks}:{type?:CompileTypeMetadata, name?:string, pure?:boolean, lifecycleHooks?:LifecycleHooks[]})',
'CompilePipeMetadata.fromJson(data:{[key:string]:any}):CompilePipeMetadata',
'CompilePipeMetadata.identifier:CompileIdentifierMetadata',
'CompilePipeMetadata.lifecycleHooks:LifecycleHooks[]',
'CompilePipeMetadata.name:string',
'CompilePipeMetadata.pure:boolean',
'CompilePipeMetadata.toJson():{[key:string]:any}',
'CompilePipeMetadata.type:CompileTypeMetadata',
'CompileProviderMetadata',
'CompileProviderMetadata.constructor({token,useClass,useValue,useExisting,useFactory,deps,multi}:{token?:CompileTokenMetadata, useClass?:CompileTypeMetadata, useValue?:any, useExisting?:CompileTokenMetadata, useFactory?:CompileFactoryMetadata, deps?:CompileDiDependencyMetadata[], multi?:boolean})',
'CompileProviderMetadata.deps:CompileDiDependencyMetadata[]',
'CompileProviderMetadata.fromJson(data:{[key:string]:any}):CompileProviderMetadata',
'CompileProviderMetadata.multi:boolean',
'CompileProviderMetadata.toJson():{[key:string]:any}',
'CompileProviderMetadata.token:CompileTokenMetadata',
'CompileProviderMetadata.useClass:CompileTypeMetadata',
'CompileProviderMetadata.useExisting:CompileTokenMetadata',
'CompileProviderMetadata.useFactory:CompileFactoryMetadata',
'CompileProviderMetadata.useValue:any',
'CompileQueryMetadata',
'CompileQueryMetadata.constructor({selectors,descendants,first,propertyName}:{selectors?:Array<CompileTokenMetadata>, descendants?:boolean, first?:boolean, propertyName?:string})',
'CompileQueryMetadata.descendants:boolean',
'CompileQueryMetadata.first:boolean',
'CompileQueryMetadata.fromJson(data:{[key:string]:any}):CompileQueryMetadata',
'CompileQueryMetadata.propertyName:string',
'CompileQueryMetadata.selectors:Array<CompileTokenMetadata>',
'CompileQueryMetadata.toJson():{[key:string]:any}',
'CompileTokenMetadata',
'CompileTokenMetadata.assetCacheKey:any',
'CompileTokenMetadata.constructor({value,identifier,identifierIsInstance}:{value?:any, identifier?:CompileIdentifierMetadata, identifierIsInstance?:boolean})',
'CompileTokenMetadata.equalsTo(token2:CompileTokenMetadata):boolean',
'CompileTokenMetadata.fromJson(data:{[key:string]:any}):CompileTokenMetadata',
'CompileTokenMetadata.identifier:CompileIdentifierMetadata',
'CompileTokenMetadata.identifierIsInstance:boolean',
'CompileTokenMetadata.name:string',
'CompileTokenMetadata.runtimeCacheKey:any',
'CompileTokenMetadata.toJson():{[key:string]:any}',
'CompileTokenMetadata.value:any',
'CompileTypeMetadata.constructor({runtime,name,moduleUrl,prefix,isHost,value,diDeps}:{runtime?:Type, name?:string, moduleUrl?:string, prefix?:string, isHost?:boolean, value?:any, diDeps?:CompileDiDependencyMetadata[]})',
'CompileTypeMetadata.value:any',
'CompilerConfig',
'CompilerConfig.constructor(genDebugInfo:boolean, logBindingUpdate:boolean, useJit:boolean, renderTypes:RenderTypes)',
'CompilerConfig.renderTypes:RenderTypes',
'RenderTypes',
'RenderTypes.renderComment:CompileIdentifierMetadata',
'RenderTypes.renderElement:CompileIdentifierMetadata',
'RenderTypes.renderEvent:CompileIdentifierMetadata',
'RenderTypes.renderNode:CompileIdentifierMetadata',
'RenderTypes.renderText:CompileIdentifierMetadata',
'RenderTypes.renderer:CompileIdentifierMetadata',
'DirectiveResolver',
'DirectiveResolver.constructor(_reflector:ReflectorReader)',
'DirectiveResolver.resolve(type:Type):DirectiveMetadata',
'NormalizedComponentWithViewDirectives',
'NormalizedComponentWithViewDirectives.constructor(component:CompileDirectiveMetadata, directives:CompileDirectiveMetadata[], pipes:CompilePipeMetadata[])',
'OfflineCompiler',
'OfflineCompiler.compileStylesheet(stylesheetUrl:string, cssText:string):SourceModule[]',
'OfflineCompiler.compileTemplates(components:NormalizedComponentWithViewDirectives[]):SourceModule',
'OfflineCompiler.constructor(_directiveNormalizer:DirectiveNormalizer, _templateParser:TemplateParser, _styleCompiler:StyleCompiler, _viewCompiler:ViewCompiler, _outputEmitter:OutputEmitter)',
'OfflineCompiler.normalizeDirectiveMetadata(directive:CompileDirectiveMetadata):Promise<CompileDirectiveMetadata>',
'PipeResolver',
'PipeResolver.constructor(_reflector:ReflectorReader)',
'PipeResolver.resolve(type:Type):PipeMetadata',
'CompileDirectiveMetadata',
'CompileDirectiveMetadata.changeDetection:ChangeDetectionStrategy',
'CompileDirectiveMetadata.exportAs:string',
'CompileDirectiveMetadata.fromJson(data:{[key:string]:any}):CompileDirectiveMetadata',
'CompileDirectiveMetadata.hostAttributes:{[key:string]:string}',
'CompileDirectiveMetadata.hostListeners:{[key:string]:string}',
'CompileDirectiveMetadata.hostProperties:{[key:string]:string}',
'CompileDirectiveMetadata.identifier:CompileIdentifierMetadata',
'CompileDirectiveMetadata.inputs:{[key:string]:string}',
'CompileDirectiveMetadata.isComponent:boolean',
'CompileDirectiveMetadata.lifecycleHooks:LifecycleHooks[]',
'CompileDirectiveMetadata.outputs:{[key:string]:string}',
'CompileDirectiveMetadata.queries:CompileQueryMetadata[]',
'CompileDirectiveMetadata.selector:string',
'CompileDirectiveMetadata.template:CompileTemplateMetadata',
'CompileDirectiveMetadata.toJson():{[key:string]:any}',
'CompileDirectiveMetadata.type:CompileTypeMetadata',
'CompileDirectiveMetadata.viewQueries:CompileQueryMetadata[]',
'CompileTemplateMetadata',
'CompileTemplateMetadata.constructor({encapsulation,template,templateUrl,styles,styleUrls,ngContentSelectors}:{encapsulation?:ViewEncapsulation, template?:string, templateUrl?:string, styles?:string[], styleUrls?:string[], ngContentSelectors?:string[]})',
'CompileTemplateMetadata.encapsulation:ViewEncapsulation',
'CompileTemplateMetadata.fromJson(data:{[key:string]:any}):CompileTemplateMetadata',
'CompileTemplateMetadata.ngContentSelectors:string[]',
'CompileTemplateMetadata.styleUrls:string[]',
'CompileTemplateMetadata.styles:string[]',
'CompileTemplateMetadata.template:string',
'CompileTemplateMetadata.templateUrl:string',
'CompileTemplateMetadata.toJson():{[key:string]:any}',
'CompileTypeMetadata',
'CompileTypeMetadata.diDeps:CompileDiDependencyMetadata[]',
'CompileTypeMetadata.fromJson(data:{[key:string]:any}):CompileTypeMetadata',
'CompileTypeMetadata.identifier:CompileIdentifierMetadata',
'CompileTypeMetadata.isHost:boolean',
'CompileTypeMetadata.moduleUrl:string',
'CompileTypeMetadata.name:string',
'CompileTypeMetadata.prefix:string',
'CompileTypeMetadata.runtime:Type',
'CompileTypeMetadata.toJson():{[key:string]:any}',
'CompileTypeMetadata.type:CompileTypeMetadata',
'ProviderAst',
'ProviderAst.constructor(token:CompileTokenMetadata, multiProvider:boolean, eager:boolean, providers:CompileProviderMetadata[], providerType:ProviderAstType, sourceSpan:ParseSourceSpan)',
'ProviderAst.visit(visitor:TemplateAstVisitor, context:any):any',
'ProviderAstType',
'ProviderAstType.Builtin',
'ProviderAstType.Component',
'ProviderAstType.Directive',
'ProviderAstType.PrivateService',
'ProviderAstType.PublicService',
'SourceModule',
'SourceModule.constructor(moduleUrl:string, source:string)',
'ViewResolver',
'ViewResolver.constructor(_reflector:ReflectorReader)',
'ViewResolver.resolve(component:Type):ViewMetadata',
'createOfflineCompileUrlResolver():UrlResolver'
];
const INSTRUMENTATION = [