ast-types 0.11.5 → 0.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/.travis.yml +2 -2
  2. package/def/babel-core.d.ts +2 -0
  3. package/def/babel-core.js +250 -290
  4. package/def/babel.d.ts +2 -0
  5. package/def/babel.js +12 -3
  6. package/def/core.d.ts +2 -0
  7. package/def/core.js +57 -126
  8. package/def/es-proposals.d.ts +2 -0
  9. package/def/es-proposals.js +34 -32
  10. package/def/es6.d.ts +2 -0
  11. package/def/es6.js +210 -253
  12. package/def/es7.d.ts +2 -0
  13. package/def/es7.js +35 -41
  14. package/def/esprima.d.ts +2 -0
  15. package/def/esprima.js +50 -71
  16. package/def/flow.d.ts +2 -0
  17. package/def/flow.js +289 -393
  18. package/def/jsx.d.ts +2 -0
  19. package/def/jsx.js +99 -125
  20. package/def/type-annotations.d.ts +7 -0
  21. package/def/type-annotations.js +42 -0
  22. package/def/typescript.d.ts +2 -0
  23. package/def/typescript.js +326 -444
  24. package/fork.d.ts +46 -0
  25. package/fork.js +40 -31
  26. package/gen/builders.d.ts +2539 -0
  27. package/gen/builders.js +2 -0
  28. package/gen/kinds.d.ts +259 -0
  29. package/gen/kinds.js +2 -0
  30. package/gen/namedTypes.d.ts +262 -0
  31. package/gen/namedTypes.js +2 -0
  32. package/gen/nodes.d.ts +1255 -0
  33. package/gen/nodes.js +2 -0
  34. package/gen/visitor.d.ts +263 -0
  35. package/gen/visitor.js +2 -0
  36. package/lib/equiv.d.ts +5 -0
  37. package/lib/equiv.js +19 -49
  38. package/lib/node-path.d.ts +22 -0
  39. package/lib/node-path.js +60 -125
  40. package/lib/path-visitor.d.ts +52 -0
  41. package/lib/path-visitor.js +117 -194
  42. package/lib/path.d.ts +25 -0
  43. package/lib/path.js +71 -107
  44. package/lib/scope.d.ts +26 -0
  45. package/lib/scope.js +100 -143
  46. package/lib/shared.d.ts +13 -0
  47. package/lib/shared.js +34 -31
  48. package/lib/types.d.ts +140 -0
  49. package/lib/types.js +584 -676
  50. package/main.d.ts +16 -0
  51. package/main.js +33 -18
  52. package/package.json +24 -7
  53. package/tsconfig.json +20 -0
  54. package/types.d.ts +6 -0
  55. package/types.js +2 -0
  56. package/def/e4x.js +0 -86
  57. package/def/mozilla.js +0 -42
