11import * as angular from '@angular/compiler' ;
22import type * as babel from '@babel/types' ;
33
4- import { type Transformer } from './transform-ast.ts' ;
5- import { visitCall , visitSafeCall } from './transforms/transform-call.ts' ;
4+ import { type Transformer } from '../transform-ast.ts' ;
5+ import type { NGChainedExpression , NGPipeExpression } from '../types.ts' ;
6+ import { visitCall , visitSafeCall } from './transform-call.ts' ;
7+ import {
8+ visitLiteralPrimitive ,
9+ visitRegularExpressionLiteral ,
10+ } from './transform-literal.ts' ;
611import {
712 visitKeyedRead ,
813 visitPropertyRead ,
914 visitSafeKeyedRead ,
1015 visitSafePropertyRead ,
11- } from './transforms/transform-member-expression.ts' ;
16+ } from './transform-member-expression.ts' ;
17+ import { visitLiteralMap } from './transform-object-expression.ts' ;
1218import {
1319 visitPrefixNot ,
1420 visitTypeofExpression ,
1521 visitUnary ,
1622 visitVoidExpression ,
17- } from './transforms/transform-unary-expression.ts' ;
18- import type {
19- NGChainedExpression ,
20- NGNode ,
21- NGPipeExpression ,
22- RawNGSpan ,
23- } from './types.ts' ;
23+ } from './transform-unary-expression.ts' ;
2424
2525type AstVisitor = Required <
2626 Omit < angular . AstVisitor , 'visit' | 'visitASTWithSource' >
@@ -40,6 +40,11 @@ export const transformVisitor: AstVisitor = {
4040 visitVoidExpression,
4141 visitUnary,
4242
43+ visitLiteralMap,
44+
45+ visitLiteralPrimitive,
46+ visitRegularExpressionLiteral,
47+
4348 visitBinary ( node : angular . Binary , transformer : Transformer ) {
4449 const { operation : operator } = node ;
4550 const [ left , right ] = transformer . transformChildren < babel . Expression > ( [
@@ -125,94 +130,6 @@ export const transformVisitor: AstVisitor = {
125130 } ) ;
126131 } ,
127132
128- visitLiteralMap ( node : angular . LiteralMap , transformer : Transformer ) {
129- const { keys, values } = node ;
130- const createChild = < T extends NGNode > (
131- properties : Partial < T > & { type : T [ 'type' ] } ,
132- location : angular . AST | RawNGSpan | [ number , number ] = node ,
133- ) =>
134- transformer . create ( properties , location , [
135- node ,
136- ...transformer . ancestors ,
137- ] ) ;
138-
139- return transformer . createNode < babel . ObjectExpression > ( {
140- type : 'ObjectExpression' ,
141- properties : keys . map ( ( keyNode , index ) => {
142- const valueNode = values [ index ] ;
143- const shorthand = Boolean ( keyNode . isShorthandInitialized ) ;
144- const key = createChild < babel . Identifier | babel . StringLiteral > (
145- keyNode . quoted
146- ? { type : 'StringLiteral' , value : keyNode . key }
147- : { type : 'Identifier' , name : keyNode . key } ,
148- keyNode . sourceSpan ,
149- ) ;
150-
151- return createChild < babel . ObjectPropertyNonComputed > (
152- {
153- type : 'ObjectProperty' ,
154- key,
155- value : transformer . transformChild < babel . Expression > ( valueNode ) ,
156- shorthand,
157- computed : false ,
158- // @ts -expect-error -- Missed in types
159- method : false ,
160- } ,
161- [ keyNode . sourceSpan . start , valueNode . sourceSpan . end ] ,
162- ) ;
163- } ) ,
164- } ) ;
165- } ,
166-
167- visitLiteralPrimitive (
168- node : angular . LiteralPrimitive ,
169- transformer : Transformer ,
170- ) {
171- const { value } = node ;
172- switch ( typeof value ) {
173- case 'boolean' :
174- return transformer . createNode < babel . BooleanLiteral > ( {
175- type : 'BooleanLiteral' ,
176- value,
177- } ) ;
178- case 'number' :
179- return transformer . createNode < babel . NumericLiteral > ( {
180- type : 'NumericLiteral' ,
181- value,
182- } ) ;
183- case 'object' :
184- return transformer . createNode < babel . NullLiteral > ( {
185- type : 'NullLiteral' ,
186- } ) ;
187- case 'string' :
188- return transformer . createNode < babel . StringLiteral > ( {
189- type : 'StringLiteral' ,
190- value,
191- } ) ;
192- case 'undefined' :
193- return transformer . createNode < babel . Identifier > ( {
194- type : 'Identifier' ,
195- name : 'undefined' ,
196- } ) ;
197- /* c8 ignore next 4 */
198- default :
199- throw new Error (
200- `Unexpected LiteralPrimitive value type ${ typeof value } ` ,
201- ) ;
202- }
203- } ,
204-
205- visitRegularExpressionLiteral (
206- node : angular . RegularExpressionLiteral ,
207- transformer : Transformer ,
208- ) {
209- return transformer . createNode < babel . RegExpLiteral > ( {
210- type : 'RegExpLiteral' ,
211- pattern : node . body ,
212- flags : node . flags ?? '' ,
213- } ) ;
214- } ,
215-
216133 visitNonNullAssert ( node : angular . NonNullAssert , transformer : Transformer ) {
217134 return transformer . createNode < babel . TSNonNullExpression > ( {
218135 type : 'TSNonNullExpression' ,
0 commit comments