|
1 | | -import type * as angular from '@angular/compiler'; |
2 | | -import type * as babel from '@babel/types'; |
| 1 | +import { type AstVisitor as AngularAstVisitor } from '@angular/compiler'; |
3 | 2 |
|
4 | | -import { type Transformer } from '../transform-ast.ts'; |
5 | | -import type { NGChainedExpression, NGPipeExpression } from '../types.ts'; |
6 | | -import { visitBinary } from './transform-binary-expression.ts'; |
7 | | -import { visitCall, visitSafeCall } from './transform-call-expression.ts'; |
8 | | -import { visitConditional } from './transform-conditional-expression.ts'; |
9 | | -import { |
10 | | - visitLiteralPrimitive, |
11 | | - visitRegularExpressionLiteral, |
12 | | -} from './transform-literal.ts'; |
13 | | -import { |
14 | | - visitKeyedRead, |
15 | | - visitPropertyRead, |
16 | | - visitSafeKeyedRead, |
17 | | - visitSafePropertyRead, |
18 | | -} from './transform-member-expression.ts'; |
19 | | -import { visitLiteralMap } from './transform-object-expression.ts'; |
20 | | -import { |
21 | | - visitTaggedTemplateLiteral, |
22 | | - visitTemplateLiteral, |
23 | | - visitTemplateLiteralElement, |
24 | | -} from './transform-template-literal.ts'; |
25 | | -import { |
26 | | - visitPrefixNot, |
27 | | - visitTypeofExpression, |
28 | | - visitUnary, |
29 | | - visitVoidExpression, |
30 | | -} from './transform-unary-expression.ts'; |
31 | | -import { |
32 | | - visitASTWithSource, |
33 | | - visitImplicitReceiver, |
34 | | -} from './transform-unexpected-node.ts'; |
| 3 | +import * as transforms from './transforms.ts'; |
35 | 4 |
|
36 | | -type AstVisitor = Required<Omit<angular.AstVisitor, 'visit'>>; |
| 5 | +type AstVisitor = Required<Omit<AngularAstVisitor, 'visit'>>; |
37 | 6 |
|
38 | | -export const transformVisitor: AstVisitor = { |
39 | | - visitCall, |
40 | | - visitSafeCall, |
41 | | - |
42 | | - visitKeyedRead, |
43 | | - visitPropertyRead, |
44 | | - visitSafeKeyedRead, |
45 | | - visitSafePropertyRead, |
46 | | - |
47 | | - visitPrefixNot, |
48 | | - visitTypeofExpression, |
49 | | - visitVoidExpression, |
50 | | - visitUnary, |
51 | | - |
52 | | - visitBinary, |
53 | | - |
54 | | - visitLiteralMap, |
55 | | - |
56 | | - visitLiteralPrimitive, |
57 | | - visitRegularExpressionLiteral, |
58 | | - |
59 | | - visitTaggedTemplateLiteral, |
60 | | - visitTemplateLiteral, |
61 | | - visitTemplateLiteralElement, |
62 | | - |
63 | | - visitConditional, |
64 | | - |
65 | | - visitPipe( |
66 | | - node: angular.BindingPipe, |
67 | | - transformer: Transformer, |
68 | | - ): Omit<NGPipeExpression, 'start' | 'end' | 'range'> { |
69 | | - return { |
70 | | - type: 'NGPipeExpression', |
71 | | - left: transformer.transformChild<babel.Expression>(node.exp), |
72 | | - right: transformer.createNode<babel.Identifier>( |
73 | | - { type: 'Identifier', name: node.name }, |
74 | | - node.nameSpan, |
75 | | - ), |
76 | | - arguments: transformer.transformChildren<babel.Expression>(node.args), |
77 | | - }; |
78 | | - }, |
79 | | - |
80 | | - visitChain( |
81 | | - node: angular.Chain, |
82 | | - transformer: Transformer, |
83 | | - ): Omit<NGChainedExpression, 'start' | 'end' | 'range'> { |
84 | | - return { |
85 | | - type: 'NGChainedExpression', |
86 | | - expressions: transformer.transformChildren<babel.Expression>( |
87 | | - node.expressions, |
88 | | - ), |
89 | | - }; |
90 | | - }, |
91 | | - |
92 | | - visitThisReceiver: (): babel.ThisExpression => ({ type: 'ThisExpression' }), |
93 | | - |
94 | | - visitLiteralArray: ( |
95 | | - node: angular.LiteralArray, |
96 | | - transformer: Transformer, |
97 | | - ): babel.ArrayExpression => ({ |
98 | | - type: 'ArrayExpression', |
99 | | - elements: transformer.transformChildren<babel.Expression>(node.expressions), |
100 | | - }), |
101 | | - |
102 | | - visitNonNullAssert: ( |
103 | | - node: angular.NonNullAssert, |
104 | | - transformer: Transformer, |
105 | | - ): babel.TSNonNullExpression => ({ |
106 | | - type: 'TSNonNullExpression', |
107 | | - expression: transformer.transformChild<babel.Expression>(node.expression), |
108 | | - }), |
109 | | - |
110 | | - visitParenthesizedExpression( |
111 | | - node: angular.ParenthesizedExpression, |
112 | | - transformer: Transformer, |
113 | | - ) { |
114 | | - return transformer.transformChild(node.expression); |
115 | | - }, |
116 | | - |
117 | | - visitInterpolation(node: angular.Interpolation, transformer: Transformer) { |
118 | | - const { expressions } = node; |
119 | | - |
120 | | - /* c8 ignore next 3 @preserve */ |
121 | | - if (expressions.length !== 1) { |
122 | | - throw new Error("Unexpected 'Interpolation'"); |
123 | | - } |
124 | | - |
125 | | - return transformer.transformChild(expressions[0]); |
126 | | - }, |
127 | | - |
128 | | - visitASTWithSource, |
129 | | - visitImplicitReceiver, |
130 | | -}; |
| 7 | +export const transformVisitor: AstVisitor = transforms; |
0 commit comments