diff --git a/packages/angular-html-parser/src/index.ts b/packages/angular-html-parser/src/index.ts
index f8210308f180..1684624cdceb 100644
--- a/packages/angular-html-parser/src/index.ts
+++ b/packages/angular-html-parser/src/index.ts
@@ -97,3 +97,7 @@ export {
ParseSourceFile,
} from "../../compiler/src/parse_util.js";
export { getHtmlTagDefinition } from "../../compiler/src/ml_parser/html_tags.js";
+
+// Types
+export type { ParseTreeResult } from "../../compiler/src/ml_parser/parser.js";
+export type * as Ast from "../../compiler/src/ml_parser/ast.js";
diff --git a/packages/angular-html-parser/test/index_spec.ts b/packages/angular-html-parser/test/index_spec.ts
index 42ddb4e07762..42c8750e2298 100644
--- a/packages/angular-html-parser/test/index_spec.ts
+++ b/packages/angular-html-parser/test/index_spec.ts
@@ -51,7 +51,7 @@ describe("options", () => {
it("should be able to parse MJML", () => {
const MJML_RAW_TAGS = new Set(["mj-style", "mj-raw"]);
- const result = parse('
', {
+ const result = parse("", {
getTagContentType: (tagName) =>
MJML_RAW_TAGS.has(tagName) ? TagContentType.RAW_TEXT : undefined,
});
@@ -68,15 +68,15 @@ describe("AST format", () => {
const input = ` txt`;
const ast = parse(input);
expect(ast.rootNodes).toEqual([
- expect.objectContaining({ type: "docType" }),
- expect.objectContaining({ type: "text" }),
+ expect.objectContaining({ kind: "docType" }),
+ expect.objectContaining({ kind: "text" }),
expect.objectContaining({
- type: "element",
- attrs: [expect.objectContaining({ type: "attribute" })],
+ kind: "element",
+ attrs: [expect.objectContaining({ kind: "attribute" })],
}),
- expect.objectContaining({ type: "text" }),
- expect.objectContaining({ type: "comment" }),
- expect.objectContaining({ type: "cdata" }),
+ expect.objectContaining({ kind: "text" }),
+ expect.objectContaining({ kind: "comment" }),
+ expect.objectContaining({ kind: "cdata" }),
]);
});
@@ -86,23 +86,23 @@ describe("AST format", () => {
expect(ast.rootNodes).toEqual([
expect.objectContaining({
name: "if",
- type: "block",
+ kind: "block",
parameters: [
expect.objectContaining({
- type: "blockParameter",
+ kind: "blockParameter",
expression: "user.isHuman",
}),
],
children: [
- expect.objectContaining({ type: "text", value: " " }),
+ expect.objectContaining({ kind: "text", value: " " }),
expect.objectContaining({
- type: "element",
+ kind: "element",
name: "p",
children: [
- expect.objectContaining({ type: "text", value: "Hello human" }),
+ expect.objectContaining({ kind: "text", value: "Hello human" }),
],
}),
- expect.objectContaining({ type: "text", value: " " }),
+ expect.objectContaining({ kind: "text", value: " " }),
],
}),
]);
@@ -114,7 +114,7 @@ describe("AST format", () => {
expect(ast.rootNodes).toEqual([
expect.objectContaining({
name: "foo",
- type: "letDeclaration",
+ kind: "letDeclaration",
value: "'bar'",
}),
]);
@@ -129,11 +129,11 @@ describe("AST format", () => {
expect(ast.rootNodes).toEqual([
expect.objectContaining({
name: "div",
- type: "element",
+ kind: "element",
directives: [
expect.objectContaining({
name: "Dir",
- type: "directive",
+ kind: "directive",
}),
],
}),
@@ -149,7 +149,7 @@ describe("AST format", () => {
expect.objectContaining({
fullName: "MyComp",
componentName: "MyComp",
- type: "component",
+ kind: "component",
}),
]);
}
@@ -160,7 +160,7 @@ describe("AST format", () => {
expect.objectContaining({
fullName: "MyComp",
componentName: "MyComp",
- type: "component",
+ kind: "component",
}),
]);
}
@@ -173,7 +173,7 @@ describe("AST format", () => {
expect.objectContaining({
fullName: "MyComp:button",
componentName: "MyComp",
- type: "component",
+ kind: "component",
}),
]);
}
@@ -186,7 +186,7 @@ describe("AST format", () => {
expect.objectContaining({
fullName: "MyComp:svg:title",
componentName: "MyComp",
- type: "component",
+ kind: "component",
}),
]);
}
diff --git a/packages/compiler/src/ml_parser/ast.ts b/packages/compiler/src/ml_parser/ast.ts
index 8255f52d7894..04716acc4c9b 100644
--- a/packages/compiler/src/ml_parser/ast.ts
+++ b/packages/compiler/src/ml_parser/ast.ts
@@ -51,7 +51,7 @@ export class Text extends NodeWithI18n {
override visit(visitor: Visitor, context: any): any {
return visitor.visitText(this, context);
}
- readonly type = 'text';
+ readonly kind = 'text';
}
export class CDATA extends NodeWithI18n {
@@ -66,7 +66,7 @@ export class CDATA extends NodeWithI18n {
override visit(visitor: Visitor, context: any): any {
return visitor.visitCdata(this, context);
}
- readonly type = 'cdata';
+ readonly kind = 'cdata';
}
export class Expansion extends NodeWithI18n {
@@ -83,6 +83,7 @@ export class Expansion extends NodeWithI18n {
override visit(visitor: Visitor, context: any): any {
return visitor.visitExpansion(this, context);
}
+ readonly kind = 'expansion';
}
export class ExpansionCase implements BaseNode {
@@ -98,7 +99,7 @@ export class ExpansionCase implements BaseNode {
return visitor.visitExpansionCase(this, context);
}
- readonly type = 'expansionCase';
+ readonly kind = 'expansionCase';
}
export class Attribute extends NodeWithI18n {
@@ -116,7 +117,7 @@ export class Attribute extends NodeWithI18n {
override visit(visitor: Visitor, context: any): any {
return visitor.visitAttribute(this, context);
}
- readonly type = 'attribute';
+ readonly kind = 'attribute';
// angular-html-parser: backwards compatibility for Prettier
get nameSpan() {
return this.keySpan;
@@ -142,7 +143,7 @@ export class Element extends NodeWithI18n {
override visit(visitor: Visitor, context: any): any {
return visitor.visitElement(this, context);
}
- readonly type = 'element';
+ readonly kind = 'element';
}
export class Comment implements BaseNode {
@@ -153,7 +154,7 @@ export class Comment implements BaseNode {
visit(visitor: Visitor, context: any): any {
return visitor.visitComment(this, context);
}
- readonly type = 'comment';
+ readonly kind = 'comment';
}
export class DocType implements BaseNode {
@@ -161,7 +162,7 @@ export class DocType implements BaseNode {
visit(visitor: Visitor, context: any): any {
return visitor.visitDocType(this, context);
}
- readonly type = 'docType';
+ readonly kind = 'docType';
}
export class Block extends NodeWithI18n {
@@ -182,7 +183,7 @@ export class Block extends NodeWithI18n {
return visitor.visitBlock(this, context);
}
- readonly type = 'block';
+ readonly kind = 'block';
}
export class Component extends NodeWithI18n {
@@ -206,7 +207,7 @@ export class Component extends NodeWithI18n {
return visitor.visitComponent(this, context);
}
- readonly type = 'component';
+ readonly kind = 'component';
}
export class Directive implements BaseNode {
@@ -222,7 +223,7 @@ export class Directive implements BaseNode {
return visitor.visitDirective(this, context);
}
- readonly type = 'directive';
+ readonly kind = 'directive';
}
export class BlockParameter implements BaseNode {
@@ -235,7 +236,7 @@ export class BlockParameter implements BaseNode {
return visitor.visitBlockParameter(this, context);
}
- readonly type = 'blockParameter';
+ readonly kind = 'blockParameter';
readonly startSourceSpan: null = null;
readonly endSourceSpan: null = null;
}
@@ -253,7 +254,7 @@ export class LetDeclaration implements BaseNode {
return visitor.visitLetDeclaration(this, context);
}
- readonly type = 'letDeclaration';
+ readonly kind = 'letDeclaration';
readonly startSourceSpan: null = null;
readonly endSourceSpan: null = null;
}