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/core.js CHANGED
@@ -1,133 +1,113 @@
1
- module.exports = function (fork) {
2
- var types = fork.use(require("../lib/types"));
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 types_1 = __importDefault(require("../lib/types"));
7
+ var shared_1 = __importDefault(require("../lib/shared"));
8
+ function default_1(fork) {
9
+ var types = fork.use(types_1.default);
3
10
  var Type = types.Type;
4
11
  var def = Type.def;
5
12
  var or = Type.or;
6
- var shared = fork.use(require("../lib/shared"));
13
+ var shared = fork.use(shared_1.default);
7
14
  var defaults = shared.defaults;
8
15
  var geq = shared.geq;
9
-
10
16
  // Abstract supertype of all syntactic entities that are allowed to have a
11
17
  // .loc field.
12
18
  def("Printable")
13
- .field("loc", or(
14
- def("SourceLocation"),
15
- null
16
- ), defaults["null"], true);
17
-
19
+ .field("loc", or(def("SourceLocation"), null), defaults["null"], true);
18
20
  def("Node")
19
21
  .bases("Printable")
20
22
  .field("type", String)
21
- .field("comments", or(
22
- [def("Comment")],
23
- null
24
- ), defaults["null"], true);
25
-
23
+ .field("comments", or([def("Comment")], null), defaults["null"], true);
26
24
  def("SourceLocation")
27
- .build("start", "end", "source")
28
25
  .field("start", def("Position"))
29
26
  .field("end", def("Position"))
30
27
  .field("source", or(String, null), defaults["null"]);
31
-
32
28
  def("Position")
33
- .build("line", "column")
34
29
  .field("line", geq(1))
35
30
  .field("column", geq(0));
36
-
37
31
  def("File")
38
32
  .bases("Node")
39
33
  .build("program", "name")
40
34
  .field("program", def("Program"))
41
35
  .field("name", or(String, null), defaults["null"]);
42
-
43
36
  def("Program")
44
37
  .bases("Node")
45
38
  .build("body")
46
39
  .field("body", [def("Statement")]);
47
-
48
40
  def("Function")
49
41
  .bases("Node")
50
42
  .field("id", or(def("Identifier"), null), defaults["null"])
51
43
  .field("params", [def("Pattern")])
52
- .field("body", def("BlockStatement"));
53
-
44
+ .field("body", def("BlockStatement"))
45
+ .field("generator", Boolean, defaults["false"])
46
+ .field("async", Boolean, defaults["false"]);
54
47
  def("Statement").bases("Node");
55
-
56
- // The empty .build() here means that an EmptyStatement can be constructed
57
- // (i.e. it's not abstract) but that it needs no arguments.
48
+ // The empty .build() here means that an EmptyStatement can be constructed
49
+ // (i.e. it's not abstract) but that it needs no arguments.
58
50
  def("EmptyStatement").bases("Statement").build();
59
-
60
51
  def("BlockStatement")
61
52
  .bases("Statement")
62
53
  .build("body")
63
54
  .field("body", [def("Statement")]);
64
-
65
55
  // TODO Figure out how to silently coerce Expressions to
66
56
  // ExpressionStatements where a Statement was expected.
67
57
  def("ExpressionStatement")
68
58
  .bases("Statement")
69
59
  .build("expression")
70
60
  .field("expression", def("Expression"));
71
-
72
61
  def("IfStatement")
73
62
  .bases("Statement")
74
63
  .build("test", "consequent", "alternate")
75
64
  .field("test", def("Expression"))
76
65
  .field("consequent", def("Statement"))
77
66
  .field("alternate", or(def("Statement"), null), defaults["null"]);
78
-
79
67
  def("LabeledStatement")
80
68
  .bases("Statement")
81
69
  .build("label", "body")
82
70
  .field("label", def("Identifier"))
83
71
  .field("body", def("Statement"));
84
-
85
72
  def("BreakStatement")
86
73
  .bases("Statement")
87
74
  .build("label")
88
75
  .field("label", or(def("Identifier"), null), defaults["null"]);
89
-
90
76
  def("ContinueStatement")
91
77
  .bases("Statement")
92
78
  .build("label")
93
79
  .field("label", or(def("Identifier"), null), defaults["null"]);
94
-
95
80
  def("WithStatement")
96
81
  .bases("Statement")
97
82
  .build("object", "body")
98
83
  .field("object", def("Expression"))
99
84
  .field("body", def("Statement"));
100
-
101
85
  def("SwitchStatement")
102
86
  .bases("Statement")
103
87
  .build("discriminant", "cases", "lexical")
104
88
  .field("discriminant", def("Expression"))
105
89
  .field("cases", [def("SwitchCase")])
106
90
  .field("lexical", Boolean, defaults["false"]);
107
-
108
91
  def("ReturnStatement")
109
92
  .bases("Statement")
110
93
  .build("argument")
111
94
  .field("argument", or(def("Expression"), null));
112
-
113
95
  def("ThrowStatement")
114
96
  .bases("Statement")
115
97
  .build("argument")
116
98
  .field("argument", def("Expression"));
117
-
118
99
  def("TryStatement")
119
100
  .bases("Statement")
120
101
  .build("block", "handler", "finalizer")
121
102
  .field("block", def("BlockStatement"))
122
103
  .field("handler", or(def("CatchClause"), null), function () {
123
- return this.handlers && this.handlers[0] || null;
124
- })
104
+ return this.handlers && this.handlers[0] || null;
105
+ })
125
106
  .field("handlers", [def("CatchClause")], function () {
126
- return this.handler ? [this.handler] : [];
127
- }, true) // Indicates this field is hidden from eachField iteration.
107
+ return this.handler ? [this.handler] : [];
108
+ }, true) // Indicates this field is hidden from eachField iteration.
128
109
  .field("guardedHandlers", [def("CatchClause")], defaults.emptyArray)
