ast-types 0.13.3 → 0.14.2

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 (48) hide show
  1. package/.github/dependabot.yml +9 -0
  2. package/.github/workflows/main.yml +29 -0
  3. package/README.md +1 -1
  4. package/def/babel-core.js +5 -61
  5. package/def/babel.js +3 -5
  6. package/def/core-operators.d.ts +3 -0
  7. package/def/core-operators.js +20 -0
  8. package/def/core.js +8 -11
  9. package/def/es-proposals.js +28 -23
  10. package/def/{es7.d.ts → es2016.d.ts} +0 -0
  11. package/def/es2016.js +20 -0
  12. package/def/{esNext.d.ts → es2017.d.ts} +0 -0
  13. package/def/es2017.js +20 -0
  14. package/def/es2018.d.ts +2 -0
  15. package/def/es2018.js +34 -0
  16. package/def/es2019.d.ts +2 -0
  17. package/def/es2019.js +17 -0
  18. package/def/es2020.js +38 -6
  19. package/def/es6.js +49 -25
  20. package/def/esprima.js +5 -7
  21. package/def/flow.js +75 -20
  22. package/def/jsx.js +28 -25
  23. package/def/type-annotations.js +3 -5
  24. package/def/typescript.js +16 -11
  25. package/fork.d.ts +1 -1
  26. package/fork.js +6 -8
  27. package/gen/builders.d.ts +360 -226
  28. package/gen/kinds.d.ts +48 -33
  29. package/gen/namedTypes.d.ts +257 -152
  30. package/gen/namedTypes.js +1 -0
  31. package/gen/visitor.d.ts +36 -21
  32. package/lib/equiv.js +2 -4
  33. package/lib/node-path.js +4 -6
  34. package/lib/path-visitor.js +3 -5
  35. package/lib/path.js +2 -4
  36. package/lib/scope.js +8 -5
  37. package/lib/shared.d.ts +7 -7
  38. package/lib/shared.js +2 -4
  39. package/lib/types.d.ts +1 -1
  40. package/lib/types.js +31 -32
  41. package/main.js +21 -16
  42. package/package.json +15 -13
  43. package/tsconfig.json +1 -0
  44. package/.travis.yml +0 -11
  45. package/def/es7.js +0 -36
  46. package/def/esNext.js +0 -57
  47. package/gen/nodes.d.ts +0 -1265
  48. package/gen/nodes.js +0 -2
