diff --git a/packages/compiler/src/core.ts b/packages/compiler/src/core.ts index dc19a925aeb..69b09d6e130 100644 --- a/packages/compiler/src/core.ts +++ b/packages/compiler/src/core.ts @@ -14,88 +14,10 @@ import {CssSelector} from './selector'; -export interface Inject { - token: any; -} -export const createInject = makeMetadataFactory('Inject', (token: any) => ({token})); -export const createInjectionToken = makeMetadataFactory( - 'InjectionToken', (desc: string) => ({_desc: desc, ɵprov: undefined})); - -export interface Attribute { - attributeName: string; -} -export const createAttribute = - makeMetadataFactory('Attribute', (attributeName: string) => ({attributeName})); - // Stores the default value of `emitDistinctChangesOnly` when the `emitDistinctChangesOnly` is not // explicitly set. export const emitDistinctChangesOnlyDefaultValue = true; - -export interface Query { - descendants: boolean; - first: boolean; - read: any; - isViewQuery: boolean; - selector: any; - static?: boolean; - emitDistinctChangesOnly: boolean; -} - -export const createContentChildren = makeMetadataFactory( - 'ContentChildren', (selector?: any, data: any = {}) => ({ - selector, - first: false, - isViewQuery: false, - descendants: false, - emitDistinctChangesOnly: emitDistinctChangesOnlyDefaultValue, - ...data - })); -export const createContentChild = makeMetadataFactory( - 'ContentChild', - (selector?: any, data: any = {}) => - ({selector, first: true, isViewQuery: false, descendants: true, ...data})); -export const createViewChildren = makeMetadataFactory( - 'ViewChildren', (selector?: any, data: any = {}) => ({ - selector, - first: false, - isViewQuery: true, - descendants: true, - emitDistinctChangesOnly: emitDistinctChangesOnlyDefaultValue, - ...data - })); -export const createViewChild = makeMetadataFactory( - 'ViewChild', - (selector: any, data: any) => - ({selector, first: true, isViewQuery: true, descendants: true, ...data})); - -export interface Directive { - selector?: string; - inputs?: string[]; - outputs?: string[]; - host?: {[key: string]: string}; - providers?: Provider[]; - exportAs?: string; - queries?: {[key: string]: any}; - guards?: {[key: string]: any}; -} -export const createDirective = - makeMetadataFactory('Directive', (dir: Directive = {}) => dir); - -export interface Component extends Directive { - changeDetection?: ChangeDetectionStrategy; - viewProviders?: Provider[]; - moduleId?: string; - templateUrl?: string; - template?: string; - styleUrls?: string[]; - styles?: string[]; - animations?: any[]; - encapsulation?: ViewEncapsulation; - interpolation?: [string, string]; - entryComponents?: Array; - preserveWhitespaces?: boolean; -} export enum ViewEncapsulation { Emulated = 0, // Historically the 1 value was for `Native` encapsulation which has been removed as of v11. @@ -108,67 +30,23 @@ export enum ChangeDetectionStrategy { Default = 1 } -export const createComponent = makeMetadataFactory( - 'Component', (c: Component = {}) => ({changeDetection: ChangeDetectionStrategy.Default, ...c})); - -export interface Pipe { - name: string; - pure?: boolean; -} -export const createPipe = makeMetadataFactory('Pipe', (p: Pipe) => ({pure: true, ...p})); - export interface Input { bindingPropertyName?: string; } -export const createInput = - makeMetadataFactory('Input', (bindingPropertyName?: string) => ({bindingPropertyName})); export interface Output { bindingPropertyName?: string; } -export const createOutput = makeMetadataFactory( - 'Output', (bindingPropertyName?: string) => ({bindingPropertyName})); export interface HostBinding { hostPropertyName?: string; } -export const createHostBinding = makeMetadataFactory( - 'HostBinding', (hostPropertyName?: string) => ({hostPropertyName})); export interface HostListener { eventName?: string; args?: string[]; } -export const createHostListener = makeMetadataFactory( - 'HostListener', (eventName?: string, args?: string[]) => ({eventName, args})); -export interface NgModule { - providers?: Provider[]; - declarations?: Array; - imports?: Array; - exports?: Array; - entryComponents?: Array; - bootstrap?: Array; - schemas?: Array; - id?: string; -} -export const createNgModule = - makeMetadataFactory('NgModule', (ngModule: NgModule) => ngModule); - -export interface ModuleWithProviders { - ngModule: Type; - providers?: Provider[]; -} -export interface Injectable { - providedIn?: Type|'root'|any; - useClass?: Type|any; - useExisting?: Type|any; - useValue?: any; - useFactory?: Type|any; - deps?: Array; -} -export const createInjectable = - makeMetadataFactory('Injectable', (injectable: Injectable = {}) => injectable); export interface SchemaMetadata { name: string; } @@ -181,11 +59,6 @@ export const NO_ERRORS_SCHEMA: SchemaMetadata = { name: 'no-errors-schema' }; -export const createOptional = makeMetadataFactory('Optional'); -export const createSelf = makeMetadataFactory('Self'); -export const createSkipSelf = makeMetadataFactory('SkipSelf'); -export const createHost = makeMetadataFactory('Host'); - export interface Type extends Function { new(...args: any[]): any; } @@ -200,61 +73,6 @@ export enum SecurityContext { RESOURCE_URL = 5, } -export type Provider = any; - -export const enum NodeFlags { - None = 0, - TypeElement = 1 << 0, - TypeText = 1 << 1, - ProjectedTemplate = 1 << 2, - CatRenderNode = TypeElement | TypeText, - TypeNgContent = 1 << 3, - TypePipe = 1 << 4, - TypePureArray = 1 << 5, - TypePureObject = 1 << 6, - TypePurePipe = 1 << 7, - CatPureExpression = TypePureArray | TypePureObject | TypePurePipe, - TypeValueProvider = 1 << 8, - TypeClassProvider = 1 << 9, - TypeFactoryProvider = 1 << 10, - TypeUseExistingProvider = 1 << 11, - LazyProvider = 1 << 12, - PrivateProvider = 1 << 13, - TypeDirective = 1 << 14, - Component = 1 << 15, - CatProviderNoDirective = - TypeValueProvider | TypeClassProvider | TypeFactoryProvider | TypeUseExistingProvider, - CatProvider = CatProviderNoDirective | TypeDirective, - OnInit = 1 << 16, - OnDestroy = 1 << 17, - DoCheck = 1 << 18, - OnChanges = 1 << 19, - AfterContentInit = 1 << 20, - AfterContentChecked = 1 << 21, - AfterViewInit = 1 << 22, - AfterViewChecked = 1 << 23, - EmbeddedViews = 1 << 24, - ComponentView = 1 << 25, - TypeContentQuery = 1 << 26, - TypeViewQuery = 1 << 27, - StaticQuery = 1 << 28, - DynamicQuery = 1 << 29, - TypeModuleProvider = 1 << 30, - EmitDistinctChangesOnly = 1 << 31, - CatQuery = TypeContentQuery | TypeViewQuery, - - // mutually exclusive values... - Types = CatRenderNode | TypeNgContent | TypePipe | CatPureExpression | CatProvider | CatQuery -} - -export const enum DepFlags { - None = 0, - SkipSelf = 1 << 0, - Optional = 1 << 1, - Self = 1 << 2, - Value = 1 << 3, -} - /** * Injection flags for DI. */ @@ -279,76 +97,12 @@ export const enum InjectFlags { ForPipe = 1 << 4, } -export const enum ArgumentType { - Inline = 0, - Dynamic = 1 -} - -export const enum BindingFlags { - TypeElementAttribute = 1 << 0, - TypeElementClass = 1 << 1, - TypeElementStyle = 1 << 2, - TypeProperty = 1 << 3, - SyntheticProperty = 1 << 4, - SyntheticHostProperty = 1 << 5, - CatSyntheticProperty = SyntheticProperty | SyntheticHostProperty, - - // mutually exclusive values... - Types = TypeElementAttribute | TypeElementClass | TypeElementStyle | TypeProperty -} - -export const enum QueryBindingType { - First = 0, - All = 1 -} - -export const enum QueryValueType { - ElementRef = 0, - RenderElement = 1, - TemplateRef = 2, - ViewContainerRef = 3, - Provider = 4 -} - -export const enum ViewFlags { - None = 0, - OnPush = 1 << 1, -} - export enum MissingTranslationStrategy { Error = 0, Warning = 1, Ignore = 2, } -export interface MetadataFactory { - (...args: any[]): T; - isTypeOf(obj: any): obj is T; - ngMetadataName: string; -} - -function makeMetadataFactory(name: string, props?: (...args: any[]) => T): MetadataFactory { - // This must be declared as a function, not a fat arrow, so that ES2015 devmode produces code - // that works with the static_reflector.ts in the ViewEngine compiler. - // In particular, `_registerDecoratorOrConstructor` assumes that the value returned here can be - // new'ed. - function factory(...args: any[]) { - const values = props ? props(...args) : {}; - return { - ngMetadataName: name, - ...values, - }; - } - (factory as any).isTypeOf = (obj: any) => obj && obj.ngMetadataName === name; - (factory as any).ngMetadataName = name; - return factory as any; -} - -export interface Route { - children?: Route[]; - loadChildren?: string|Type|any; -} - /** * Flags used to generate R3-style CSS Selectors. They are pasted from * core/src/render3/projection.ts because they cannot be referenced directly.