Skip to content

Commit 1c45013

Browse files
committed
Minor refactoring
1 parent dd335f8 commit 1c45013

26 files changed

+218
-188
lines changed

src/ast-transform-visitors/array-expression.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,7 @@ export const visitLiteralArray = (
88
transformer: NodeTransformer,
99
): babel.ArrayExpression => ({
1010
type: 'ArrayExpression',
11-
elements: transformer.transformChildren<babel.Expression>(node.expressions),
11+
elements: transformer.transformChildren<
12+
babel.Expression | babel.SpreadElement
13+
>(node.expressions),
1214
});
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
import { type ASTWithSource } from '@angular/compiler';
2+
import type * as babel from '@babel/types';
23

34
import { type NodeTransformer } from '../ast-transform/node-transformer.ts';
45

56
export const visitASTWithSource = (
67
node: ASTWithSource,
78
transformer: NodeTransformer,
8-
) => transformer.transformChild(node.ast);
9+
) => transformer.transformChild<babel.Expression>(node.ast);

src/ast-transform-visitors/binary-expression.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ export const visitBinary = (
3333
if (isAssignmentOperator(operator)) {
3434
return {
3535
type: 'AssignmentExpression',
36-
left: left as babel.MemberExpression,
36+
left: left as babel.AssignmentExpression['left'],
3737
right,
3838
operator: operator,
3939
};

src/ast-transform-visitors/chained-expression.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { type Chain } from '@angular/compiler';
22
import type * as babel from '@babel/types';
33

4-
import type { NGChainedExpression } from '../types.ts';
54
import { type NodeTransformer } from '../ast-transform/node-transformer.ts';
5+
import type { NGChainedExpression } from './node-types.ts';
66

77
export const visitChain = (
88
node: Chain,

src/ast-transform-visitors/interpolation.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { type Interpolation } from '@angular/compiler';
2+
import type * as babel from '@babel/types';
23

34
import { type NodeTransformer } from '../ast-transform/node-transformer.ts';
45

@@ -13,5 +14,5 @@ export const visitInterpolation = (
1314
throw new Error("Unexpected 'Interpolation'");
1415
}
1516

16-
return transformer.transformChild(expressions[0]);
17+
return transformer.transformChild<babel.Expression>(expressions[0]);
1718
};

src/ast-transform-visitors/member-expression.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ const transformMemberExpression =
5959
} else {
6060
const isImplicitReceiver = receiver instanceof ImplicitReceiver;
6161
const { name, nameSpan } = node as PropertyRead | SafePropertyRead;
62-
property = transformer.createNode<babel.Identifier>(
62+
property = transformer.create<babel.Identifier>(
6363
{ type: 'Identifier', name: name },
6464
nameSpan,
6565
isImplicitReceiver ? transformer.ancestors : [],
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import type * as babel from '@babel/types';
2+
3+
export type Range = [number, number];
4+
export type StartEnd = { start: number; end: number };
5+
6+
export type LocationInformation = StartEnd & {
7+
range: Range;
8+
extra?: any;
9+
};
10+
11+
export type NGBaseNode = LocationInformation & {
12+
type: string;
13+
};
14+
15+
export type CommentLine = babel.CommentLine & LocationInformation;
16+
17+
export type NGOwnNode =
18+
| NGEmptyExpression
19+
| NGPipeExpression
20+
| NGChainedExpression;
21+
22+
export type NGNode = babel.Node | NGOwnNode;
23+
24+
export interface NGEmptyExpression extends NGBaseNode {
25+
type: 'NGEmptyExpression';
26+
}
27+
28+
export interface NGPipeExpression extends NGBaseNode {
29+
type: 'NGPipeExpression';
30+
left: babel.Expression;
31+
right: babel.Identifier;
32+
arguments: babel.Expression[];
33+
}
34+
35+
export interface NGChainedExpression extends NGBaseNode {
36+
type: 'NGChainedExpression';
37+
expressions: NGNode[];
38+
}

src/ast-transform-visitors/object-expression.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import type * as angular from '@angular/compiler';
22
import type * as babel from '@babel/types';
33

4-
import { type RawLocationInformation } from '../source.ts';
5-
import type { NGNode, Range } from '../types.ts';
64
import { type NodeTransformer } from '../ast-transform/node-transformer.ts';
5+
import { type RawLocationInformation } from '../source.ts';
6+
import type { NGNode, Range } from './node-types.ts';
77

88
export const visitLiteralMap = (
99
node: angular.LiteralMap,
@@ -14,7 +14,10 @@ export const visitLiteralMap = (
1414
properties: Partial<T> & { type: T['type'] },
1515
location: RawLocationInformation = node,
1616
) =>
17-
transformer.create(properties, location, [node, ...transformer.ancestors]);
17+
transformer.create<T>(properties, location, [
18+
node,
19+
...transformer.ancestors,
20+
]);
1821

1922
return {
2023
type: 'ObjectExpression',
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
import { type ParenthesizedExpression } from '@angular/compiler';
2+
import type * as babel from '@babel/types';
23

34
import { type NodeTransformer } from '../ast-transform/node-transformer.ts';
45

56
export const visitParenthesizedExpression = (
67
node: ParenthesizedExpression,
78
transformer: NodeTransformer,
8-
) => transformer.transformChild(node.expression);
9+
) => transformer.transformChild<babel.Expression>(node.expression);

src/ast-transform-visitors/pipe-expression.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
import { type BindingPipe } from '@angular/compiler';
22
import type * as babel from '@babel/types';
33

4-
import type { NGPipeExpression } from '../types.ts';
54
import { type NodeTransformer } from '../ast-transform/node-transformer.ts';
5+
import { type IncompleteNode } from '../source.ts';
6+
import type { NGPipeExpression } from '../types.ts';
67

78
export const visitPipe = (
89
node: BindingPipe,
910
transformer: NodeTransformer,
10-
): Omit<NGPipeExpression, 'start' | 'end' | 'range'> => ({
11+
): IncompleteNode<NGPipeExpression> => ({
1112
type: 'NGPipeExpression',
1213
left: transformer.transformChild<babel.Expression>(node.exp),
13-
right: transformer.createNode<babel.Identifier>(
14+
right: transformer.create<babel.Identifier>(
1415
{ type: 'Identifier', name: node.name },
1516
node.nameSpan,
1617
),

0 commit comments

Comments
 (0)