package/def/flow.js CHANGED
@@ -1,14 +1,12 @@
1
1
  "use strict";;
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
- var es7_1 = __importDefault(require("./es7"));
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"));
3
+ var tslib_1 = require("tslib");
4
+ var es_proposals_1 = tslib_1.__importDefault(require("./es-proposals"));
5
+ var type_annotations_1 = tslib_1.__importDefault(require("./type-annotations"));
6
+ var types_1 = tslib_1.__importDefault(require("../lib/types"));
7
+ var shared_1 = tslib_1.__importDefault(require("../lib/shared"));
10
8
  function default_1(fork) {
11
- fork.use(es7_1.default);
9
+ fork.use(es_proposals_1.default);
12
10
  fork.use(type_annotations_1.default);
13
11
  var types = fork.use(types_1.default);
14
12
  var def = types.Type.def;
@@ -30,9 +28,15 @@ function default_1(fork) {
30
28
  def("VoidTypeAnnotation")
31
29
  .bases("FlowType")
32
30
  .build();
31
+ def("SymbolTypeAnnotation")
32
+ .bases("FlowType")
33
+ .build();
33
34
  def("NumberTypeAnnotation")
34
35
  .bases("FlowType")
35
36
  .build();
37
+ def("BigIntTypeAnnotation")
38
+ .bases("FlowType")
39
+ .build();
36
40
  def("NumberLiteralTypeAnnotation")
37
41
  .bases("FlowType")
38
42
  .build("value", "raw")
@@ -45,6 +49,11 @@ function default_1(fork) {
45
49
  .build("value", "raw")
46
50
  .field("value", Number)
47
51
  .field("raw", String);
52
+ def("BigIntLiteralTypeAnnotation")
53
+ .bases("FlowType")
54
+ .build("value", "raw")
55
+ .field("value", null)
56
+ .field("raw", String);
48
57
  def("StringTypeAnnotation")
49
58
  .bases("FlowType")
50
59
  .build();
@@ -94,7 +103,7 @@ function default_1(fork) {
94
103
  def("FunctionTypeParam")
95
104
  .bases("Node")
96
105
  .build("name", "typeAnnotation", "optional")
97
- .field("name", def("Identifier"))
106
+ .field("name", or(def("Identifier"), null))
98
107
  .field("typeAnnotation", def("FlowType"))
99
108
  .field("optional", Boolean);
100
109
  def("ArrayTypeAnnotation")
@@ -130,7 +139,8 @@ function default_1(fork) {
130
139
  .field("id", def("Identifier"))
131
140
  .field("key", def("FlowType"))
132
141
  .field("value", def("FlowType"))
133
- .field("variance", LegacyVariance, defaults["null"]);
142
+ .field("variance", LegacyVariance, defaults["null"])
143
+ .field("static", Boolean, defaults["false"]);
134
144
  def("ObjectTypeCallProperty")
135
145
  .bases("Node")
136
146
  .build("value")
@@ -185,10 +195,11 @@ function default_1(fork) {
185
195
  .field("params", [def("FlowType")]);
186
196
  def("TypeParameter")
187
197
  .bases("FlowType")
188
- .build("name", "variance", "bound")
198
+ .build("name", "variance", "bound", "default")
189
199
  .field("name", String)
190
200
  .field("variance", LegacyVariance, defaults["null"])
191
- .field("bound", or(def("TypeAnnotation"), null), defaults["null"]);
201
+ .field("bound", or(def("TypeAnnotation"), null), defaults["null"])
202
+ .field("default", or(def("FlowType"), null), defaults["null"]);
192
203
  def("ClassProperty")
193
204
  .field("variance", LegacyVariance, defaults["null"]);
194
205
  def("ClassImplements")
@@ -223,19 +234,20 @@ function default_1(fork) {
223
234
  .field("id", def("Identifier"))
224
235
  .field("typeParameters", or(def("TypeParameterDeclaration"), null))
225
236
  .field("right", def("FlowType"));
237
+ def("DeclareTypeAlias")
238
+ .bases("TypeAlias")
239
+ .build("id", "typeParameters", "right");
226
240
  def("OpaqueType")
227
241
  .bases("Declaration")
228
242
  .build("id", "typeParameters", "impltype", "supertype")
229
243
  .field("id", def("Identifier"))
230
244
  .field("typeParameters", or(def("TypeParameterDeclaration"), null))
231
245
  .field("impltype", def("FlowType"))
232
- .field("supertype", def("FlowType"));
233
- def("DeclareTypeAlias")
234
- .bases("TypeAlias")
235
- .build("id", "typeParameters", "right");
246
+ .field("supertype", or(def("FlowType"), null));
236
247
  def("DeclareOpaqueType")
237
- .bases("TypeAlias")
238
- .build("id", "typeParameters", "supertype");
248
+ .bases("OpaqueType")
249
+ .build("id", "typeParameters", "supertype")
250
+ .field("impltype", or(def("FlowType"), null));
239
251
  def("TypeCastExpression")
240
252
  .bases("Expression")
241
253
  .build("expression", "typeAnnotation")
@@ -252,7 +264,8 @@ function default_1(fork) {
252
264
  def("DeclareFunction")
253
265
  .bases("Statement")
254
266
  .build("id")
255
- .field("id", def("Identifier"));
267
+ .field("id", def("Identifier"))
268
+ .field("predicate", or(def("FlowPredicate"), null), defaults["null"]);
256
269
  def("DeclareClass")
257
270
  .bases("InterfaceDeclaration")
258
271
  .build("id");
@@ -270,13 +283,17 @@ function default_1(fork) {
270
283
  .build("default", "declaration", "specifiers", "source")
271
284
  .field("default", Boolean)
272
285
  .field("declaration", or(def("DeclareVariable"), def("DeclareFunction"), def("DeclareClass"), def("FlowType"), // Implies default.
273
- null))
286
+ def("TypeAlias"), // Implies named type
287
+ def("DeclareOpaqueType"), // Implies named opaque type
288
+ def("InterfaceDeclaration"), null))
274
289
  .field("specifiers", [or(def("ExportSpecifier"), def("ExportBatchSpecifier"))], defaults.emptyArray)
275
290
  .field("source", or(def("Literal"), null), defaults["null"]);
276
291
  def("DeclareExportAllDeclaration")
277
292
  .bases("Declaration")
278
293
  .build("source")
279
294
  .field("source", or(def("Literal"), null), defaults["null"]);
295
+ def("ImportDeclaration")
296
+ .field("importKind", or("value", "type", "typeof"), function () { return "value"; });
280
297
  def("FlowPredicate").bases("Flow");
281
298
  def("InferredPredicate")
282
299
  .bases("FlowPredicate")
@@ -285,10 +302,48 @@ function default_1(fork) {
285
302
  .bases("FlowPredicate")
286
303
  .build("value")
287
304
  .field("value", def("Expression"));
305
+ def("Function")
306
+ .field("predicate", or(def("FlowPredicate"), null), defaults["null"]);
288
307
  def("CallExpression")
289
308
  .field("typeArguments", or(null, def("TypeParameterInstantiation")), defaults["null"]);
290
309
  def("NewExpression")
291
310
  .field("typeArguments", or(null, def("TypeParameterInstantiation")), defaults["null"]);
311
+ // Enums
312
+ def("EnumDeclaration")
313
+ .bases("Declaration")
314
+ .build("id", "body")
315
+ .field("id", def("Identifier"))
316
+ .field("body", or(def("EnumBooleanBody"), def("EnumNumberBody"), def("EnumStringBody"), def("EnumSymbolBody")));
317
+ def("EnumBooleanBody")
318
+ .build("members", "explicitType")
319
+ .field("members", [def("EnumBooleanMember")])
320
+ .field("explicitType", Boolean);
321
+ def("EnumNumberBody")
322
+ .build("members", "explicitType")
323
+ .field("members", [def("EnumNumberMember")])
324
+ .field("explicitType", Boolean);
325
+ def("EnumStringBody")
326
+ .build("members", "explicitType")
327
+ .field("members", or([def("EnumStringMember")], [def("EnumDefaultedMember")]))
328
+ .field("explicitType", Boolean);
329
+ def("EnumSymbolBody")
330
+ .build("members")
331
+ .field("members", [def("EnumDefaultedMember")]);
332
+ def("EnumBooleanMember")
333
+ .build("id", "init")
334
+ .field("id", def("Identifier"))
335
+ .field("init", or(def("Literal"), Boolean));
336
+ def("EnumNumberMember")
337
+ .build("id", "init")
338
+ .field("id", def("Identifier"))
339
+ .field("init", def("Literal"));
340
+ def("EnumStringMember")
341
+ .build("id", "init")
342
+ .field("id", def("Identifier"))
343
+ .field("init", def("Literal"));
344
+ def("EnumDefaultedMember")
345
+ .build("id")
346
+ .field("id", def("Identifier"));
292
347
  }
293
348
  exports.default = default_1;
294
349
  module.exports = exports["default"];
package/def/jsx.js CHANGED
@@ -1,13 +1,11 @@
1
1
  "use strict";;
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
- var es7_1 = __importDefault(require("./es7"));
7
- var types_1 = __importDefault(require("../lib/types"));
8
- var shared_1 = __importDefault(require("../lib/shared"));
3
+ var tslib_1 = require("tslib");
4
+ var es2020_1 = tslib_1.__importDefault(require("./es2020"));
5
+ var types_1 = tslib_1.__importDefault(require("../lib/types"));
6
+ var shared_1 = tslib_1.__importDefault(require("../lib/shared"));
9
7
  function default_1(fork) {
10
- fork.use(es7_1.default);
8
+ fork.use(es2020_1.default);
11
9
  var types = fork.use(types_1.default);
12
10
  var def = types.Type.def;
13
11
  var or = types.Type.or;
@@ -18,6 +16,8 @@ function default_1(fork) {
18
16
  .field("name", or(def("JSXIdentifier"), def("JSXNamespacedName")))
19
17
  .field("value", or(def("Literal"), // attr="value"
20
18
  def("JSXExpressionContainer"), // attr={value}
19
+ def("JSXElement"), // attr=<div />
20
+ def("JSXFragment"), // attr=<></>
21
21
  null // attr= or just attr
22
22
  ), defaults["null"]);
23
23
  def("JSXIdentifier")
@@ -44,14 +44,15 @@ function default_1(fork) {
44
44
  def("JSXExpressionContainer")
45
45
  .bases("Expression")
46
46
  .build("expression")
47
- .field("expression", def("Expression"));
47
+ .field("expression", or(def("Expression"), def("JSXEmptyExpression")));
48
+ var JSXChildren = [or(def("JSXText"), def("JSXExpressionContainer"), def("JSXSpreadChild"), def("JSXElement"), def("JSXFragment"), def("Literal") // Legacy: Esprima should return JSXText instead.
49
+ )];
48
50
  def("JSXElement")
49
51
  .bases("Expression")
50
52
  .build("openingElement", "closingElement", "children")
51
53
  .field("openingElement", def("JSXOpeningElement"))
52
54
  .field("closingElement", or(def("JSXClosingElement"), null), defaults["null"])
53
- .field("children", [or(def("JSXElement"), def("JSXExpressionContainer"), def("JSXFragment"), def("JSXText"), def("Literal") // TODO Esprima should return JSXText instead.
54
- )], defaults.emptyArray)
55
+ .field("children", JSXChildren, defaults.emptyArray)
55
56
  .field("name", JSXElementName, function () {
56
57
  // Little-known fact: the `this` object inside a default function
57
58
  // is none other than the partially-built object itself, and any
@@ -67,37 +68,39 @@ function default_1(fork) {
67
68
  return this.openingElement.attributes;
68
69
  }, true); // hidden from traversal
69
70
  def("JSXOpeningElement")
70
- .bases("Node") // TODO Does this make sense? Can't really be an JSXElement.
71
+ .bases("Node")
71
72
  .build("name", "attributes", "selfClosing")
72
73
  .field("name", JSXElementName)
73
74
  .field("attributes", JSXAttributes, defaults.emptyArray)
74
75
  .field("selfClosing", Boolean, defaults["false"]);
75
76
  def("JSXClosingElement")
76
- .bases("Node") // TODO Same concern.
77
+ .bases("Node")
77
78
  .build("name")
78
79
  .field("name", JSXElementName);
79
80
  def("JSXFragment")
80
81
  .bases("Expression")
81
- .build("openingElement", "closingElement", "children")
82
- .field("openingElement", def("JSXOpeningFragment"))
83
- .field("closingElement", def("JSXClosingFragment"))
84
- .field("children", [or(def("JSXElement"), def("JSXExpressionContainer"), def("JSXFragment"), def("JSXText"), def("Literal") // TODO Esprima should return JSXText instead.
85
- )], defaults.emptyArray);
82
+ .build("openingFragment", "closingFragment", "children")
83
+ .field("openingFragment", def("JSXOpeningFragment"))
84
+ .field("closingFragment", def("JSXClosingFragment"))
85
+ .field("children", JSXChildren, defaults.emptyArray);
86
86
  def("JSXOpeningFragment")
87
- .bases("Node") // TODO Same concern.
87
+ .bases("Node")
88
88
  .build();
89
89
  def("JSXClosingFragment")
90
- .bases("Node") // TODO Same concern.
90
+ .bases("Node")
91
91
  .build();
92
92
  def("JSXText")
93
93
  .bases("Literal")
94
- .build("value")
95
- .field("value", String);
96
- def("JSXEmptyExpression").bases("Expression").build();
97
- // This PR has caused many people issues, but supporting it seems like a
98
- // good idea anyway: https://github.com/babel/babel/pull/4988
94
+ .build("value", "raw")
95
+ .field("value", String)
96
+ .field("raw", String, function () {
97
+ return this.value;
98
+ });
99
+ def("JSXEmptyExpression")
100
+ .bases("Node")
101
+ .build();
99
102
  def("JSXSpreadChild")
100
- .bases("Expression")
103
+ .bases("Node")
101
104
  .build("expression")
102
105
  .field("expression", def("Expression"));
103
106
  }
@@ -4,12 +4,10 @@
4
4
  * These defs could not be defined in ./flow.ts or ./typescript.ts directly
5
5
  * because they use the same name.
6
6
  */
7
- var __importDefault = (this && this.__importDefault) || function (mod) {
8
- return (mod && mod.__esModule) ? mod : { "default": mod };
9
- };
10
7
  Object.defineProperty(exports, "__esModule", { value: true });
11
- var types_1 = __importDefault(require("../lib/types"));
12
- var shared_1 = __importDefault(require("../lib/shared"));
8
+ var tslib_1 = require("tslib");
9
+ var types_1 = tslib_1.__importDefault(require("../lib/types"));
10
+ var shared_1 = tslib_1.__importDefault(require("../lib/shared"));
13
11
  function default_1(fork) {
14
12
  var types = fork.use(types_1.default);
15
13
  var def = types.Type.def;
package/def/typescript.js CHANGED
@@ -1,12 +1,10 @@
1
1
  "use strict";;
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  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"));
3
+ var tslib_1 = require("tslib");
4
+ var babel_core_1 = tslib_1.__importDefault(require("./babel-core"));
5
+ var type_annotations_1 = tslib_1.__importDefault(require("./type-annotations"));
6
+ var types_1 = tslib_1.__importDefault(require("../lib/types"));
7
+ var shared_1 = tslib_1.__importDefault(require("../lib/shared"));
10
8
  function default_1(fork) {
11
9
  // Since TypeScript is parsed by Babylon, include the core Babylon types
12
10
  // but omit the Flow-related types.
@@ -166,7 +164,13 @@ function default_1(fork) {
166
164
  def("TSTupleType")
167
165
  .bases("TSType")
168
166
  .build("elementTypes")
169
- .field("elementTypes", [def("TSType")]);
167
+ .field("elementTypes", [or(def("TSType"), def("TSNamedTupleMember"))]);
168
+ def("TSNamedTupleMember")
169
+ .bases("TSType")
170
+ .build("label", "elementType", "optional")
171
+ .field("label", def("Identifier"))
172
+ .field("optional", Boolean, defaults["false"])
173
+ .field("elementType", def("TSType"));
170
174
  def("TSRestType")
171
175
  .bases("TSType")
172
176
  .build("typeAnnotation")
@@ -210,10 +214,11 @@ function default_1(fork) {
210
214
  .field("optional", Boolean, defaults["false"])
211
215
  .field("parameters", ParametersType);
212
216
  def("TSTypePredicate")
213
- .bases("TSTypeAnnotation")
214
- .build("parameterName", "typeAnnotation")
217
+ .bases("TSTypeAnnotation", "TSType")
218
+ .build("parameterName", "typeAnnotation", "asserts")
215
219
  .field("parameterName", or(def("Identifier"), def("TSThisType")))
216
- .field("typeAnnotation", def("TSTypeAnnotation"));
220
+ .field("typeAnnotation", or(def("TSTypeAnnotation"), null), defaults["null"])
221
+ .field("asserts", Boolean, defaults["false"]);
217
222
  ["TSCallSignatureDeclaration",
218
223
  "TSConstructSignatureDeclaration",
219
224
  ].forEach(function (typeName) {
package/fork.d.ts CHANGED
@@ -37,6 +37,6 @@ export default function (defs: Def[]): {
37
37
  Path: import("./lib/path").PathConstructor;
38
38
  NodePath: import("./lib/node-path").NodePathConstructor;
39
39
  PathVisitor: import("./lib/path-visitor").PathVisitorConstructor;
40
- use: <T>(plugin: Plugin<T>) => T;
40
+ use: <T_1>(plugin: Plugin<T_1>) => T_1;
41
41
  visit: <M = {}>(node: import("./lib/types").ASTNode, methods?: import("./main").Visitor<M> | undefined) => any;
42
42
  };
package/fork.js CHANGED
@@ -1,13 +1,11 @@
1
1
  "use strict";;
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
- var types_1 = __importDefault(require("./lib/types"));
7
- var path_visitor_1 = __importDefault(require("./lib/path-visitor"));
8
- var equiv_1 = __importDefault(require("./lib/equiv"));
9
- var path_1 = __importDefault(require("./lib/path"));
10
- var node_path_1 = __importDefault(require("./lib/node-path"));
3
+ var tslib_1 = require("tslib");
4
+ var types_1 = tslib_1.__importDefault(require("./lib/types"));
5
+ var path_visitor_1 = tslib_1.__importDefault(require("./lib/path-visitor"));
6
+ var equiv_1 = tslib_1.__importDefault(require("./lib/equiv"));
7
+ var path_1 = tslib_1.__importDefault(require("./lib/path"));
8
+ var node_path_1 = tslib_1.__importDefault(require("./lib/node-path"));
11
9
  function default_1(defs) {
12
10
  var fork = createFork();
13
11
  var types = fork.use(types_1.default);