1 | /**
|
---|
2 | * @license
|
---|
3 | * Copyright Google LLC All Rights Reserved.
|
---|
4 | *
|
---|
5 | * Use of this source code is governed by an MIT-style license that can be
|
---|
6 | * found in the LICENSE file at https://angular.io/license
|
---|
7 | */
|
---|
8 | import { AstPath } from '../ast_path';
|
---|
9 | import { CompileDirectiveSummary, CompileProviderMetadata, CompileTokenMetadata } from '../compile_metadata';
|
---|
10 | import { SecurityContext } from '../core';
|
---|
11 | import { ASTWithSource, BoundElementProperty, ParsedEvent, ParsedVariable } from '../expression_parser/ast';
|
---|
12 | import { LifecycleHooks } from '../lifecycle_reflector';
|
---|
13 | import { ParseSourceSpan } from '../parse_util';
|
---|
14 | /**
|
---|
15 | * An Abstract Syntax Tree node representing part of a parsed Angular template.
|
---|
16 | */
|
---|
17 | export interface TemplateAst {
|
---|
18 | /**
|
---|
19 | * The source span from which this node was parsed.
|
---|
20 | */
|
---|
21 | sourceSpan: ParseSourceSpan;
|
---|
22 | /**
|
---|
23 | * Visit this node and possibly transform it.
|
---|
24 | */
|
---|
25 | visit(visitor: TemplateAstVisitor, context: any): any;
|
---|
26 | }
|
---|
27 | /**
|
---|
28 | * A segment of text within the template.
|
---|
29 | */
|
---|
30 | export declare class TextAst implements TemplateAst {
|
---|
31 | value: string;
|
---|
32 | ngContentIndex: number;
|
---|
33 | sourceSpan: ParseSourceSpan;
|
---|
34 | constructor(value: string, ngContentIndex: number, sourceSpan: ParseSourceSpan);
|
---|
35 | visit(visitor: TemplateAstVisitor, context: any): any;
|
---|
36 | }
|
---|
37 | /**
|
---|
38 | * A bound expression within the text of a template.
|
---|
39 | */
|
---|
40 | export declare class BoundTextAst implements TemplateAst {
|
---|
41 | value: ASTWithSource;
|
---|
42 | ngContentIndex: number;
|
---|
43 | sourceSpan: ParseSourceSpan;
|
---|
44 | constructor(value: ASTWithSource, ngContentIndex: number, sourceSpan: ParseSourceSpan);
|
---|
45 | visit(visitor: TemplateAstVisitor, context: any): any;
|
---|
46 | }
|
---|
47 | /**
|
---|
48 | * A plain attribute on an element.
|
---|
49 | */
|
---|
50 | export declare class AttrAst implements TemplateAst {
|
---|
51 | name: string;
|
---|
52 | value: string;
|
---|
53 | sourceSpan: ParseSourceSpan;
|
---|
54 | constructor(name: string, value: string, sourceSpan: ParseSourceSpan);
|
---|
55 | visit(visitor: TemplateAstVisitor, context: any): any;
|
---|
56 | }
|
---|
57 | export declare const enum PropertyBindingType {
|
---|
58 | Property = 0,
|
---|
59 | Attribute = 1,
|
---|
60 | Class = 2,
|
---|
61 | Style = 3,
|
---|
62 | Animation = 4
|
---|
63 | }
|
---|
64 | /**
|
---|
65 | * A binding for an element property (e.g. `[property]="expression"`) or an animation trigger (e.g.
|
---|
66 | * `[@trigger]="stateExp"`)
|
---|
67 | */
|
---|
68 | export declare class BoundElementPropertyAst implements TemplateAst {
|
---|
69 | name: string;
|
---|
70 | type: PropertyBindingType;
|
---|
71 | securityContext: SecurityContext;
|
---|
72 | value: ASTWithSource;
|
---|
73 | unit: string | null;
|
---|
74 | sourceSpan: ParseSourceSpan;
|
---|
75 | readonly isAnimation: boolean;
|
---|
76 | constructor(name: string, type: PropertyBindingType, securityContext: SecurityContext, value: ASTWithSource, unit: string | null, sourceSpan: ParseSourceSpan);
|
---|
77 | static fromBoundProperty(prop: BoundElementProperty): BoundElementPropertyAst;
|
---|
78 | visit(visitor: TemplateAstVisitor, context: any): any;
|
---|
79 | }
|
---|
80 | /**
|
---|
81 | * A binding for an element event (e.g. `(event)="handler()"`) or an animation trigger event (e.g.
|
---|
82 | * `(@trigger.phase)="callback($event)"`).
|
---|
83 | */
|
---|
84 | export declare class BoundEventAst implements TemplateAst {
|
---|
85 | name: string;
|
---|
86 | target: string | null;
|
---|
87 | phase: string | null;
|
---|
88 | handler: ASTWithSource;
|
---|
89 | sourceSpan: ParseSourceSpan;
|
---|
90 | handlerSpan: ParseSourceSpan;
|
---|
91 | readonly fullName: string;
|
---|
92 | readonly isAnimation: boolean;
|
---|
93 | constructor(name: string, target: string | null, phase: string | null, handler: ASTWithSource, sourceSpan: ParseSourceSpan, handlerSpan: ParseSourceSpan);
|
---|
94 | static calcFullName(name: string, target: string | null, phase: string | null): string;
|
---|
95 | static fromParsedEvent(event: ParsedEvent): BoundEventAst;
|
---|
96 | visit(visitor: TemplateAstVisitor, context: any): any;
|
---|
97 | }
|
---|
98 | /**
|
---|
99 | * A reference declaration on an element (e.g. `let someName="expression"`).
|
---|
100 | */
|
---|
101 | export declare class ReferenceAst implements TemplateAst {
|
---|
102 | name: string;
|
---|
103 | value: CompileTokenMetadata;
|
---|
104 | originalValue: string;
|
---|
105 | sourceSpan: ParseSourceSpan;
|
---|
106 | constructor(name: string, value: CompileTokenMetadata, originalValue: string, sourceSpan: ParseSourceSpan);
|
---|
107 | visit(visitor: TemplateAstVisitor, context: any): any;
|
---|
108 | }
|
---|
109 | /**
|
---|
110 | * A variable declaration on a <ng-template> (e.g. `var-someName="someLocalName"`).
|
---|
111 | */
|
---|
112 | export declare class VariableAst implements TemplateAst {
|
---|
113 | readonly name: string;
|
---|
114 | readonly value: string;
|
---|
115 | readonly sourceSpan: ParseSourceSpan;
|
---|
116 | readonly valueSpan?: ParseSourceSpan | undefined;
|
---|
117 | constructor(name: string, value: string, sourceSpan: ParseSourceSpan, valueSpan?: ParseSourceSpan | undefined);
|
---|
118 | static fromParsedVariable(v: ParsedVariable): VariableAst;
|
---|
119 | visit(visitor: TemplateAstVisitor, context: any): any;
|
---|
120 | }
|
---|
121 | /**
|
---|
122 | * An element declaration in a template.
|
---|
123 | */
|
---|
124 | export declare class ElementAst implements TemplateAst {
|
---|
125 | name: string;
|
---|
126 | attrs: AttrAst[];
|
---|
127 | inputs: BoundElementPropertyAst[];
|
---|
128 | outputs: BoundEventAst[];
|
---|
129 | references: ReferenceAst[];
|
---|
130 | directives: DirectiveAst[];
|
---|
131 | providers: ProviderAst[];
|
---|
132 | hasViewContainer: boolean;
|
---|
133 | queryMatches: QueryMatch[];
|
---|
134 | children: TemplateAst[];
|
---|
135 | ngContentIndex: number | null;
|
---|
136 | sourceSpan: ParseSourceSpan;
|
---|
137 | endSourceSpan: ParseSourceSpan | null;
|
---|
138 | constructor(name: string, attrs: AttrAst[], inputs: BoundElementPropertyAst[], outputs: BoundEventAst[], references: ReferenceAst[], directives: DirectiveAst[], providers: ProviderAst[], hasViewContainer: boolean, queryMatches: QueryMatch[], children: TemplateAst[], ngContentIndex: number | null, sourceSpan: ParseSourceSpan, endSourceSpan: ParseSourceSpan | null);
|
---|
139 | visit(visitor: TemplateAstVisitor, context: any): any;
|
---|
140 | }
|
---|
141 | /**
|
---|
142 | * A `<ng-template>` element included in an Angular template.
|
---|
143 | */
|
---|
144 | export declare class EmbeddedTemplateAst implements TemplateAst {
|
---|
145 | attrs: AttrAst[];
|
---|
146 | outputs: BoundEventAst[];
|
---|
147 | references: ReferenceAst[];
|
---|
148 | variables: VariableAst[];
|
---|
149 | directives: DirectiveAst[];
|
---|
150 | providers: ProviderAst[];
|
---|
151 | hasViewContainer: boolean;
|
---|
152 | queryMatches: QueryMatch[];
|
---|
153 | children: TemplateAst[];
|
---|
154 | ngContentIndex: number;
|
---|
155 | sourceSpan: ParseSourceSpan;
|
---|
156 | constructor(attrs: AttrAst[], outputs: BoundEventAst[], references: ReferenceAst[], variables: VariableAst[], directives: DirectiveAst[], providers: ProviderAst[], hasViewContainer: boolean, queryMatches: QueryMatch[], children: TemplateAst[], ngContentIndex: number, sourceSpan: ParseSourceSpan);
|
---|
157 | visit(visitor: TemplateAstVisitor, context: any): any;
|
---|
158 | }
|
---|
159 | /**
|
---|
160 | * A directive property with a bound value (e.g. `*ngIf="condition").
|
---|
161 | */
|
---|
162 | export declare class BoundDirectivePropertyAst implements TemplateAst {
|
---|
163 | directiveName: string;
|
---|
164 | templateName: string;
|
---|
165 | value: ASTWithSource;
|
---|
166 | sourceSpan: ParseSourceSpan;
|
---|
167 | constructor(directiveName: string, templateName: string, value: ASTWithSource, sourceSpan: ParseSourceSpan);
|
---|
168 | visit(visitor: TemplateAstVisitor, context: any): any;
|
---|
169 | }
|
---|
170 | /**
|
---|
171 | * A directive declared on an element.
|
---|
172 | */
|
---|
173 | export declare class DirectiveAst implements TemplateAst {
|
---|
174 | directive: CompileDirectiveSummary;
|
---|
175 | inputs: BoundDirectivePropertyAst[];
|
---|
176 | hostProperties: BoundElementPropertyAst[];
|
---|
177 | hostEvents: BoundEventAst[];
|
---|
178 | contentQueryStartId: number;
|
---|
179 | sourceSpan: ParseSourceSpan;
|
---|
180 | constructor(directive: CompileDirectiveSummary, inputs: BoundDirectivePropertyAst[], hostProperties: BoundElementPropertyAst[], hostEvents: BoundEventAst[], contentQueryStartId: number, sourceSpan: ParseSourceSpan);
|
---|
181 | visit(visitor: TemplateAstVisitor, context: any): any;
|
---|
182 | }
|
---|
183 | /**
|
---|
184 | * A provider declared on an element
|
---|
185 | */
|
---|
186 | export declare class ProviderAst implements TemplateAst {
|
---|
187 | token: CompileTokenMetadata;
|
---|
188 | multiProvider: boolean;
|
---|
189 | eager: boolean;
|
---|
190 | providers: CompileProviderMetadata[];
|
---|
191 | providerType: ProviderAstType;
|
---|
192 | lifecycleHooks: LifecycleHooks[];
|
---|
193 | sourceSpan: ParseSourceSpan;
|
---|
194 | readonly isModule: boolean;
|
---|
195 | constructor(token: CompileTokenMetadata, multiProvider: boolean, eager: boolean, providers: CompileProviderMetadata[], providerType: ProviderAstType, lifecycleHooks: LifecycleHooks[], sourceSpan: ParseSourceSpan, isModule: boolean);
|
---|
196 | visit(visitor: TemplateAstVisitor, context: any): any;
|
---|
197 | }
|
---|
198 | export declare enum ProviderAstType {
|
---|
199 | PublicService = 0,
|
---|
200 | PrivateService = 1,
|
---|
201 | Component = 2,
|
---|
202 | Directive = 3,
|
---|
203 | Builtin = 4
|
---|
204 | }
|
---|
205 | /**
|
---|
206 | * Position where content is to be projected (instance of `<ng-content>` in a template).
|
---|
207 | */
|
---|
208 | export declare class NgContentAst implements TemplateAst {
|
---|
209 | index: number;
|
---|
210 | ngContentIndex: number;
|
---|
211 | sourceSpan: ParseSourceSpan;
|
---|
212 | constructor(index: number, ngContentIndex: number, sourceSpan: ParseSourceSpan);
|
---|
213 | visit(visitor: TemplateAstVisitor, context: any): any;
|
---|
214 | }
|
---|
215 | export interface QueryMatch {
|
---|
216 | queryId: number;
|
---|
217 | value: CompileTokenMetadata;
|
---|
218 | }
|
---|
219 | /**
|
---|
220 | * A visitor for {@link TemplateAst} trees that will process each node.
|
---|
221 | */
|
---|
222 | export interface TemplateAstVisitor {
|
---|
223 | visit?(ast: TemplateAst, context: any): any;
|
---|
224 | visitNgContent(ast: NgContentAst, context: any): any;
|
---|
225 | visitEmbeddedTemplate(ast: EmbeddedTemplateAst, context: any): any;
|
---|
226 | visitElement(ast: ElementAst, context: any): any;
|
---|
227 | visitReference(ast: ReferenceAst, context: any): any;
|
---|
228 | visitVariable(ast: VariableAst, context: any): any;
|
---|
229 | visitEvent(ast: BoundEventAst, context: any): any;
|
---|
230 | visitElementProperty(ast: BoundElementPropertyAst, context: any): any;
|
---|
231 | visitAttr(ast: AttrAst, context: any): any;
|
---|
232 | visitBoundText(ast: BoundTextAst, context: any): any;
|
---|
233 | visitText(ast: TextAst, context: any): any;
|
---|
234 | visitDirective(ast: DirectiveAst, context: any): any;
|
---|
235 | visitDirectiveProperty(ast: BoundDirectivePropertyAst, context: any): any;
|
---|
236 | }
|
---|
237 | /**
|
---|
238 | * A visitor that accepts each node but doesn't do anything. It is intended to be used
|
---|
239 | * as the base class for a visitor that is only interested in a subset of the node types.
|
---|
240 | */
|
---|
241 | export declare class NullTemplateVisitor implements TemplateAstVisitor {
|
---|
242 | visitNgContent(ast: NgContentAst, context: any): void;
|
---|
243 | visitEmbeddedTemplate(ast: EmbeddedTemplateAst, context: any): void;
|
---|
244 | visitElement(ast: ElementAst, context: any): void;
|
---|
245 | visitReference(ast: ReferenceAst, context: any): void;
|
---|
246 | visitVariable(ast: VariableAst, context: any): void;
|
---|
247 | visitEvent(ast: BoundEventAst, context: any): void;
|
---|
248 | visitElementProperty(ast: BoundElementPropertyAst, context: any): void;
|
---|
249 | visitAttr(ast: AttrAst, context: any): void;
|
---|
250 | visitBoundText(ast: BoundTextAst, context: any): void;
|
---|
251 | visitText(ast: TextAst, context: any): void;
|
---|
252 | visitDirective(ast: DirectiveAst, context: any): void;
|
---|
253 | visitDirectiveProperty(ast: BoundDirectivePropertyAst, context: any): void;
|
---|
254 | }
|
---|
255 | /**
|
---|
256 | * Base class that can be used to build a visitor that visits each node
|
---|
257 | * in an template ast recursively.
|
---|
258 | */
|
---|
259 | export declare class RecursiveTemplateAstVisitor extends NullTemplateVisitor implements TemplateAstVisitor {
|
---|
260 | constructor();
|
---|
261 | visitEmbeddedTemplate(ast: EmbeddedTemplateAst, context: any): any;
|
---|
262 | visitElement(ast: ElementAst, context: any): any;
|
---|
263 | visitDirective(ast: DirectiveAst, context: any): any;
|
---|
264 | protected visitChildren(context: any, cb: (visit: (<V extends TemplateAst>(children: V[] | undefined) => void)) => void): any[];
|
---|
265 | }
|
---|
266 | /**
|
---|
267 | * Visit every node in a list of {@link TemplateAst}s with the given {@link TemplateAstVisitor}.
|
---|
268 | */
|
---|
269 | export declare function templateVisitAll(visitor: TemplateAstVisitor, asts: TemplateAst[], context?: any): any[];
|
---|
270 | export declare type TemplateAstPath = AstPath<TemplateAst>;
|
---|