ast-types 0.11.4 → 0.11.5

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.
@@ -0,0 +1,33 @@
1
+ module.exports = function (fork) {
2
+ fork.use(require('./core'));
3
+
4
+ var types = fork.use(require("../lib/types"));
5
+ var Type = types.Type;
6
+ var def = types.Type.def;
7
+ var or = Type.or;
8
+
9
+ var shared = fork.use(require("../lib/shared"));
10
+ var defaults = shared.defaults;
11
+
12
+
13
+ // https://github.com/tc39/proposal-optional-chaining
14
+ // `a?.b` as per https://github.com/estree/estree/issues/146
15
+ def("OptionalMemberExpression")
16
+ .bases("MemberExpression")
17
+ .build("object", "property", "computed", "optional")
18
+ .field("optional", Boolean, defaults["true"])
19
+
20
+ // a?.b()
21
+ def("OptionalCallExpression")
22
+ .bases("CallExpression")
23
+ .build("callee", "arguments", "optional")
24
+ .field("optional", Boolean, defaults["true"])
25
+
26
+
27
+ // https://github.com/tc39/proposal-nullish-coalescing
28
+ // `a ?? b` as per https://github.com/babel/babylon/pull/761/files
29
+ var LogicalOperator = or("||", "&&", "??");
30
+
31
+ def("LogicalExpression")
32
+ .field("operator", LogicalOperator)
33
+ };
package/def/flow.js CHANGED
@@ -6,31 +6,35 @@ module.exports = function (fork) {
6
6
  var or = types.Type.or;
7
7
  var defaults = fork.use(require("../lib/shared")).defaults;
8
8
 
9
- // Type Annotations
10
- def("Type").bases("Node");
9
+ // Base types
10
+
11
+ def("Flow").bases("Node");
12
+ def("FlowType").bases("Flow");
13
+
14
+ // Type annotations
11
15
 
12
16
  def("AnyTypeAnnotation")
13
- .bases("Type")
17
+ .bases("FlowType")
14
18
  .build();
15
19
 
16
20
  def("EmptyTypeAnnotation")
17
- .bases("Type")
21
+ .bases("FlowType")
18
22
  .build();
19
23
 
20
24
  def("MixedTypeAnnotation")
21
- .bases("Type")
25
+ .bases("FlowType")
22
26
  .build();
23
27
 
24
28
  def("VoidTypeAnnotation")
25
- .bases("Type")
29
+ .bases("FlowType")
26
30
  .build();
27
31
 
28
32
  def("NumberTypeAnnotation")
29
- .bases("Type")
33
+ .bases("FlowType")
30
34
  .build();
31
35
 
32
36
  def("NumberLiteralTypeAnnotation")
33
- .bases("Type")
37
+ .bases("FlowType")
34
38
  .build("value", "raw")
35
39
  .field("value", Number)
36
40
  .field("raw", String);
@@ -38,27 +42,27 @@ module.exports = function (fork) {
38
42
  // Babylon 6 differs in AST from Flow
39
43
  // same as NumberLiteralTypeAnnotation
40
44
  def("NumericLiteralTypeAnnotation")
41
- .bases("Type")
45
+ .bases("FlowType")
42
46
  .build("value", "raw")
43
47
  .field("value", Number)
44
48
  .field("raw", String);
45
49
 
46
50
  def("StringTypeAnnotation")
47
- .bases("Type")
51
+ .bases("FlowType")
48
52
  .build();
49
53
 
50
54
  def("StringLiteralTypeAnnotation")
51
- .bases("Type")
55
+ .bases("FlowType")
52
56
  .build("value", "raw")
53
57
  .field("value", String)
54
58
  .field("raw", String);
55
59
 
56
60
  def("BooleanTypeAnnotation")
57
- .bases("Type")
61
+ .bases("FlowType")
58
62
  .build();
59
63
 
60
64
  def("BooleanLiteralTypeAnnotation")
61
- .bases("Type")
65
+ .bases("FlowType")
62
66
  .build("value", "raw")
63
67
  .field("value", Boolean)
64
68
  .field("raw", String);
@@ -66,38 +70,38 @@ module.exports = function (fork) {
66
70
  def("TypeAnnotation")
67
71
  .bases("Node")
68
72
  .build("typeAnnotation")
69
- .field("typeAnnotation", def("Type"));
73
+ .field("typeAnnotation", def("FlowType"));
70
74
 
71
75
  def("NullableTypeAnnotation")
72
- .bases("Type")
76
+ .bases("FlowType")
73
77
  .build("typeAnnotation")
74
- .field("typeAnnotation", def("Type"));
78
+ .field("typeAnnotation", def("FlowType"));
75
79
 
76
80
  def("NullLiteralTypeAnnotation")
77
- .bases("Type")
81
+ .bases("FlowType")
78
82
  .build();
79
83
 
80
84
  def("NullTypeAnnotation")
81
- .bases("Type")
85
+ .bases("FlowType")
82
86
  .build();
83
87
 
84
88
  def("ThisTypeAnnotation")
85
- .bases("Type")
89
+ .bases("FlowType")
86
90
  .build();
87
91
 
88
92
  def("ExistsTypeAnnotation")
89
- .bases("Type")
93
+ .bases("FlowType")
90
94
  .build();
91
95
 
92
96
  def("ExistentialTypeParam")
93
- .bases("Type")
97
+ .bases("FlowType")
94
98
  .build();
95
99
 
96
100
  def("FunctionTypeAnnotation")
97
- .bases("Type")
101
+ .bases("FlowType")
98
102
  .build("params", "returnType", "rest", "typeParameters")
99
103
  .field("params", [def("FunctionTypeParam")])
100
- .field("returnType", def("Type"))
104
+ .field("returnType", def("FlowType"))
101
105
  .field("rest", or(def("FunctionTypeParam"), null))
102
106
  .field("typeParameters", or(def("TypeParameterDeclaration"), null));
103
107
 
@@ -105,16 +109,16 @@ module.exports = function (fork) {
105
109
  .bases("Node")
106
110
  .build("name", "typeAnnotation", "optional")
107
111
  .field("name", def("Identifier"))
108
- .field("typeAnnotation", def("Type"))
112
+ .field("typeAnnotation", def("FlowType"))
109
113
  .field("optional", Boolean);
110
114
 
111
115
  def("ArrayTypeAnnotation")
112
- .bases("Type")
116
+ .bases("FlowType")
113
117
  .build("elementType")
114
- .field("elementType", def("Type"));
118
+ .field("elementType", def("FlowType"));
115
119
 
116
120
  def("ObjectTypeAnnotation")
117
- .bases("Type")
121
+ .bases("FlowType")
118
122
  .build("properties", "indexers", "callProperties")
119
123
  .field("properties", [
120
124
  or(def("ObjectTypeProperty"),
@@ -142,7 +146,7 @@ module.exports = function (fork) {
142
146
  .bases("Node")
143
147
  .build("key", "value", "optional")
144
148
  .field("key", or(def("Literal"), def("Identifier")))
145
- .field("value", def("Type"))
149
+ .field("value", def("FlowType"))
146
150
  .field("optional", Boolean)
147
151
  .field("variance", LegacyVariance, defaults["null"]);
148
152
 
@@ -150,8 +154,8 @@ module.exports = function (fork) {
150
154
  .bases("Node")
151
155
  .build("id", "key", "value")
152
156
  .field("id", def("Identifier"))
153
- .field("key", def("Type"))
154
- .field("value", def("Type"))
157
+ .field("key", def("FlowType"))
158
+ .field("value", def("FlowType"))
155
159
  .field("variance", LegacyVariance, defaults["null"]);
156
160
 
157
161
  def("ObjectTypeCallProperty")
@@ -169,13 +173,13 @@ module.exports = function (fork) {
169
173
  .field("id", def("Identifier"));
170
174
 
171
175
  def("GenericTypeAnnotation")
172
- .bases("Type")
176
+ .bases("FlowType")
173
177
  .build("id", "typeParameters")
174
178
  .field("id", or(def("Identifier"), def("QualifiedTypeIdentifier")))
175
179
  .field("typeParameters", or(def("TypeParameterInstantiation"), null));
176
180
 
177
181
  def("MemberTypeAnnotation")
178
- .bases("Type")
182
+ .bases("FlowType")
179
183
  .build("object", "property")
180
184
  .field("object", def("Identifier"))
181
185
  .field("property",
@@ -183,24 +187,24 @@ module.exports = function (fork) {
183
187
  def("GenericTypeAnnotation")));
184
188
 
185
189
  def("UnionTypeAnnotation")
186
- .bases("Type")
190
+ .bases("FlowType")
187
191
  .build("types")
188
- .field("types", [def("Type")]);
192
+ .field("types", [def("FlowType")]);
189
193
 
190
194
  def("IntersectionTypeAnnotation")
191
- .bases("Type")
195
+ .bases("FlowType")
192
196
  .build("types")
193
- .field("types", [def("Type")]);
197
+ .field("types", [def("FlowType")]);
194
198
 
195
199
  def("TypeofTypeAnnotation")
196
- .bases("Type")
200
+ .bases("FlowType")
197
201
  .build("argument")
198
- .field("argument", def("Type"));
202
+ .field("argument", def("FlowType"));
199
203
 
200
204
  def("ObjectTypeSpreadProperty")
201
205
  .bases("Node")
202
206
  .build("argument")
203
- .field("argument", def("Type"));
207
+ .field("argument", def("FlowType"));
204
208
 
205
209
  def("Identifier")
206
210
  .field("typeAnnotation", or(def("TypeAnnotation"), null), defaults["null"]);
@@ -216,10 +220,10 @@ module.exports = function (fork) {
216
220
  def("TypeParameterInstantiation")
217
221
  .bases("Node")
218
222
  .build("params")
219
- .field("params", [def("Type")]);
223
+ .field("params", [def("FlowType")]);
220
224
 
221
225
  def("TypeParameter")
222
- .bases("Type")
226
+ .bases("FlowType")
223
227
  .build("name", "variance", "bound")
224
228
  .field("name", String)
225
229
  .field("variance", LegacyVariance, defaults["null"])
@@ -295,15 +299,15 @@ module.exports = function (fork) {
295
299
  .build("id", "typeParameters", "right")
296
300
  .field("id", def("Identifier"))
297
301
  .field("typeParameters", or(def("TypeParameterDeclaration"), null))
298
- .field("right", def("Type"));
302
+ .field("right", def("FlowType"));
299
303
 
300
304
  def("OpaqueType")
301
305
  .bases("Declaration")
302
306
  .build("id", "typeParameters", "impltype", "supertype")
303
307
  .field("id", def("Identifier"))
304
308
  .field("typeParameters", or(def("TypeParameterDeclaration"), null))
305
- .field("implType", def("Type"))
306
- .field("superType", def("Type"));
309
+ .field("implType", def("FlowType"))
310
+ .field("superType", def("FlowType"));
307
311
 
308
312
  def("DeclareTypeAlias")
309
313
  .bases("TypeAlias")
@@ -320,9 +324,9 @@ module.exports = function (fork) {
320
324
  .field("typeAnnotation", def("TypeAnnotation"));
321
325
 
322
326
  def("TupleTypeAnnotation")
323
- .bases("Type")
327
+ .bases("FlowType")
324
328
  .build("types")
325
- .field("types", [def("Type")]);
329
+ .field("types", [def("FlowType")]);
326
330
 
327
331
  def("DeclareVariable")
328
332
  .bases("Statement")
@@ -357,7 +361,7 @@ module.exports = function (fork) {
357
361
  def("DeclareVariable"),
358
362
  def("DeclareFunction"),
359
363
  def("DeclareClass"),
360
- def("Type"), // Implies default.
364
+ def("FlowType"), // Implies default.
361
365
  null
362
366
  ))
363
367
  .field("specifiers", [or(
@@ -376,4 +380,15 @@ module.exports = function (fork) {
376
380
  def("Literal"),
377
381
  null
378
382
  ), defaults["null"]);
383
+
384
+ def("FlowPredicate").bases("Flow");
385
+
386
+ def("InferredPredicate")
387
+ .bases("FlowPredicate")
388
+ .build();
389
+
390
+ def("DeclaredPredicate")
391
+ .bases("FlowPredicate")
392
+ .build("value")
393
+ .field("value", def("Expression"));
379
394
  };
package/main.js CHANGED
@@ -13,5 +13,6 @@ module.exports = require('./fork')([
13
13
  require("./def/flow"),
14
14
  require("./def/esprima"),
15
15
  require("./def/babel"),
16
- require("./def/typescript")
16
+ require("./def/typescript"),
17
+ require("./def/es-proposals")
17
18
  ]);
package/package.json CHANGED
@@ -18,7 +18,7 @@
18
18
  "transformation",
19
19
  "syntax"
20
20
  ],
21
- "version": "0.11.4",
21
+ "version": "0.11.5",
22
22
  "homepage": "http://github.com/benjamn/ast-types",
23
23
  "repository": {
24
24
  "type": "git",
@@ -36,10 +36,10 @@
36
36
  "espree": "^3.1.7",
37
37
  "esprima": "~4.0.0",
38
38
  "esprima-fb": "~14001.1.0-dev-harmony-fb",
39
- "flow-parser": "^0.72.0",
39
+ "flow-parser": "^0.73.0",
40
40
  "glob": "^7.1.2",
41
41
  "mocha": "^5.0.0",
42
- "reify": "^0.15.1"
42
+ "reify": "^0.16.1"
43
43
  },
44
44
  "engines": {
45
45
  "node": ">=4"