129
110
  .field("finalizer", or(def("BlockStatement"), null), defaults["null"]);
130
-
131
111
  def("CatchClause")
132
112
  .bases("Node")
133
113
  .build("param", "guard", "body")
@@ -135,79 +115,59 @@ module.exports = function (fork) {
135
115
  .field("param", or(def("Pattern"), null), defaults["null"])
136
116
  .field("guard", or(def("Expression"), null), defaults["null"])
137
117
  .field("body", def("BlockStatement"));
138
-
139
118
  def("WhileStatement")
140
119
  .bases("Statement")
141
120
  .build("test", "body")
142
121
  .field("test", def("Expression"))
143
122
  .field("body", def("Statement"));
144
-
145
123
  def("DoWhileStatement")
146
124
  .bases("Statement")
147
125
  .build("body", "test")
148
126
  .field("body", def("Statement"))
149
127
  .field("test", def("Expression"));
150
-
151
128
  def("ForStatement")
152
129
  .bases("Statement")
153
130
  .build("init", "test", "update", "body")
154
- .field("init", or(
155
- def("VariableDeclaration"),
156
- def("Expression"),
157
- null))
131
+ .field("init", or(def("VariableDeclaration"), def("Expression"), null))
158
132
  .field("test", or(def("Expression"), null))
159
133
  .field("update", or(def("Expression"), null))
160
134
  .field("body", def("Statement"));
161
-
162
135
  def("ForInStatement")
163
136
  .bases("Statement")
164
137
  .build("left", "right", "body")
165
- .field("left", or(
166
- def("VariableDeclaration"),
167
- def("Expression")))
138
+ .field("left", or(def("VariableDeclaration"), def("Expression")))
168
139
  .field("right", def("Expression"))
169
140
  .field("body", def("Statement"));
170
-
171
141
  def("DebuggerStatement").bases("Statement").build();
172
-
173
142
  def("Declaration").bases("Statement");
174
-
175
143
  def("FunctionDeclaration")
176
144
  .bases("Function", "Declaration")
177
145
  .build("id", "params", "body")
178
146
  .field("id", def("Identifier"));
179
-
180
147
  def("FunctionExpression")
181
148
  .bases("Function", "Expression")
182
149
  .build("id", "params", "body");
183
-
184
150
  def("VariableDeclaration")
185
151
  .bases("Declaration")
186
152
  .build("kind", "declarations")
187
153
  .field("kind", or("var", "let", "const"))
188
154
  .field("declarations", [def("VariableDeclarator")]);
189
-
190
155
  def("VariableDeclarator")
191
156
  .bases("Node")
192
157
  .build("id", "init")
193
158
  .field("id", def("Pattern"))
194
- .field("init", or(def("Expression"), null));
195
-
159
+ .field("init", or(def("Expression"), null), defaults["null"]);
196
160
  // TODO Are all Expressions really Patterns?
197
161
  def("Expression").bases("Node", "Pattern");
198
-
199
162
  def("ThisExpression").bases("Expression").build();
200
-
201
163
  def("ArrayExpression")
202
164
  .bases("Expression")
203
165
  .build("elements")
204
166
  .field("elements", [or(def("Expression"), null)]);
205
-
206
167
  def("ObjectExpression")
207
168
  .bases("Expression")
208
169
  .build("properties")
209
170
  .field("properties", [def("Property")]);
210
-
211
171
  // TODO Not in the Mozilla Parser API, but used by Esprima.
212
172
  def("Property")
213
173
  .bases("Node") // Want to be able to visit Property Nodes.
@@ -215,16 +175,11 @@ module.exports = function (fork) {
215
175
  .field("kind", or("init", "get", "set"))
216
176
  .field("key", or(def("Literal"), def("Identifier")))
217
177
  .field("value", def("Expression"));
218
-
219
178
  def("SequenceExpression")
220
179
  .bases("Expression")
221
180
  .build("expressions")
222
181
  .field("expressions", [def("Expression")]);
223
-
224
- var UnaryOperator = or(
225
- "-", "+", "!", "~",
226
- "typeof", "void", "delete");
227
-
182
+ var UnaryOperator = or("-", "+", "!", "~", "typeof", "void", "delete");
228
183
  def("UnaryExpression")
229
184
  .bases("Expression")
230
185
  .build("operator", "argument", "prefix")
@@ -233,60 +188,41 @@ module.exports = function (fork) {
233
188
  // Esprima doesn't bother with this field, presumably because it's
234
189
  // always true for unary operators.
235
190
  .field("prefix", Boolean, defaults["true"]);
236
-
237
- var BinaryOperator = or(
238
- "==", "!=", "===", "!==",
239
- "<", "<=", ">", ">=",
240
- "<<", ">>", ">>>",
241
- "+", "-", "*", "/", "%", "**",
242
- "&", // TODO Missing from the Parser API.
243
- "|", "^", "in",
244
- "instanceof", "..");
245
-
191
+ var BinaryOperator = or("==", "!=", "===", "!==", "<", "<=", ">", ">=", "<<", ">>", ">>>", "+", "-", "*", "/", "%", "**", "&", // TODO Missing from the Parser API.
192
+ "|", "^", "in", "instanceof", "..");
246
193
  def("BinaryExpression")
247
194
  .bases("Expression")
248
195
  .build("operator", "left", "right")
249
196
  .field("operator", BinaryOperator)
250
197
  .field("left", def("Expression"))
251
198
  .field("right", def("Expression"));
252
-
253
- var AssignmentOperator = or(
254
- "=", "+=", "-=", "*=", "/=", "%=",
255
- "<<=", ">>=", ">>>=",
256
- "|=", "^=", "&=");
257
-
199
+ var AssignmentOperator = or("=", "+=", "-=", "*=", "/=", "%=", "<<=", ">>=", ">>>=", "|=", "^=", "&=");
258
200
  def("AssignmentExpression")
259
201
  .bases("Expression")
260
202
  .build("operator", "left", "right")
261
203
  .field("operator", AssignmentOperator)
262
204
  .field("left", def("Pattern"))
263
205
  .field("right", def("Expression"));
264
-
265
206
  var UpdateOperator = or("++", "--");
266
-
267
207
  def("UpdateExpression")
268
208
  .bases("Expression")
269
209
  .build("operator", "argument", "prefix")
270
210
  .field("operator", UpdateOperator)
271
211
  .field("argument", def("Expression"))
272
212
  .field("prefix", Boolean);
273
-
274
213
  var LogicalOperator = or("||", "&&");
275
-
276
214
  def("LogicalExpression")
277
215
  .bases("Expression")
278
216
  .build("operator", "left", "right")
279
217
  .field("operator", LogicalOperator)
280
218
  .field("left", def("Expression"))
281
219
  .field("right", def("Expression"));
282
-
283
220
  def("ConditionalExpression")
284
221
  .bases("Expression")
285
222
  .build("test", "consequent", "alternate")
286
223
  .field("test", def("Expression"))
287
224
  .field("consequent", def("Expression"))
288
225
  .field("alternate", def("Expression"));
289
-
290
226
  def("NewExpression")
291
227
  .bases("Expression")
292
228
  .build("callee", "arguments")
@@ -295,69 +231,62 @@ module.exports = function (fork) {
295
231
  // null)], but null values don't really make sense at the call site.
296
232
  // TODO Report this nonsense.
297
233
  .field("arguments", [def("Expression")]);
298
-
299
234
  def("CallExpression")
300
235
  .bases("Expression")
301
236
  .build("callee", "arguments")
302
237
  .field("callee", def("Expression"))
303
238
  // See comment for NewExpression above.
304
239
  .field("arguments", [def("Expression")]);
305
-
306
240
  def("MemberExpression")
307
241
  .bases("Expression")
308
242
  .build("object", "property", "computed")
309
243
  .field("object", def("Expression"))
310
244
  .field("property", or(def("Identifier"), def("Expression")))
311
245
  .field("computed", Boolean, function () {
312
- var type = this.property.type;
313
- if (type === 'Literal' ||
314
- type === 'MemberExpression' ||
315
- type === 'BinaryExpression') {
316
- return true;
317
- }
318
- return false;
319
- });
320
-
246
+ var type = this.property.type;
247
+ if (type === 'Literal' ||
248
+ type === 'MemberExpression' ||
249
+ type === 'BinaryExpression') {
250
+ return true;
251
+ }
252
+ return false;
253
+ });
321
254
  def("Pattern").bases("Node");
322
-
323
255
  def("SwitchCase")
324
256
  .bases("Node")
325
257
  .build("test", "consequent")
326
258
  .field("test", or(def("Expression"), null))
327
259
  .field("consequent", [def("Statement")]);
328
-
329
260
  def("Identifier")
330
261
  // But aren't Expressions and Patterns already Nodes? TODO Report this.
331
262
  .bases("Node", "Expression", "Pattern")
332
263
  .build("name")
333
264
  .field("name", String)
334
265
  .field("optional", Boolean, defaults["false"]);
335
-
336
266
  def("Literal")
337
267
  // But aren't Expressions already Nodes? TODO Report this.
338
268
  .bases("Node", "Expression")
339
269
  .build("value")
340
270
  .field("value", or(String, Boolean, null, Number, RegExp))
341
271
  .field("regex", or({
342
- pattern: String,
343
- flags: String
344
- }, null), function () {
345
- if (this.value instanceof RegExp) {
346
- var flags = "";
347
-
348
- if (this.value.ignoreCase) flags += "i";
349
- if (this.value.multiline) flags += "m";
350
- if (this.value.global) flags += "g";
351
-
352
- return {
353
- pattern: this.value.source,
354
- flags: flags
355
- };
356
- }
357
-
358
- return null;
359
- });
360
-
272
+ pattern: String,
273
+ flags: String
274
+ }, null), function () {
275
+ if (this.value instanceof RegExp) {
276
+ var flags = "";
277
+ if (this.value.ignoreCase)
278
+ flags += "i";
279
+ if (this.value.multiline)
280
+ flags += "m";
281
+ if (this.value.global)
282
+ flags += "g";
283
+ return {
284
+ pattern: this.value.source,
285
+ flags: flags
286
+ };
287
+ }
288
+ return null;
289
+ });
361
290
  // Abstract (non-buildable) comment supertype. Not a Node.
