This commit implements creating of `ɵɵngDeclarePipe()` calls in partial compilation, and processing of those calls in the linker and JIT compiler. See #40677 PR Close #40803
272 lines
7.1 KiB
TypeScript
272 lines
7.1 KiB
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;
|
|
compileInjector(
|
|
angularCoreEnv: CoreEnvironment, sourceMapUrl: string, meta: R3InjectorMetadataFacade): any;
|
|
compileNgModule(
|
|
angularCoreEnv: CoreEnvironment, sourceMapUrl: string, meta: R3NgModuleMetadataFacade): 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;
|
|
|
|
createParseSourceSpan(kind: string, typeName: string, sourceUrl: string): ParseSourceSpan;
|
|
|
|
R3ResolvedDependencyType: typeof R3ResolvedDependencyType;
|
|
R3FactoryTarget: typeof R3FactoryTarget;
|
|
ResourceLoader: {new(): ResourceLoader};
|
|
}
|
|
|
|
export interface CoreEnvironment {
|
|
[name: string]: Function;
|
|
}
|
|
|
|
export type ResourceLoader = {
|
|
get(url: string): Promise<string>|string;
|
|
};
|
|
|
|
export type StringMap = {
|
|
[key: string]: string;
|
|
};
|
|
|
|
export type StringMapWithRename = {
|
|
[key: string]: string|[string, string];
|
|
};
|
|
|
|
export type Provider = any;
|
|
|
|
export enum R3ResolvedDependencyType {
|
|
Token = 0,
|
|
Attribute = 1,
|
|
ChangeDetectorRef = 2,
|
|
Invalid = 3,
|
|
}
|
|
|
|
export enum R3FactoryTarget {
|
|
Directive = 0,
|
|
Component = 1,
|
|
Injectable = 2,
|
|
Pipe = 3,
|
|
NgModule = 4,
|
|
}
|
|
|
|
export interface R3DependencyMetadataFacade {
|
|
token: any;
|
|
resolved: R3ResolvedDependencyType;
|
|
host: boolean;
|
|
optional: boolean;
|
|
self: boolean;
|
|
skipSelf: boolean;
|
|
}
|
|
|
|
export interface R3PipeMetadataFacade {
|
|
name: string;
|
|
type: any;
|
|
typeArgumentCount: number;
|
|
pipeName: string;
|
|
deps: R3DependencyMetadataFacade[]|null;
|
|
pure: boolean;
|
|
}
|
|
|
|
export interface R3InjectableMetadataFacade {
|
|
name: string;
|
|
type: any;
|
|
typeArgumentCount: number;
|
|
providedIn: any;
|
|
useClass?: any;
|
|
useFactory?: any;
|
|
useExisting?: any;
|
|
useValue?: any;
|
|
userDeps?: R3DependencyMetadataFacade[];
|
|
}
|
|
|
|
export interface R3NgModuleMetadataFacade {
|
|
type: any;
|
|
bootstrap: Function[];
|
|
declarations: Function[];
|
|
imports: Function[];
|
|
exports: Function[];
|
|
schemas: {name: string}[]|null;
|
|
id: string|null;
|
|
}
|
|
|
|
export interface R3InjectorMetadataFacade {
|
|
name: string;
|
|
type: any;
|
|
deps: R3DependencyMetadataFacade[]|null;
|
|
providers: any[];
|
|
imports: any[];
|
|
}
|
|
|
|
export interface R3DirectiveMetadataFacade {
|
|
name: string;
|
|
type: any;
|
|
typeArgumentCount: number;
|
|
typeSourceSpan: ParseSourceSpan;
|
|
deps: R3DependencyMetadataFacade[]|null;
|
|
selector: string|null;
|
|
queries: R3QueryMetadataFacade[];
|
|
host: {[key: string]: string};
|
|
propMetadata: {[key: string]: any[]};
|
|
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: any[]|undefined;
|
|
pipes: Map<string, any>;
|
|
directives: R3UsedDirectiveMetadata[];
|
|
styles: string[];
|
|
encapsulation: ViewEncapsulation;
|
|
viewProviders: Provider[]|null;
|
|
interpolation?: [string, string];
|
|
changeDetection?: ChangeDetectionStrategy;
|
|
}
|
|
|
|
export type OpaqueValue = unknown;
|
|
|
|
export interface R3DeclareDirectiveFacade {
|
|
selector?: string;
|
|
type: Function;
|
|
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[];
|
|
directives?: {
|
|
selector: string; type: OpaqueValue | (() => OpaqueValue);
|
|
inputs?: string[];
|
|
outputs?: string[];
|
|
exportAs?: string[];
|
|
}[];
|
|
pipes?: {[pipeName: string]: OpaqueValue|(() => OpaqueValue)};
|
|
viewProviders?: OpaqueValue;
|
|
animations?: OpaqueValue;
|
|
changeDetection?: ChangeDetectionStrategy;
|
|
encapsulation?: ViewEncapsulation;
|
|
interpolation?: [string, string];
|
|
preserveWhitespaces?: boolean;
|
|
}
|
|
|
|
export interface R3UsedDirectiveMetadata {
|
|
selector: string;
|
|
inputs: string[];
|
|
outputs: string[];
|
|
exportAs: string[]|null;
|
|
type: any;
|
|
}
|
|
|
|
export interface R3FactoryDefMetadataFacade {
|
|
name: string;
|
|
type: any;
|
|
typeArgumentCount: number;
|
|
deps: R3DependencyMetadataFacade[]|null;
|
|
injectFn: 'directiveInject'|'inject';
|
|
target: R3FactoryTarget;
|
|
}
|
|
|
|
export enum ViewEncapsulation {
|
|
Emulated = 0,
|
|
// Historically the 1 value was for `Native` encapsulation which has been removed as of v11.
|
|
None = 2,
|
|
ShadowDom = 3
|
|
}
|
|
|
|
export type ChangeDetectionStrategy = number;
|
|
|
|
export interface R3QueryMetadataFacade {
|
|
propertyName: string;
|
|
first: boolean;
|
|
predicate: any|string[];
|
|
descendants: boolean;
|
|
emitDistinctChangesOnly: boolean;
|
|
read: any|null;
|
|
static: boolean;
|
|
}
|
|
|
|
export interface R3DeclareQueryMetadataFacade {
|
|
propertyName: string;
|
|
first?: boolean;
|
|
predicate: OpaqueValue|string[];
|
|
descendants?: boolean;
|
|
read?: OpaqueValue;
|
|
static?: boolean;
|
|
emitDistinctChangesOnly?: boolean;
|
|
}
|
|
|
|
export interface R3DeclarePipeFacade {
|
|
type: Function;
|
|
name: string;
|
|
pure?: boolean;
|
|
}
|
|
|
|
export interface ParseSourceSpan {
|
|
start: any;
|
|
end: any;
|
|
details: any;
|
|
fullStart: any;
|
|
}
|