-
-
Notifications
You must be signed in to change notification settings - Fork 185
Expand file tree
/
Copy pathindex.ts
More file actions
103 lines (101 loc) · 5.92 KB
/
index.ts
File metadata and controls
103 lines (101 loc) · 5.92 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
import * as ts from "typescript";
import { FunctionVisitor, Visitors } from "../context";
import { transformElementAccessExpression, transformPropertyAccessExpression, transformQualifiedName } from "./access";
import { transformBinaryExpression } from "./binary-expression";
import { transformBlock } from "./block";
import { transformBreakStatement, transformContinueStatement } from "./break-continue";
import { transformCallExpression } from "./call";
import { transformSpreadElement } from "./spread";
import {
transformClassAsExpression,
transformClassDeclaration,
transformSuperExpression,
transformThisExpression,
} from "./class";
import { transformNewExpression } from "./class/new";
import { transformConditionalExpression, transformIfStatement } from "./conditional";
import { transformDeleteExpression } from "./delete";
import { transformEnumDeclaration } from "./enum";
import { transformThrowStatement, transformTryStatement } from "./errors";
import { transformExpressionStatement } from "./expression-statement";
import { transformFunctionDeclaration, transformFunctionLikeDeclaration, transformYieldExpression } from "./function";
import { transformIdentifierExpression } from "./identifier";
import { literalVisitors } from "./literal";
import { transformDoStatement, transformWhileStatement } from "./loops/do-while";
import { transformForStatement } from "./loops/for";
import { transformForInStatement } from "./loops/for-in";
import { transformForOfStatement } from "./loops/for-of";
import { transformExportAssignment, transformExportDeclaration } from "./modules/export";
import {
transformExternalModuleReference,
transformImportDeclaration,
transformImportEqualsDeclaration,
} from "./modules/import";
import { transformModuleDeclaration } from "./namespace";
import { transformReturnStatement } from "./return";
import { transformSourceFileNode } from "./sourceFile";
import { transformSwitchStatement } from "./switch";
import { transformTaggedTemplateExpression, transformTemplateExpression } from "./template";
import { transformTypeOfExpression } from "./typeof";
import { typescriptVisitors } from "./typescript";
import { transformPostfixUnaryExpression, transformPrefixUnaryExpression } from "./unary-expression";
import { transformVariableStatement } from "./variable-declaration";
import { transformAwaitExpression } from "./async-await";
import { transformVoidExpression } from "./void";
const transformEmptyStatement: FunctionVisitor<ts.EmptyStatement> = () => undefined;
const transformParenthesizedExpression: FunctionVisitor<ts.ParenthesizedExpression> = (node, context) =>
context.transformExpression(node.expression);
export const standardVisitors: Visitors = {
...literalVisitors,
...typescriptVisitors,
[ts.SyntaxKind.ArrowFunction]: transformFunctionLikeDeclaration,
[ts.SyntaxKind.AwaitExpression]: transformAwaitExpression,
[ts.SyntaxKind.BinaryExpression]: transformBinaryExpression,
[ts.SyntaxKind.Block]: transformBlock,
[ts.SyntaxKind.BreakStatement]: transformBreakStatement,
[ts.SyntaxKind.CallExpression]: transformCallExpression,
[ts.SyntaxKind.ClassDeclaration]: transformClassDeclaration,
[ts.SyntaxKind.ClassExpression]: transformClassAsExpression,
[ts.SyntaxKind.ConditionalExpression]: transformConditionalExpression,
[ts.SyntaxKind.ContinueStatement]: transformContinueStatement,
[ts.SyntaxKind.DeleteExpression]: transformDeleteExpression,
[ts.SyntaxKind.DoStatement]: transformDoStatement,
[ts.SyntaxKind.ElementAccessExpression]: transformElementAccessExpression,
[ts.SyntaxKind.EmptyStatement]: transformEmptyStatement,
[ts.SyntaxKind.EnumDeclaration]: transformEnumDeclaration,
[ts.SyntaxKind.ExportAssignment]: transformExportAssignment,
[ts.SyntaxKind.ExportDeclaration]: transformExportDeclaration,
[ts.SyntaxKind.ExpressionStatement]: transformExpressionStatement,
[ts.SyntaxKind.ExternalModuleReference]: transformExternalModuleReference,
[ts.SyntaxKind.ForInStatement]: transformForInStatement,
[ts.SyntaxKind.ForOfStatement]: transformForOfStatement,
[ts.SyntaxKind.ForStatement]: transformForStatement,
[ts.SyntaxKind.FunctionDeclaration]: transformFunctionDeclaration,
[ts.SyntaxKind.FunctionExpression]: transformFunctionLikeDeclaration,
[ts.SyntaxKind.Identifier]: transformIdentifierExpression,
[ts.SyntaxKind.IfStatement]: transformIfStatement,
[ts.SyntaxKind.ImportDeclaration]: transformImportDeclaration,
[ts.SyntaxKind.ImportEqualsDeclaration]: transformImportEqualsDeclaration,
[ts.SyntaxKind.ModuleDeclaration]: transformModuleDeclaration,
[ts.SyntaxKind.NewExpression]: transformNewExpression,
[ts.SyntaxKind.ParenthesizedExpression]: transformParenthesizedExpression,
[ts.SyntaxKind.PostfixUnaryExpression]: transformPostfixUnaryExpression,
[ts.SyntaxKind.PrefixUnaryExpression]: transformPrefixUnaryExpression,
[ts.SyntaxKind.PropertyAccessExpression]: transformPropertyAccessExpression,
[ts.SyntaxKind.QualifiedName]: transformQualifiedName,
[ts.SyntaxKind.ReturnStatement]: transformReturnStatement,
[ts.SyntaxKind.SourceFile]: transformSourceFileNode,
[ts.SyntaxKind.SpreadElement]: transformSpreadElement,
[ts.SyntaxKind.SuperKeyword]: transformSuperExpression,
[ts.SyntaxKind.SwitchStatement]: transformSwitchStatement,
[ts.SyntaxKind.TaggedTemplateExpression]: transformTaggedTemplateExpression,
[ts.SyntaxKind.TemplateExpression]: transformTemplateExpression,
[ts.SyntaxKind.ThisKeyword]: transformThisExpression,
[ts.SyntaxKind.ThrowStatement]: transformThrowStatement,
[ts.SyntaxKind.TryStatement]: transformTryStatement,
[ts.SyntaxKind.TypeOfExpression]: transformTypeOfExpression,
[ts.SyntaxKind.VariableStatement]: transformVariableStatement,
[ts.SyntaxKind.WhileStatement]: transformWhileStatement,
[ts.SyntaxKind.YieldExpression]: transformYieldExpression,
[ts.SyntaxKind.VoidExpression]: transformVoidExpression,
};