362
291
  def("Comment")
363
292
  .bases("Printable")
@@ -369,4 +298,6 @@ module.exports = function (fork) {
369
298
  // e.g. { /*dangling*/ }.
370
299
  .field("leading", Boolean, defaults["true"])
371
300
  .field("trailing", Boolean, defaults["false"]);
372
- };
301
+ }
302
+ exports.default = default_1;
303
+ module.exports = exports["default"];
@@ -0,0 +1,2 @@
1
+ import { Fork } from "../types";
2
+ export default function (fork: Fork): void;
@@ -1,33 +1,35 @@
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)
1
+ "use strict";;
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
33
4
  };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ var types_1 = __importDefault(require("../lib/types"));
7
+ var shared_1 = __importDefault(require("../lib/shared"));
8
+ var core_1 = __importDefault(require("./core"));
9
+ function default_1(fork) {
10
+ fork.use(core_1.default);
11
+ var types = fork.use(types_1.default);
12
+ var Type = types.Type;
13
+ var def = types.Type.def;
14
+ var or = Type.or;
15
+ var shared = fork.use(shared_1.default);
16
+ var defaults = shared.defaults;
17
+ // https://github.com/tc39/proposal-optional-chaining
18
+ // `a?.b` as per https://github.com/estree/estree/issues/146
19
+ def("OptionalMemberExpression")
20
+ .bases("MemberExpression")
21
+ .build("object", "property", "computed", "optional")
22
+ .field("optional", Boolean, defaults["true"]);
23
+ // a?.b()
24
+ def("OptionalCallExpression")
25
+ .bases("CallExpression")
26
+ .build("callee", "arguments", "optional")
27
+ .field("optional", Boolean, defaults["true"]);
28
+ // https://github.com/tc39/proposal-nullish-coalescing
29
+ // `a ?? b` as per https://github.com/babel/babylon/pull/761/files
30
+ var LogicalOperator = or("||", "&&", "??");
31
+ def("LogicalExpression")
32
+ .field("operator", LogicalOperator);
33
+ }
34
+ exports.default = default_1;
35
+ module.exports = exports["default"];
package/def/es6.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ import { Fork } from "../types";
2
+ export default function (fork: Fork): void;