refactor(ivy): misc cleanup (#25291)

PR Close #25291
This commit is contained in:
Victor Berchet 2018-08-03 12:30:40 -07:00 committed by Kara Erickson
parent 1e7ca22078
commit aea8832243
11 changed files with 25 additions and 54 deletions

View File

@ -17,19 +17,13 @@ export class EventListener {
* @experimental All debugging apis are currently experimental. * @experimental All debugging apis are currently experimental.
*/ */
export class DebugNode { export class DebugNode {
nativeNode: any; listeners: EventListener[] = [];
listeners: EventListener[]; parent: DebugElement|null = null;
// TODO(issue/24571): remove '!'.
parent !: DebugElement | null;
constructor(nativeNode: any, parent: DebugNode|null, private _debugContext: DebugContext) { constructor(public nativeNode: any, parent: DebugNode|null, private _debugContext: DebugContext) {
this.nativeNode = nativeNode;
if (parent && parent instanceof DebugElement) { if (parent && parent instanceof DebugElement) {
parent.addChild(this); parent.addChild(this);
} else {
this.parent = null;
} }
this.listeners = [];
} }
get injector(): Injector { return this._debugContext.injector; } get injector(): Injector { return this._debugContext.injector; }
@ -47,22 +41,16 @@ export class DebugNode {
* @experimental All debugging apis are currently experimental. * @experimental All debugging apis are currently experimental.
*/ */
export class DebugElement extends DebugNode { export class DebugElement extends DebugNode {
// TODO(issue/24571): remove '!'.
name !: string; name !: string;
properties: {[key: string]: any}; properties: {[key: string]: any} = {};
attributes: {[key: string]: string | null}; attributes: {[key: string]: string | null} = {};
classes: {[key: string]: boolean}; classes: {[key: string]: boolean} = {};
styles: {[key: string]: string | null}; styles: {[key: string]: string | null} = {};
childNodes: DebugNode[]; childNodes: DebugNode[] = [];
nativeElement: any; nativeElement: any;
constructor(nativeNode: any, parent: any, _debugContext: DebugContext) { constructor(nativeNode: any, parent: any, _debugContext: DebugContext) {
super(nativeNode, parent, _debugContext); super(nativeNode, parent, _debugContext);
this.properties = {};
this.attributes = {};
this.classes = {};
this.styles = {};
this.childNodes = [];
this.nativeElement = nativeNode; this.nativeElement = nativeNode;
} }

View File

@ -394,10 +394,6 @@ function isFactoryProvider(value: SingleProvider): value is FactoryProvider {
return !!(value as FactoryProvider).useFactory; return !!(value as FactoryProvider).useFactory;
} }
function isClassProvider(value: SingleProvider): value is ClassProvider {
return !!(value as ClassProvider).useClass;
}
function isTypeProvider(value: SingleProvider): value is TypeProvider { function isTypeProvider(value: SingleProvider): value is TypeProvider {
return typeof value === 'function'; return typeof value === 'function';
} }

View File

@ -99,7 +99,7 @@ export function renderComponent<T>(
const componentDef = const componentDef =
(componentType as ComponentType<T>).ngComponentDef as ComponentDefInternal<T>; (componentType as ComponentType<T>).ngComponentDef as ComponentDefInternal<T>;
if (componentDef.type != componentType) componentDef.type = componentType; if (componentDef.type != componentType) componentDef.type = componentType;
let component: T;
// The first index of the first selector is the tag name. // The first index of the first selector is the tag name.
const componentTag = componentDef.selectors ![0] ![0] as string; const componentTag = componentDef.selectors ![0] ![0] as string;
const hostNode = locateHostElement(rendererFactory, opts.host || componentTag); const hostNode = locateHostElement(rendererFactory, opts.host || componentTag);
@ -113,6 +113,7 @@ export function renderComponent<T>(
const oldView = enterView(rootView, null !); const oldView = enterView(rootView, null !);
let elementNode: LElementNode; let elementNode: LElementNode;
let component: T;
try { try {
if (rendererFactory.begin) rendererFactory.begin(); if (rendererFactory.begin) rendererFactory.begin();
@ -120,8 +121,8 @@ export function renderComponent<T>(
elementNode = hostElement(componentTag, hostNode, componentDef, sanitizer); elementNode = hostElement(componentTag, hostNode, componentDef, sanitizer);
// Create directive instance with factory() and store at index 0 in directives array // Create directive instance with factory() and store at index 0 in directives array
rootContext.components.push( component = baseDirectiveCreate(0, componentDef.factory() as T, componentDef);
component = baseDirectiveCreate(0, componentDef.factory(), componentDef) as T); rootContext.components.push(component);
(elementNode.data as LViewData)[CONTEXT] = component; (elementNode.data as LViewData)[CONTEXT] = component;
initChangeDetectorIfExisting(elementNode.nodeInjector, component, elementNode.data !); initChangeDetectorIfExisting(elementNode.nodeInjector, component, elementNode.data !);

View File

@ -6,17 +6,14 @@
* found in the LICENSE file at https://angular.io/license * found in the LICENSE file at https://angular.io/license
*/ */
import {SimpleChange} from '../change_detection/change_detection_util';
import {ChangeDetectionStrategy} from '../change_detection/constants'; import {ChangeDetectionStrategy} from '../change_detection/constants';
import {Provider} from '../core'; import {Provider} from '../core';
import {OnChanges, SimpleChanges} from '../metadata/lifecycle_hooks';
import {NgModuleDef, NgModuleDefInternal} from '../metadata/ng_module'; import {NgModuleDef, NgModuleDefInternal} from '../metadata/ng_module';
import {RendererType2} from '../render/api'; import {RendererType2} from '../render/api';
import {Type} from '../type'; import {Type} from '../type';
import {resolveRendererType2} from '../view/util'; import {resolveRendererType2} from '../view/util';
import {diPublic} from './di'; import {BaseDef, ComponentDefFeature, ComponentDefInternal, ComponentQuery, ComponentTemplate, ComponentType, DirectiveDefFeature, DirectiveDefInternal, DirectiveType, DirectiveTypesOrFactory, PipeDefInternal, PipeType, PipeTypesOrFactory} from './interfaces/definition';
import {BaseDef, ComponentDefFeature, ComponentDefInternal, ComponentQuery, ComponentTemplate, ComponentType, DirectiveDefFeature, DirectiveDefInternal, DirectiveDefListOrFactory, DirectiveType, DirectiveTypesOrFactory, PipeDefInternal, PipeType, PipeTypesOrFactory} from './interfaces/definition';
import {CssSelectorList, SelectorFlags} from './interfaces/projection'; import {CssSelectorList, SelectorFlags} from './interfaces/projection';

View File

@ -772,13 +772,9 @@ export function getOrCreateTemplateRef<T>(di: LInjector): viewEngine.TemplateRef
} }
class TemplateRef<T> implements viewEngine.TemplateRef<T> { class TemplateRef<T> implements viewEngine.TemplateRef<T> {
readonly elementRef: viewEngine.ElementRef;
constructor( constructor(
private _declarationParentView: LViewData, elementRef: viewEngine.ElementRef, private _declarationParentView: LViewData, readonly elementRef: viewEngine.ElementRef,
private _tView: TView, private _renderer: Renderer3, private _queries: LQueries|null) { private _tView: TView, private _renderer: Renderer3, private _queries: LQueries|null) {}
this.elementRef = elementRef;
}
createEmbeddedView(context: T, containerNode?: LContainerNode, index?: number): createEmbeddedView(context: T, containerNode?: LContainerNode, index?: number):
viewEngine.EmbeddedViewRef<T> { viewEngine.EmbeddedViewRef<T> {

View File

@ -11,7 +11,6 @@ import {defineBase, defineComponent, defineDirective, defineNgModule, definePipe
import {InheritDefinitionFeature} from './features/inherit_definition_feature'; import {InheritDefinitionFeature} from './features/inherit_definition_feature';
import {NgOnChangesFeature} from './features/ng_onchanges_feature'; import {NgOnChangesFeature} from './features/ng_onchanges_feature';
import {PublicFeature} from './features/public_feature'; import {PublicFeature} from './features/public_feature';
import {I18nExpInstruction, I18nInstruction, i18nExpMapping, i18nInterpolation1, i18nInterpolation2, i18nInterpolation3, i18nInterpolation4, i18nInterpolation5, i18nInterpolation6, i18nInterpolation7, i18nInterpolation8, i18nInterpolationV} from './i18n';
import {ComponentDef, ComponentDefInternal, ComponentTemplate, ComponentType, DirectiveDef, DirectiveDefFlags, DirectiveDefInternal, DirectiveType, PipeDef} from './interfaces/definition'; import {ComponentDef, ComponentDefInternal, ComponentTemplate, ComponentType, DirectiveDef, DirectiveDefFlags, DirectiveDefInternal, DirectiveType, PipeDef} from './interfaces/definition';
export {ComponentFactory, ComponentFactoryResolver, ComponentRef} from './component_ref'; export {ComponentFactory, ComponentFactoryResolver, ComponentRef} from './component_ref';

View File

@ -12,7 +12,7 @@ import {Sanitizer} from '../../sanitization/security';
import {LContainer} from './container'; import {LContainer} from './container';
import {ComponentQuery, ComponentTemplate, DirectiveDefInternal, DirectiveDefList, PipeDefInternal, PipeDefList} from './definition'; import {ComponentQuery, ComponentTemplate, DirectiveDefInternal, DirectiveDefList, PipeDefInternal, PipeDefList} from './definition';
import {LContainerNode, LElementNode, LViewNode, TNode} from './node'; import {LElementNode, LViewNode, TNode} from './node';
import {LQueries} from './query'; import {LQueries} from './query';
import {Renderer3} from './renderer'; import {Renderer3} from './renderer';

View File

@ -22,11 +22,9 @@ import {convertDependencies, reflectDependencies} from './util';
* Compile an Angular injectable according to its `Injectable` metadata, and patch the resulting * Compile an Angular injectable according to its `Injectable` metadata, and patch the resulting
* `ngInjectableDef` onto the injectable type. * `ngInjectableDef` onto the injectable type.
*/ */
export function compileInjectable(type: Type<any>, meta?: Injectable): void { export function compileInjectable(type: Type<any>, srcMeta?: Injectable): void {
// TODO(alxhub): handle JIT of bare @Injectable(). // Allow the compilation of a class with a `@Injectable()` decorator without parameters
if (!meta) { const meta: Injectable = srcMeta || {providedIn: null};
return;
}
let def: any = null; let def: any = null;
Object.defineProperty(type, NG_INJECTABLE_DEF, { Object.defineProperty(type, NG_INJECTABLE_DEF, {

View File

@ -13,9 +13,8 @@ export const MODULE_SUFFIX = '';
const builtinExternalReferences = createBuiltinExternalReferencesMap(); const builtinExternalReferences = createBuiltinExternalReferencesMap();
export class JitReflector implements CompileReflector { export class JitReflector implements CompileReflector {
private reflectionCapabilities: ReflectionCapabilities; private reflectionCapabilities: ReflectionCapabilities = new ReflectionCapabilities();
private builtinExternalReferences = new Map<ExternalReference, any>();
constructor() { this.reflectionCapabilities = new ReflectionCapabilities(); }
componentModuleUrl(type: any, cmpMetadata: Component): string { componentModuleUrl(type: any, cmpMetadata: Component): string {
const moduleId = cmpMetadata.moduleId; const moduleId = cmpMetadata.moduleId;

View File

@ -6,8 +6,8 @@
* found in the LICENSE file at https://angular.io/license * found in the LICENSE file at https://angular.io/license
*/ */
import {COMPILER_OPTIONS, CompilerFactory, Injector, PlatformRef, StaticProvider, createPlatformFactory} from '@angular/core'; import {COMPILER_OPTIONS, CompilerFactory, Injector, PlatformRef, createPlatformFactory} from '@angular/core';
import {TestComponentRenderer, ɵTestingCompilerFactory as TestingCompilerFactory} from '@angular/core/testing'; import {ɵTestingCompilerFactory as TestingCompilerFactory} from '@angular/core/testing';
import {ɵplatformCoreDynamic as platformCoreDynamic} from '@angular/platform-browser-dynamic'; import {ɵplatformCoreDynamic as platformCoreDynamic} from '@angular/platform-browser-dynamic';
import {COMPILER_PROVIDERS, TestingCompilerFactoryImpl} from './compiler_factory'; import {COMPILER_PROVIDERS, TestingCompilerFactoryImpl} from './compiler_factory';

View File

@ -7,20 +7,17 @@
*/ */
import {CommonModule, PlatformLocation, ɵPLATFORM_BROWSER_ID as PLATFORM_BROWSER_ID} from '@angular/common'; import {CommonModule, PlatformLocation, ɵPLATFORM_BROWSER_ID as PLATFORM_BROWSER_ID} from '@angular/common';
import {APP_ID, ApplicationModule, ClassProvider, ConstructorSansProvider, ErrorHandler, ExistingProvider, FactoryProvider, Inject, InjectionToken, ModuleWithProviders, NgModule, NgZone, Optional, PLATFORM_ID, PLATFORM_INITIALIZER, PlatformRef, RendererFactory2, RootRenderer, Sanitizer, SkipSelf, StaticProvider, Testability, TypeProvider, ValueProvider, createPlatformFactory, platformCore, ɵAPP_ROOT as APP_ROOT, ɵConsole as Console} from '@angular/core'; import {APP_ID, ApplicationModule, ErrorHandler, Inject, ModuleWithProviders, NgModule, NgZone, Optional, PLATFORM_ID, PLATFORM_INITIALIZER, PlatformRef, RendererFactory2, Sanitizer, SkipSelf, StaticProvider, Testability, createPlatformFactory, platformCore, ɵAPP_ROOT as APP_ROOT, ɵConsole as Console} from '@angular/core';
import {BrowserDomAdapter} from './browser/browser_adapter'; import {BrowserDomAdapter} from './browser/browser_adapter';
import {BrowserPlatformLocation} from './browser/location/browser_platform_location'; import {BrowserPlatformLocation} from './browser/location/browser_platform_location';
import {Meta} from './browser/meta';
import {SERVER_TRANSITION_PROVIDERS, TRANSITION_ID} from './browser/server-transition'; import {SERVER_TRANSITION_PROVIDERS, TRANSITION_ID} from './browser/server-transition';
import {BrowserGetTestability} from './browser/testability'; import {BrowserGetTestability} from './browser/testability';
import {Title} from './browser/title';
import {ELEMENT_PROBE_PROVIDERS} from './dom/debug/ng_probe'; import {ELEMENT_PROBE_PROVIDERS} from './dom/debug/ng_probe';
import {getDOM} from './dom/dom_adapter';
import {DomRendererFactory2} from './dom/dom_renderer'; import {DomRendererFactory2} from './dom/dom_renderer';
import {DOCUMENT} from './dom/dom_tokens'; import {DOCUMENT} from './dom/dom_tokens';
import {DomEventsPlugin} from './dom/events/dom_events'; import {DomEventsPlugin} from './dom/events/dom_events';
import {EVENT_MANAGER_PLUGINS, EventManager, EventManagerPlugin} from './dom/events/event_manager'; import {EVENT_MANAGER_PLUGINS, EventManager} from './dom/events/event_manager';
import {HAMMER_GESTURE_CONFIG, HAMMER_LOADER, HammerGestureConfig, HammerGesturesPlugin} from './dom/events/hammer_gestures'; import {HAMMER_GESTURE_CONFIG, HAMMER_LOADER, HammerGestureConfig, HammerGesturesPlugin} from './dom/events/hammer_gestures';
import {KeyEventsPlugin} from './dom/events/key_events'; import {KeyEventsPlugin} from './dom/events/key_events';
import {DomSharedStylesHost, SharedStylesHost} from './dom/shared_styles_host'; import {DomSharedStylesHost, SharedStylesHost} from './dom/shared_styles_host';