package/def/typescript.js CHANGED
@@ -1,446 +1,328 @@
1
- module.exports = function (fork) {
2
- // Since TypeScript is parsed by Babylon, include the core Babylon types
3
- // but omit the Flow-related types.
4
- fork.use(require("./babel-core"));
5
-
6
- var types = fork.use(require("../lib/types"));
7
- var n = types.namedTypes;
8
- var def = types.Type.def;
9
- var or = types.Type.or;
10
- var defaults = fork.use(require("../lib/shared")).defaults;
11
- var StringLiteral = new types.Type(function (value, deep) {
12
- if (n.StringLiteral &&
13
- n.StringLiteral.check(value, deep)) {
14
- return true
15
- }
16
- if (n.Literal &&
17
- n.Literal.check(value, deep) &&
18
- typeof value.value === "string") {
19
- return true;
20
- }
21
- return false;
22
- }, "StringLiteral");
23
-
24
- def("TSType")
25
- .bases("Node");
26
-
27
- var IdOrQualifiedName = or(
28
- def("Identifier"),
1
+ "use strict";;
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ var babel_core_1 = __importDefault(require("./babel-core"));
7
+ var type_annotations_1 = __importDefault(require("./type-annotations"));
8
+ var types_1 = __importDefault(require("../lib/types"));
9
+ var shared_1 = __importDefault(require("../lib/shared"));
10
+ function default_1(fork) {
11
+ // Since TypeScript is parsed by Babylon, include the core Babylon types
12
+ // but omit the Flow-related types.
13
+ fork.use(babel_core_1.default);
14
+ fork.use(type_annotations_1.default);
15
+ var types = fork.use(types_1.default);
16
+ var n = types.namedTypes;
17
+ var def = types.Type.def;
18
+ var or = types.Type.or;
19
+ var defaults = fork.use(shared_1.default).defaults;
20
+ var StringLiteral = types.Type.from(function (value, deep) {
21
+ if (n.StringLiteral &&
22
+ n.StringLiteral.check(value, deep)) {
23
+ return true;
24
+ }
25
+ if (n.Literal &&
26
+ n.Literal.check(value, deep) &&
27
+ typeof value.value === "string") {
28
+ return true;
29
+ }
30
+ return false;
31
+ }, "StringLiteral");
32
+ def("TSType")
33
+ .bases("Node");
34
+ var IdOrQualifiedName = or(def("Identifier"), def("TSQualifiedName"));
35
+ def("TSTypeReference")
36
+ .bases("TSType")
37
+ .build("typeName", "typeParameters")
38
+ .field("typeName", IdOrQualifiedName)
39
+ .field("typeParameters", or(def("TSTypeParameterInstantiation"), null), defaults["null"]);
40
+ // An abstract (non-buildable) base type that provide a commonly-needed
41
+ // optional .typeParameters field.
42
+ def("TSHasOptionalTypeParameters")
43
+ .field("typeParameters", or(def("TSTypeParameterDeclaration"), null, void 0), defaults["null"]);
44
+ // An abstract (non-buildable) base type that provide a commonly-needed
45
+ // optional .typeAnnotation field.
46
+ def("TSHasOptionalTypeAnnotation")
47
+ .field("typeAnnotation", or(def("TSTypeAnnotation"), null), defaults["null"]);
29
48
  def("TSQualifiedName")
30
- );
31
-
32
- def("TSTypeReference")
33
- .bases("TSType")
34
- .build("typeName", "typeParameters")
35
- .field("typeName", IdOrQualifiedName)
36
- .field("typeParameters",
37
- or(def("TSTypeParameterInstantiation"), null),
38
- defaults["null"]);
39
-
40
- // An abstract (non-buildable) base type that provide a commonly-needed
41
- // optional .typeParameters field.
42
- def("TSHasOptionalTypeParameters")
43
- .field("typeParameters",
44
- or(def("TSTypeParameterDeclaration"), null),
45
- defaults["null"]);
46
-
47
- // An abstract (non-buildable) base type that provide a commonly-needed
48
- // optional .typeAnnotation field.
49
- def("TSHasOptionalTypeAnnotation")
50
- .field("typeAnnotation",
51
- or(def("TSTypeAnnotation"), null),
52
- defaults["null"]);
53
-
54
- def("TSQualifiedName")
55
- .bases("Node")
56
- .build("left", "right")
57
- .field("left", IdOrQualifiedName)
58
- .field("right", IdOrQualifiedName);
59
-
60
- def("TSAsExpression")
61
- .bases("Expression")
62
- .build("expression")
63
- .field("expression", def("Expression"))
64
- .field("typeAnnotation", def("TSType"))
65
- .field("extra",
66
- or({ parenthesized: Boolean }, null),
67
- defaults["null"]);
68
-
69
- def("TSNonNullExpression")
70
- .bases("Expression")
71
- .build("expression")
72
- .field("expression", def("Expression"));
73
-
74
- [ // Define all the simple keyword types.
75
- "TSAnyKeyword",
76
- "TSBooleanKeyword",
77
- "TSNeverKeyword",
78
- "TSNullKeyword",
79
- "TSNumberKeyword",
80
- "TSObjectKeyword",
81
- "TSStringKeyword",
82
- "TSSymbolKeyword",
83
- "TSUndefinedKeyword",
84
- "TSVoidKeyword",
85
- "TSThisType",
86
- ].forEach(keywordType => {
87
- def(keywordType)
88
- .bases("TSType")
89
- .build();
90
- });
91
-
92
- def("TSArrayType")
93
- .bases("TSType")
94
- .build("elementType")
95
- .field("elementType", def("TSType"))
96
-
97
- def("TSLiteralType")
98
- .bases("TSType")
99
- .build("literal")
100
- .field("literal",
101
- or(def("NumericLiteral"),
102
- def("StringLiteral"),
103
- def("BooleanLiteral")));
104
-
105
- ["TSUnionType",
106
- "TSIntersectionType",
107
- ].forEach(typeName => {
108
- def(typeName)
109
- .bases("TSType")
110
- .build("types")
111
- .field("types", [def("TSType")]);
112
- });
113
-
114
- def("TSConditionalType")
115
- .bases("TSType")
116
- .build("checkType", "extendsType", "trueType", "falseType")
117
- .field("checkType", def("TSType"))
118
- .field("extendsType", def("TSType"))
119
- .field("trueType", def("TSType"))
120
- .field("falseType", def("TSType"));
121
-
122
- def("TSInferType")
123
- .bases("TSType")
124
- .build("typeParameter")
125
- .field("typeParameter", def("TSTypeParameter"));
126
-
127
- def("TSParenthesizedType")
128
- .bases("TSType")
129
- .build("typeAnnotation")
130
- .field("typeAnnotation", def("TSType"));
131
-
132
- var ParametersType = [or(
133
- def("Identifier"),
134
- def("RestElement")
135
- )];
136
-
137
- ["TSFunctionType",
138
- "TSConstructorType",
139
- ].forEach(typeName => {
140
- def(typeName)
141
- .bases("TSType",
142
- "TSHasOptionalTypeParameters",
143
- "TSHasOptionalTypeAnnotation")
144
- .build("parameters")
145
- .field("parameters", ParametersType);
146
- });
147
-
148
- def("TSDeclareFunction")
149
- .bases("Declaration", "TSHasOptionalTypeParameters")
150
- .build("id", "params", "returnType")
151
- .field("declare", Boolean, defaults["false"])
152
- .field("async", Boolean, defaults["false"])
153
- .field("generator", Boolean, defaults["false"])
154
- .field("id", or(def("Identifier"), null), defaults["null"])
155
- .field("params", [def("Pattern")])
156
- // tSFunctionTypeAnnotationCommon
157
- .field("returnType",
158
- or(def("TSTypeAnnotation"),
159
- def("Noop"), // Still used?
160
- null),
161
- defaults["null"]);
162
-
163
- def("TSDeclareMethod")
164
- .bases("Declaration", "TSHasOptionalTypeParameters")
165
- .build("key", "params", "returnType")
166
- .field("async", Boolean, defaults["false"])
167
- .field("generator", Boolean, defaults["false"])
168
- .field("params", [def("Pattern")])
169
- // classMethodOrPropertyCommon
170
- .field("abstract", Boolean, defaults["false"])
171
- .field("accessibility",
172
- or("public", "private", "protected", void 0),
173
- defaults["undefined"])
174
- .field("static", Boolean, defaults["false"])
175
- .field("computed", Boolean, defaults["false"])
176
- .field("optional", Boolean, defaults["false"])
177
- .field("key", or(
178
- def("Identifier"),
179
- def("StringLiteral"),
180
- def("NumericLiteral"),
181
- // Only allowed if .computed is true.
182
- def("Expression")
183
- ))
184
- // classMethodOrDeclareMethodCommon
185
- .field("kind",
186
- or("get", "set", "method", "constructor"),
187
- function getDefault() { return "method"; })
188
- .field("access", // Not "accessibility"?
189
- or("public", "private", "protected", void 0),
190
- defaults["undefined"])
191
- .field("decorators",
192
- or([def("Decorator")], null),
193
- defaults["null"])
194
- // tSFunctionTypeAnnotationCommon
195
- .field("returnType",
196
- or(def("TSTypeAnnotation"),
197
- def("Noop"), // Still used?
198
- null),
199
- defaults["null"]);
200
-
201
- def("TSMappedType")
202
- .bases("TSType")
203
- .build("typeParameter", "typeAnnotation")
204
- .field("readonly", Boolean, defaults["false"])
205
- .field("typeParameter", def("TSTypeParameter"))
206
- .field("optional", Boolean, defaults["false"])
207
- .field("typeAnnotation",
208
- or(def("TSType"), null),
209
- defaults["null"]);
210
-
211
- def("TSTupleType")
212
- .bases("TSType")
213
- .build("elementTypes")
214
- .field("elementTypes", [def("TSType")]);
215
-
216
- def("TSIndexedAccessType")
217
- .bases("TSType")
218
- .build("objectType", "indexType")
219
- .field("objectType", def("TSType"))
220
- .field("indexType", def("TSType"))
221
-
222
- def("TSTypeOperator")
223
- .bases("TSType")
224
- .build("operator")
225
- .field("operator", String)
226
- .field("typeAnnotation", def("TSType"));
227
-
228
- def("TSTypeAnnotation")
229
- .bases("Node")
230
- .build("typeAnnotation")
231
- .field("typeAnnotation",
232
- or(def("TSType"),
233
- def("TSTypeAnnotation")));
234
-
235
- def("TSIndexSignature")
236
- .bases("Declaration", "TSHasOptionalTypeAnnotation")
237
- .build("parameters")
238
- .field("parameters", [def("Identifier")]) // Length === 1
239
- .field("readonly", Boolean, defaults["false"]);
240
-
241
- def("TSPropertySignature")
242
- .bases("Declaration", "TSHasOptionalTypeAnnotation")
243
- .build("key")
244
- .field("key", def("Expression"))
245
- .field("computed", Boolean, defaults["false"])
246
- .field("readonly", Boolean, defaults["false"])
247
- .field("optional", Boolean, defaults["false"])
248
- .field("initializer",
249
- or(def("Expression"), null),
250
- defaults["null"]);
251
-
252
- def("TSMethodSignature")
253
- .bases("Declaration",
254
- "TSHasOptionalTypeParameters",
255
- "TSHasOptionalTypeAnnotation")
256
- .build("key")
257
- .field("key", def("Expression"))
258
- .field("computed", Boolean, defaults["false"])
259
- .field("optional", Boolean, defaults["false"])
260
- .field("parameters", ParametersType);
261
-
262
- def("TSTypePredicate")
263
- .bases("TSTypeAnnotation")
264
- .build("parameterName", "typeAnnotation")
265
- .field("parameterName",
266
- or(def("Identifier"),
267
- def("TSThisType")))
268
- .field("typeAnnotation", def("TSTypeAnnotation"));
269
-
270
- ["TSCallSignatureDeclaration",
271
- "TSConstructSignatureDeclaration",
272
- ].forEach(typeName => {
273
- def(typeName)
274
- .bases("Declaration",
275
- "TSHasOptionalTypeParameters",
276
- "TSHasOptionalTypeAnnotation")
277
- .build("parameters")
278
- .field("parameters", ParametersType);
279
- });
280
-
281
- def("TSEnumMember")
282
- .bases("Node")
283
- .build("id", "initializer")
284
- .field("id", or(def("Identifier"), StringLiteral))
285
- .field("initializer",
286
- or(def("Expression"), null),
287
- defaults["null"]);
288
-
289
- def("TSTypeQuery")
290
- .bases("TSType")
291
- .build("exprName")
292
- .field("exprName", def("Identifier"));
293
-
294
- // Inferred from Babylon's tsParseTypeMember method.
295
- var TSTypeMember = or(
296
- def("TSCallSignatureDeclaration"),
297
- def("TSConstructSignatureDeclaration"),
298
- def("TSIndexSignature"),
299
- def("TSMethodSignature"),
49
+ .bases("Node")
50
+ .build("left", "right")
51
+ .field("left", IdOrQualifiedName)
52
+ .field("right", IdOrQualifiedName);
53
+ def("TSAsExpression")
54
+ .bases("Expression")
55
+ .build("expression")
56
+ .field("expression", def("Expression"))
57
+ .field("typeAnnotation", def("TSType"))
58
+ .field("extra", or({ parenthesized: Boolean }, null), defaults["null"]);
59
+ def("TSNonNullExpression")
60
+ .bases("Expression")
61
+ .build("expression")
62
+ .field("expression", def("Expression"));
63
+ [
64
+ "TSAnyKeyword",
65
+ "TSBooleanKeyword",
66
+ "TSNeverKeyword",
67
+ "TSNullKeyword",
68
+ "TSNumberKeyword",
69
+ "TSObjectKeyword",
70
+ "TSStringKeyword",
71
+ "TSSymbolKeyword",
72
+ "TSUndefinedKeyword",
73
+ "TSUnknownKeyword",
74
+ "TSVoidKeyword",
75
+ "TSThisType",
76
+ ].forEach(function (keywordType) {
77
+ def(keywordType)
78
+ .bases("TSType")
79
+ .build();
80
+ });
81
+ def("TSArrayType")
82
+ .bases("TSType")
83
+ .build("elementType")
84
+ .field("elementType", def("TSType"));
85
+ def("TSLiteralType")
86
+ .bases("TSType")
87
+ .build("literal")
88
+ .field("literal", or(def("NumericLiteral"), def("StringLiteral"), def("BooleanLiteral")));
89
+ ["TSUnionType",
90
+ "TSIntersectionType",
91
+ ].forEach(function (typeName) {
92
+ def(typeName)
93
+ .bases("TSType")
94
+ .build("types")
95
+ .field("types", [def("TSType")]);
96
+ });
97
+ def("TSConditionalType")
98
+ .bases("TSType")
99
+ .build("checkType", "extendsType", "trueType", "falseType")
100
+ .field("checkType", def("TSType"))
101
+ .field("extendsType", def("TSType"))
102
+ .field("trueType", def("TSType"))
103
+ .field("falseType", def("TSType"));
104
+ def("TSInferType")
105
+ .bases("TSType")
106
+ .build("typeParameter")
107
+ .field("typeParameter", def("TSTypeParameter"));
108
+ def("TSParenthesizedType")
109
+ .bases("TSType")
110
+ .build("typeAnnotation")
111
+ .field("typeAnnotation", def("TSType"));
112
+ var ParametersType = [or(def("Identifier"), def("RestElement"), def("ObjectPattern"))];
113
+ ["TSFunctionType",
114
+ "TSConstructorType",
115
+ ].forEach(function (typeName) {
116
+ def(typeName)
117
+ .bases("TSType", "TSHasOptionalTypeParameters", "TSHasOptionalTypeAnnotation")
118
+ .build("parameters")
119
+ .field("parameters", ParametersType);
120
+ });
121
+ def("TSDeclareFunction")
122
+ .bases("Declaration", "TSHasOptionalTypeParameters")
123
+ .build("id", "params", "returnType")
124
+ .field("declare", Boolean, defaults["false"])
125
+ .field("async", Boolean, defaults["false"])
126
+ .field("generator", Boolean, defaults["false"])
127
+ .field("id", or(def("Identifier"), null), defaults["null"])
128
+ .field("params", [def("Pattern")])
129
+ // tSFunctionTypeAnnotationCommon
130
+ .field("returnType", or(def("TSTypeAnnotation"), def("Noop"), // Still used?
131
+ null), defaults["null"]);
132
+ def("TSDeclareMethod")
133
+ .bases("Declaration", "TSHasOptionalTypeParameters")
134
+ .build("key", "params", "returnType")
135
+ .field("async", Boolean, defaults["false"])
136
+ .field("generator", Boolean, defaults["false"])
137
+ .field("params", [def("Pattern")])
138
+ // classMethodOrPropertyCommon
139
+ .field("abstract", Boolean, defaults["false"])
140
+ .field("accessibility", or("public", "private", "protected", void 0), defaults["undefined"])
141
+ .field("static", Boolean, defaults["false"])
142
+ .field("computed", Boolean, defaults["false"])
143
+ .field("optional", Boolean, defaults["false"])
144
+ .field("key", or(def("Identifier"), def("StringLiteral"), def("NumericLiteral"),
145
+ // Only allowed if .computed is true.
146
+ def("Expression")))
147
+ // classMethodOrDeclareMethodCommon
148
+ .field("kind", or("get", "set", "method", "constructor"), function getDefault() { return "method"; })
149
+ .field("access", // Not "accessibility"?
150
+ or("public", "private", "protected", void 0), defaults["undefined"])
151
+ .field("decorators", or([def("Decorator")], null), defaults["null"])
152
+ // tSFunctionTypeAnnotationCommon
153
+ .field("returnType", or(def("TSTypeAnnotation"), def("Noop"), // Still used?
154
+ null), defaults["null"]);
155
+ def("TSMappedType")
156
+ .bases("TSType")
157
+ .build("typeParameter", "typeAnnotation")
158
+ .field("readonly", or(Boolean, "+", "-"), defaults["false"])
159
+ .field("typeParameter", def("TSTypeParameter"))
160
+ .field("optional", or(Boolean, "+", "-"), defaults["false"])
161
+ .field("typeAnnotation", or(def("TSType"), null), defaults["null"]);
162
+ def("TSTupleType")
163
+ .bases("TSType")
164
+ .build("elementTypes")
165
+ .field("elementTypes", [def("TSType")]);
166
+ def("TSRestType")
167
+ .bases("TSType")
168
+ .build("typeAnnotation")
169
+ .field("typeAnnotation", def("TSType"));
170
+ def("TSOptionalType")
171
+ .bases("TSType")
172
+ .build("typeAnnotation")
173
+ .field("typeAnnotation", def("TSType"));
174
+ def("TSIndexedAccessType")
175
+ .bases("TSType")
176
+ .build("objectType", "indexType")
177
+ .field("objectType", def("TSType"))
178
+ .field("indexType", def("TSType"));
179
+ def("TSTypeOperator")
180
+ .bases("TSType")
181
+ .build("operator")
182
+ .field("operator", String)
183
+ .field("typeAnnotation", def("TSType"));
184
+ def("TSTypeAnnotation")
185
+ .bases("Node")
186
+ .build("typeAnnotation")
187
+ .field("typeAnnotation", or(def("TSType"), def("TSTypeAnnotation")));
188
+ def("TSIndexSignature")
189
+ .bases("Declaration", "TSHasOptionalTypeAnnotation")
190
+ .build("parameters", "typeAnnotation")
191
+ .field("parameters", [def("Identifier")]) // Length === 1
192
+ .field("readonly", Boolean, defaults["false"]);
300
193
  def("TSPropertySignature")
301
- );
302
-
303
- def("TSTypeLiteral")
304
- .bases("TSType")
305
- .build("members")
306
- .field("members", [TSTypeMember]);
307
-
308
- def("TSTypeParameter")
309
- .bases("Identifier")
310
- .field("name", String)
311
- .field("constraint", or(def("TSType"), null), defaults["null"])
312
- .field("default", or(def("TSType"), null), defaults["null"]);
313
-
314
- def("TSTypeAssertion")
315
- .bases("Expression")
316
- .build("typeAnnotation", "expression")
317
- .field("typeAnnotation", def("TSType"))
318
- .field("expression", def("Expression"))
319
- .field("extra",
320
- or({ parenthesized: Boolean }, null),
321
- defaults["null"]);
322
-
323
- def("TSTypeParameterDeclaration")
324
- .bases("Declaration")
325
- .build("params")
326
- .field("params", [def("TSTypeParameter")]);
327
-
328
- def("TSTypeParameterInstantiation")
329
- .bases("Node")
330
- .build("params")
331
- .field("params", [def("TSType")]);
332
-
333
- def("TSEnumDeclaration")
334
- .bases("Declaration")
335
- .build("id", "members")
336
- .field("id", def("Identifier"))
337
- .field("const", Boolean, defaults["false"])
338
- .field("declare", Boolean, defaults["false"])
339
- .field("members", [def("TSEnumMember")])
340
- .field("initializer",
341
- or(def("Expression"), null),
342
- defaults["null"]);
343
-
344
- def("TSTypeAliasDeclaration")
345
- .bases("Declaration", "TSHasOptionalTypeParameters")
346
- .build("id")
347
- .field("id", def("Identifier"))
348
- .field("declare", Boolean, defaults["false"])
349
- .field("typeAnnotation", def("TSType"));
350
-
351
- def("TSModuleBlock")
352
- .bases("Node")
353
- .build("body")
354
- .field("body", [def("Statement")]);
355
-
356
- def("TSModuleDeclaration")
357
- .bases("Declaration")
358
- .build("id", "body")
359
- .field("id", or(StringLiteral, IdOrQualifiedName))
360
- .field("declare", Boolean, defaults["false"])
361
- .field("global", Boolean, defaults["false"])
362
- .field("body",
363
- or(def("TSModuleBlock"),
364
- def("TSModuleDeclaration"),
365
- null),
366
- defaults["null"]);
367
-
368
- def("TSImportEqualsDeclaration")
369
- .bases("Declaration")
370
- .build("id", "moduleReference")
371
- .field("id", def("Identifier"))
372
- .field("isExport", Boolean, defaults["false"])
373
- .field("moduleReference",
374
- or(IdOrQualifiedName,
375
- def("TSExternalModuleReference")));
376
-
377
- def("TSExternalModuleReference")
378
- .bases("Declaration")
379
- .build("expression")
380
- .field("expression", StringLiteral);
381
-
382
- def("TSExportAssignment")
383
- .bases("Statement")
384
- .build("expression")
385
- .field("expression", def("Expression"));
386
-
387
- def("TSNamespaceExportDeclaration")
388
- .bases("Declaration")
389
- .build("id")
390
- .field("id", def("Identifier"));
391
-
392
- def("TSInterfaceBody")
393
- .bases("Node")
394
- .build("body")
395
- .field("body", [TSTypeMember]);
396
-
397
- def("TSExpressionWithTypeArguments")
398
- .bases("TSType")
399
- .build("expression", "typeParameters")
400
- .field("expression", IdOrQualifiedName)
401
- .field("typeParameters",
402
- or(def("TSTypeParameterInstantiation"), null),
403
- defaults["null"]);
404
-
405
- def("TSInterfaceDeclaration")
406
- .bases("Declaration", "TSHasOptionalTypeParameters")
407
- .build("id", "body")
408
- .field("id", IdOrQualifiedName)
409
- .field("declare", Boolean, defaults["false"])
410
- .field("extends",
411
- or([def("TSExpressionWithTypeArguments")], null),
412
- defaults["null"])
413
- .field("body", def("TSInterfaceBody"));
414
-
415
- ["ClassDeclaration",
416
- "ClassExpression",
417
- ].forEach(typeName => {
418
- def(typeName)
419
- .field("implements",
420
- [def("TSExpressionWithTypeArguments")],
421
- defaults.emptyArray);
422
- });
423
-
424
- def("TSParameterProperty")
425
- .bases("Pattern")
426
- .build("parameter")
427
- .field("accessibility",
428
- or("public", "private", "protected", void 0),
429
- defaults["undefined"])
430
- .field("readonly", Boolean, defaults["false"])
431
- .field("parameter", or(def("Identifier"),
432
- def("AssignmentPattern")));
433
-
434
- // Defined already in es6 and babel-core.
435
- def("ClassBody")
436
- .field("body", [or(
437
- def("MethodDefinition"),
438
- def("VariableDeclarator"),
439
- def("ClassPropertyDefinition"),
440
- def("ClassProperty"),
441
- def("ClassMethod"),
442
- // Just need to add these types:
443
- def("TSDeclareMethod"),
444
- TSTypeMember
445
- )]);
446
- };
194
+ .bases("Declaration", "TSHasOptionalTypeAnnotation")
195
+ .build("key", "typeAnnotation", "optional")
196
+ .field("key", def("Expression"))
197
+ .field("computed", Boolean, defaults["false"])
198
+ .field("readonly", Boolean, defaults["false"])
199
+ .field("optional", Boolean, defaults["false"])
200
+ .field("initializer", or(def("Expression"), null), defaults["null"]);
201
+ def("TSMethodSignature")
202
+ .bases("Declaration", "TSHasOptionalTypeParameters", "TSHasOptionalTypeAnnotation")
203
+ .build("key", "parameters", "typeAnnotation")
204
+ .field("key", def("Expression"))
205
+ .field("computed", Boolean, defaults["false"])
206
+ .field("optional", Boolean, defaults["false"])
207
+ .field("parameters", ParametersType);
208
+ def("TSTypePredicate")
209
+ .bases("TSTypeAnnotation")
210
+ .build("parameterName", "typeAnnotation")
211
+ .field("parameterName", or(def("Identifier"), def("TSThisType")))
212
+ .field("typeAnnotation", def("TSTypeAnnotation"));
213
+ ["TSCallSignatureDeclaration",
214
+ "TSConstructSignatureDeclaration",
215
+ ].forEach(function (typeName) {
216
+ def(typeName)
217
+ .bases("Declaration", "TSHasOptionalTypeParameters", "TSHasOptionalTypeAnnotation")
218
+ .build("parameters", "typeAnnotation")
219
+ .field("parameters", ParametersType);
220
+ });
221
+ def("TSEnumMember")
222
+ .bases("Node")
223
+ .build("id", "initializer")
224
+ .field("id", or(def("Identifier"), StringLiteral))
225
+ .field("initializer", or(def("Expression"), null), defaults["null"]);
226
+ def("TSTypeQuery")
227
+ .bases("TSType")
228
+ .build("exprName")
229
+ .field("exprName", IdOrQualifiedName);
230
+ // Inferred from Babylon's tsParseTypeMember method.
231
+ var TSTypeMember = or(def("TSCallSignatureDeclaration"), def("TSConstructSignatureDeclaration"), def("TSIndexSignature"), def("TSMethodSignature"), def("TSPropertySignature"));
232
+ def("TSTypeLiteral")
233
+ .bases("TSType")
234
+ .build("members")
235
+ .field("members", [TSTypeMember]);
236
+ def("TSTypeParameter")
237
+ .bases("Identifier")
238
+ .build("name", "constraint", "default")
239
+ .field("name", String)
240
+ .field("constraint", or(def("TSType"), void 0), defaults["undefined"])
241
+ .field("default", or(def("TSType"), void 0), defaults["undefined"]);
242
+ def("TSTypeAssertion")
243
+ .bases("Expression")
244
+ .build("typeAnnotation", "expression")
245
+ .field("typeAnnotation", def("TSType"))
246
+ .field("expression", def("Expression"))
247
+ .field("extra", or({ parenthesized: Boolean }, null), defaults["null"]);
248
+ def("TSTypeParameterDeclaration")
249
+ .bases("Declaration")
250
+ .build("params")
251
+ .field("params", [def("TSTypeParameter")]);
252
+ def("TSTypeParameterInstantiation")
253
+ .bases("Node")
254
+ .build("params")
255
+ .field("params", [def("TSType")]);
256
+ def("TSEnumDeclaration")
257
+ .bases("Declaration")
258
+ .build("id", "members")
259
+ .field("id", def("Identifier"))
260
+ .field("const", Boolean, defaults["false"])
261
+ .field("declare", Boolean, defaults["false"])
262
+ .field("members", [def("TSEnumMember")])
263
+ .field("initializer", or(def("Expression"), null), defaults["null"]);
264
+ def("TSTypeAliasDeclaration")
265
+ .bases("Declaration", "TSHasOptionalTypeParameters")
266
+ .build("id", "typeAnnotation")
267
+ .field("id", def("Identifier"))
268
+ .field("declare", Boolean, defaults["false"])
269
+ .field("typeAnnotation", def("TSType"));
270
+ def("TSModuleBlock")
271
+ .bases("Node")
272
+ .build("body")
273
+ .field("body", [def("Statement")]);
274
+ def("TSModuleDeclaration")
275
+ .bases("Declaration")
276
+ .build("id", "body")
277
+ .field("id", or(StringLiteral, IdOrQualifiedName))
278
+ .field("declare", Boolean, defaults["false"])
279
+ .field("global", Boolean, defaults["false"])
280
+ .field("body", or(def("TSModuleBlock"), def("TSModuleDeclaration"), null), defaults["null"]);
281
+ def("TSImportEqualsDeclaration")
282
+ .bases("Declaration")
283
+ .build("id", "moduleReference")
284
+ .field("id", def("Identifier"))
285
+ .field("isExport", Boolean, defaults["false"])
286
+ .field("moduleReference", or(IdOrQualifiedName, def("TSExternalModuleReference")));
287
+ def("TSExternalModuleReference")
288
+ .bases("Declaration")
289
+ .build("expression")
290
+ .field("expression", StringLiteral);
291
+ def("TSExportAssignment")
292
+ .bases("Statement")
293
+ .build("expression")
294
+ .field("expression", def("Expression"));
295
+ def("TSNamespaceExportDeclaration")
296
+ .bases("Declaration")
297
+ .build("id")
298
+ .field("id", def("Identifier"));
299
+ def("TSInterfaceBody")
300
+ .bases("Node")
301
+ .build("body")
302
+ .field("body", [TSTypeMember]);
303
+ def("TSExpressionWithTypeArguments")
304
+ .bases("TSType")
305
+ .build("expression", "typeParameters")
306
+ .field("expression", IdOrQualifiedName)
307
+ .field("typeParameters", or(def("TSTypeParameterInstantiation"), null), defaults["null"]);
308
+ def("TSInterfaceDeclaration")
309
+ .bases("Declaration", "TSHasOptionalTypeParameters")
310
+ .build("id", "body")
311
+ .field("id", IdOrQualifiedName)
312
+ .field("declare", Boolean, defaults["false"])
313
+ .field("extends", or([def("TSExpressionWithTypeArguments")], null), defaults["null"])
314
+ .field("body", def("TSInterfaceBody"));
315
+ def("TSParameterProperty")
316
+ .bases("Pattern")
317
+ .build("parameter")
318
+ .field("accessibility", or("public", "private", "protected", void 0), defaults["undefined"])
319
+ .field("readonly", Boolean, defaults["false"])
320
+ .field("parameter", or(def("Identifier"), def("AssignmentPattern")));
321
+ // Defined already in es6 and babel-core.
322
+ def("ClassBody")
323
+ .field("body", [or(def("MethodDefinition"), def("VariableDeclarator"), def("ClassPropertyDefinition"), def("ClassProperty"), def("ClassPrivateProperty"), def("ClassMethod"), def("ClassPrivateMethod"),
324
+ // Just need to add these types:
325
+ def("TSDeclareMethod"), TSTypeMember)]);
326
+ }
327
+ exports.default = default_1;
328
+ module.exports = exports["default"];