Skip to content

Commit 2e2a468

Browse files
committed
WIP
1 parent 3af0e62 commit 2e2a468

File tree

2 files changed

+145
-1
lines changed

2 files changed

+145
-1
lines changed

def/ts.js

+143
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,143 @@
1+
module.exports = function (fork) {
2+
fork.use(require("./es7"));
3+
4+
var types = fork.use(require("../lib/types"));
5+
var def = types.Type.def;
6+
var or = types.Type.or;
7+
var defaults = fork.use(require("../lib/shared")).defaults;
8+
9+
// Ambient
10+
def("TSAmbientVariableDefinition")
11+
.bases("VariableDeclaration");
12+
13+
def("TSInterfaceDeclaration")
14+
.bases("Declaration")
15+
.build("name", "typeParameters", "members")
16+
.field("name", def("Identifier"))
17+
.field("typeParameters",
18+
or(def("TypeParameterDeclaration"), null),
19+
defaults["null"])
20+
.field("members", [def("TSSignature")])
21+
// .field("body", def("ObjectTypeAnnotation"))
22+
// .field("extends", [def("InterfaceExtends")]);
23+
24+
def("TSKeyword")
25+
.bases("Node")
26+
27+
def("TSType")
28+
.bases("Node")
29+
30+
def("TypeElement")
31+
.bases("Node")
32+
33+
def("TSSignature")
34+
.bases("TypeElement")
35+
.build("typeParameters", "parameters", "typeAnnotation")
36+
.field("typeParameters",
37+
or(def("TypeParameterDeclaration"), null),
38+
defaults["null"])
39+
.field("parameters", [def("Identifier")])
40+
.field("typeAnnotation", def("TSType"));
41+
42+
def("TSAnyKeyword")
43+
.bases("TSKeyword")
44+
45+
def("TSBooleanKeyword")
46+
.bases("TSKeyword")
47+
48+
def("TSNeverKeyword")
49+
.bases("TSKeyword")
50+
51+
def("TSNumberKeyword")
52+
.bases("TSKeyword")
53+
54+
def("TSObjectKeyword")
55+
.bases("TSKeyword")
56+
57+
def("TSReadonlyKeyword")
58+
.bases("TSKeyword")
59+
60+
def("TSStringKeyword")
61+
.bases("TSKeyword")
62+
63+
def("TSSymbolKeyword")
64+
.bases("TSKeyword")
65+
66+
def("TSUndefinedKeyword")
67+
.bases("TSKeyword")
68+
69+
def("TSVoidKeyword")
70+
.bases("TSKeyword")
71+
72+
73+
// Types
74+
def("TSConstructorType")
75+
.bases("TSType")
76+
77+
def("TSFunctionType")
78+
.bases("TSType")
79+
80+
def("TSIntersectionType")
81+
.bases("TSType")
82+
.build("types")
83+
.field("types", [def("TSType")])
84+
85+
def("TSParenthesizedType")
86+
.bases("TSType")
87+
88+
def("TSThisType")
89+
.bases("TSType")
90+
91+
def("TSUnionType")
92+
.bases("TSType")
93+
.build("types")
94+
.field("types", [def("TSType")])
95+
96+
def("TSTypeLiteral")
97+
.bases("TSType")
98+
.build("members")
99+
.field("members", [def("TSSignature")])
100+
101+
def("TSTypeOperator")
102+
.bases("TSType")
103+
104+
def("TSTypeReference")
105+
.bases("TSType")
106+
.build("typeName", "typeParameters")
107+
.field("typeName", def("Identifier"))
108+
.field("typeParameters", def("TSType"))
109+
110+
def("TSFirstTypeNode")
111+
.bases("Node")
112+
.build("id", "typeAnnotation")
113+
.field("id", def("Identifier"))
114+
.field("typeAnnotation", def("TSType"));
115+
116+
// Signatures
117+
def("TSCallSignature")
118+
.bases("TSSignature")
119+
.build("typeParameters", "parameters", "typeAnnotation")
120+
121+
def("TSConstructSignature")
122+
.bases("TSSignature")
123+
.build("typeParameters", "parameters", "typeAnnotation")
124+
125+
def("TSIndexSignature")
126+
.bases("TSSignature")
127+
.build("typeParameters", "parameters", "typeAnnotation")
128+
129+
def("TSMethodSignature")
130+
.bases("TSSignature")
131+
.build("name", "typeParameters", "parameters", "typeAnnotation")
132+
.field("name", def("Identifier"))
133+
134+
def("TSPropertySignature")
135+
.bases("TSSignature")
136+
.build("name", "typeAnnotation", "initializer")
137+
.field("name", def("Identifier"))
138+
.field("typeAnnotation", def("TSType"))
139+
.field("initializer", def("Expression"));
140+
141+
def("TSAsExpression")
142+
.bases("Expression")
143+
};

main.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,6 @@ module.exports = require('./fork')([
1313
require("./def/flow"),
1414
require("./def/esprima"),
1515
require("./def/babel"),
16-
require("./def/babel6")
16+
require("./def/babel6"),
17+
require("./def/ts")
1718
]);

0 commit comments

Comments
 (0)