@angular/compiler
Version:
Angular - the compiler library
281 lines (280 loc) • 9.11 kB
TypeScript
/**
* @license
* Copyright Google LLC 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
*/
/**
* A set of interfaces which are shared between `@angular/core` and `@angular/compiler` to allow
* for late binding of `@angular/compiler` for JIT purposes.
*
* This file has two copies. Please ensure that they are in sync:
* - packages/compiler/src/compiler_facade_interface.ts (main)
* - packages/core/src/compiler/compiler_facade_interface.ts (replica)
*
* Please ensure that the two files are in sync using this command:
* ```
* cp packages/compiler/src/compiler_facade_interface.ts \
* packages/core/src/compiler/compiler_facade_interface.ts
* ```
*/
export interface ExportedCompilerFacade {
ɵcompilerFacade: CompilerFacade;
}
export interface CompilerFacade {
compilePipe(angularCoreEnv: CoreEnvironment, sourceMapUrl: string, meta: R3PipeMetadataFacade): any;
compilePipeDeclaration(angularCoreEnv: CoreEnvironment, sourceMapUrl: string, declaration: R3DeclarePipeFacade): any;
compileInjectable(angularCoreEnv: CoreEnvironment, sourceMapUrl: string, meta: R3InjectableMetadataFacade): any;
compileInjectableDeclaration(angularCoreEnv: CoreEnvironment, sourceMapUrl: string, meta: R3DeclareInjectableFacade): any;
compileInjector(angularCoreEnv: CoreEnvironment, sourceMapUrl: string, meta: R3InjectorMetadataFacade): any;
compileInjectorDeclaration(angularCoreEnv: CoreEnvironment, sourceMapUrl: string, declaration: R3DeclareInjectorFacade): any;
compileNgModule(angularCoreEnv: CoreEnvironment, sourceMapUrl: string, meta: R3NgModuleMetadataFacade): any;
compileNgModuleDeclaration(angularCoreEnv: CoreEnvironment, sourceMapUrl: string, declaration: R3DeclareNgModuleFacade): any;
compileDirective(angularCoreEnv: CoreEnvironment, sourceMapUrl: string, meta: R3DirectiveMetadataFacade): any;
compileDirectiveDeclaration(angularCoreEnv: CoreEnvironment, sourceMapUrl: string, declaration: R3DeclareDirectiveFacade): any;
compileComponent(angularCoreEnv: CoreEnvironment, sourceMapUrl: string, meta: R3ComponentMetadataFacade): any;
compileComponentDeclaration(angularCoreEnv: CoreEnvironment, sourceMapUrl: string, declaration: R3DeclareComponentFacade): any;
compileFactory(angularCoreEnv: CoreEnvironment, sourceMapUrl: string, meta: R3FactoryDefMetadataFacade): any;
compileFactoryDeclaration(angularCoreEnv: CoreEnvironment, sourceMapUrl: string, meta: R3DeclareFactoryFacade): any;
createParseSourceSpan(kind: string, typeName: string, sourceUrl: string): ParseSourceSpan;
FactoryTarget: typeof FactoryTarget;
ResourceLoader: Function & {
prototype: ResourceLoader;
};
}
export interface CoreEnvironment {
[name: string]: Function;
}
export declare type ResourceLoader = {
get(url: string): Promise<string> | string;
};
export declare type StringMap = {
[key: string]: string;
};
export declare type StringMapWithRename = {
[key: string]: string | [string, string];
};
export declare type Provider = unknown;
export declare type Type = Function;
export declare type OpaqueValue = unknown;
export declare enum FactoryTarget {
Directive = 0,
Component = 1,
Injectable = 2,
Pipe = 3,
NgModule = 4
}
export interface R3DependencyMetadataFacade {
token: OpaqueValue;
attribute: string | null;
host: boolean;
optional: boolean;
self: boolean;
skipSelf: boolean;
}
export interface R3DeclareDependencyMetadataFacade {
token: OpaqueValue;
attribute?: boolean;
host?: boolean;
optional?: boolean;
self?: boolean;
skipSelf?: boolean;
}
export interface R3PipeMetadataFacade {
name: string;
type: Type;
pipeName: string;
pure: boolean;
}
export interface R3InjectableMetadataFacade {
name: string;
type: Type;
typeArgumentCount: number;
providedIn?: Type | 'root' | 'platform' | 'any' | null;
useClass?: OpaqueValue;
useFactory?: OpaqueValue;
useExisting?: OpaqueValue;
useValue?: OpaqueValue;
deps?: R3DependencyMetadataFacade[];
}
export interface R3NgModuleMetadataFacade {
type: Type;
bootstrap: Function[];
declarations: Function[];
imports: Function[];
exports: Function[];
schemas: {
name: string;
}[] | null;
id: string | null;
}
export interface R3InjectorMetadataFacade {
name: string;
type: Type;
providers: Provider[];
imports: OpaqueValue[];
}
export interface R3DirectiveMetadataFacade {
name: string;
type: Type;
typeSourceSpan: ParseSourceSpan;
selector: string | null;
queries: R3QueryMetadataFacade[];
host: {
[key: string]: string;
};
propMetadata: {
[key: string]: OpaqueValue[];
};
lifecycle: {
usesOnChanges: boolean;
};
inputs: string[];
outputs: string[];
usesInheritance: boolean;
exportAs: string[] | null;
providers: Provider[] | null;
viewQueries: R3QueryMetadataFacade[];
}
export interface R3ComponentMetadataFacade extends R3DirectiveMetadataFacade {
template: string;
preserveWhitespaces: boolean;
animations: OpaqueValue[] | undefined;
pipes: Map<string, any>;
directives: R3UsedDirectiveMetadata[];
styles: string[];
encapsulation: ViewEncapsulation;
viewProviders: Provider[] | null;
interpolation?: [string, string];
changeDetection?: ChangeDetectionStrategy;
}
export interface R3DeclareDirectiveFacade {
selector?: string;
type: Type;
inputs?: {
[classPropertyName: string]: string | [string, string];
};
outputs?: {
[classPropertyName: string]: string;
};
host?: {
attributes?: {
[key: string]: OpaqueValue;
};
listeners?: {
[key: string]: string;
};
properties?: {
[key: string]: string;
};
classAttribute?: string;
styleAttribute?: string;
};
queries?: R3DeclareQueryMetadataFacade[];
viewQueries?: R3DeclareQueryMetadataFacade[];
providers?: OpaqueValue;
exportAs?: string[];
usesInheritance?: boolean;
usesOnChanges?: boolean;
}
export interface R3DeclareComponentFacade extends R3DeclareDirectiveFacade {
template: string;
isInline?: boolean;
styles?: string[];
components?: R3DeclareUsedDirectiveFacade[];
directives?: R3DeclareUsedDirectiveFacade[];
pipes?: {
[pipeName: string]: OpaqueValue | (() => OpaqueValue);
};
viewProviders?: OpaqueValue;
animations?: OpaqueValue;
changeDetection?: ChangeDetectionStrategy;
encapsulation?: ViewEncapsulation;
interpolation?: [string, string];
preserveWhitespaces?: boolean;
}
export interface R3DeclareUsedDirectiveFacade {
selector: string;
type: OpaqueValue | (() => OpaqueValue);
inputs?: string[];
outputs?: string[];
exportAs?: string[];
}
export interface R3UsedDirectiveMetadata {
selector: string;
inputs: string[];
outputs: string[];
exportAs: string[] | null;
type: any;
}
export interface R3FactoryDefMetadataFacade {
name: string;
type: Type;
typeArgumentCount: number;
deps: R3DependencyMetadataFacade[] | null;
target: FactoryTarget;
}
export interface R3DeclareFactoryFacade {
type: Type;
deps: R3DeclareDependencyMetadataFacade[] | 'invalid' | null;
target: FactoryTarget;
}
export interface R3DeclareInjectableFacade {
type: Type;
providedIn?: Type | 'root' | 'platform' | 'any' | null;
useClass?: OpaqueValue;
useFactory?: OpaqueValue;
useExisting?: OpaqueValue;
useValue?: OpaqueValue;
deps?: R3DeclareDependencyMetadataFacade[];
}
export declare enum ViewEncapsulation {
Emulated = 0,
None = 2,
ShadowDom = 3
}
export declare type ChangeDetectionStrategy = number;
export interface R3QueryMetadataFacade {
propertyName: string;
first: boolean;
predicate: OpaqueValue | string[];
descendants: boolean;
emitDistinctChangesOnly: boolean;
read: OpaqueValue | null;
static: boolean;
}
export interface R3DeclareQueryMetadataFacade {
propertyName: string;
first?: boolean;
predicate: OpaqueValue | string[];
descendants?: boolean;
read?: OpaqueValue;
static?: boolean;
emitDistinctChangesOnly?: boolean;
}
export interface R3DeclareInjectorFacade {
type: Type;
imports?: OpaqueValue[];
providers?: OpaqueValue[];
}
export interface R3DeclareNgModuleFacade {
type: Type;
bootstrap?: OpaqueValue[] | (() => OpaqueValue[]);
declarations?: OpaqueValue[] | (() => OpaqueValue[]);
imports?: OpaqueValue[] | (() => OpaqueValue[]);
exports?: OpaqueValue[] | (() => OpaqueValue[]);
schemas?: OpaqueValue[];
id?: OpaqueValue;
}
export interface R3DeclarePipeFacade {
type: Type;
name: string;
pure?: boolean;
}
export interface ParseSourceSpan {
start: any;
end: any;
details: any;
fullStart: any;
}