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/es6.js CHANGED
@@ -1,255 +1,212 @@
1
- module.exports = function (fork) {
2
- fork.use(require("./core"));
3
- var types = fork.use(require("../lib/types"));
4
- var def = types.Type.def;
5
- var or = types.Type.or;
6
- var defaults = fork.use(require("../lib/shared")).defaults;
7
-
8
- def("Function")
9
- .field("generator", Boolean, defaults["false"])
10
- .field("expression", Boolean, defaults["false"])
11
- .field("defaults", [or(def("Expression"), null)], defaults.emptyArray)
12
- // TODO This could be represented as a RestElement in .params.
13
- .field("rest", or(def("Identifier"), null), defaults["null"]);
14
-
15
- // The ESTree way of representing a ...rest parameter.
16
- def("RestElement")
17
- .bases("Pattern")
18
- .build("argument")
19
- .field("argument", def("Pattern"))
20
- .field("typeAnnotation", // for Babylon. Flow parser puts it on the identifier
21
- or(def("TypeAnnotation"), def("TSTypeAnnotation"), null), defaults["null"]);
22
-
23
- def("SpreadElementPattern")
24
- .bases("Pattern")
25
- .build("argument")
26
- .field("argument", def("Pattern"));
27
-
28
- def("FunctionDeclaration")
29
- .build("id", "params", "body", "generator", "expression");
30
-
31
- def("FunctionExpression")
32
- .build("id", "params", "body", "generator", "expression");
33
-
34
- // The Parser API calls this ArrowExpression, but Esprima and all other
35
- // actual parsers use ArrowFunctionExpression.
36
- def("ArrowFunctionExpression")
37
- .bases("Function", "Expression")
38
- .build("params", "body", "expression")
39
- // The forced null value here is compatible with the overridden
40
- // definition of the "id" field in the Function interface.
41
- .field("id", null, defaults["null"])
42
- // Arrow function bodies are allowed to be expressions.
43
- .field("body", or(def("BlockStatement"), def("Expression")))
44
- // The current spec forbids arrow generators, so I have taken the
45
- // liberty of enforcing that. TODO Report this.
46
- .field("generator", false, defaults["false"]);
47
-
48
- def("ForOfStatement")
49
- .bases("Statement")
50
- .build("left", "right", "body")
51
- .field("left", or(
52
- def("VariableDeclaration"),
53
- def("Pattern")))
54
- .field("right", def("Expression"))
55
- .field("body", def("Statement"));
56
-
57
- def("YieldExpression")
58
- .bases("Expression")
59
- .build("argument", "delegate")
60
- .field("argument", or(def("Expression"), null))
61
- .field("delegate", Boolean, defaults["false"]);
62
-
63
- def("GeneratorExpression")
64
- .bases("Expression")
65
- .build("body", "blocks", "filter")
66
- .field("body", def("Expression"))
67
- .field("blocks", [def("ComprehensionBlock")])
68
- .field("filter", or(def("Expression"), null));
69
-
70
- def("ComprehensionExpression")
71
- .bases("Expression")
72
- .build("body", "blocks", "filter")
73
- .field("body", def("Expression"))
74
- .field("blocks", [def("ComprehensionBlock")])
75
- .field("filter", or(def("Expression"), null));
76
-
77
- def("ComprehensionBlock")
78
- .bases("Node")
79
- .build("left", "right", "each")
80
- .field("left", def("Pattern"))
81
- .field("right", def("Expression"))
82
- .field("each", Boolean);
83
-
84
- def("Property")
85
- .field("key", or(def("Literal"), def("Identifier"), def("Expression")))
86
- .field("value", or(def("Expression"), def("Pattern")))
87
- .field("method", Boolean, defaults["false"])
88
- .field("shorthand", Boolean, defaults["false"])
89
- .field("computed", Boolean, defaults["false"]);
90
-
91
- def("PropertyPattern")
92
- .bases("Pattern")
93
- .build("key", "pattern")
94
- .field("key", or(def("Literal"), def("Identifier"), def("Expression")))
95
- .field("pattern", def("Pattern"))
96
- .field("computed", Boolean, defaults["false"]);
97
-
98
- def("ObjectPattern")
99
- .bases("Pattern")
100
- .build("properties")
101
- .field("properties", [or(def("PropertyPattern"), def("Property"))]);
102
-
103
- def("ArrayPattern")
104
- .bases("Pattern")
105
- .build("elements")
106
- .field("elements", [or(def("Pattern"), null)]);
107
-
108
- def("MethodDefinition")
109
- .bases("Declaration")
110
- .build("kind", "key", "value", "static")
111
- .field("kind", or("constructor", "method", "get", "set"))
112
- .field("key", def("Expression"))
113
- .field("value", def("Function"))
114
- .field("computed", Boolean, defaults["false"])
115
- .field("static", Boolean, defaults["false"]);
116
-
117
- def("SpreadElement")
118
- .bases("Node")
119
- .build("argument")
120
- .field("argument", def("Expression"));
121
-
122
- def("ArrayExpression")
123
- .field("elements", [or(
124
- def("Expression"),
125
- def("SpreadElement"),
126
- def("RestElement"),
127
- null
128
- )]);
129
-
130
- def("NewExpression")
131
- .field("arguments", [or(def("Expression"), def("SpreadElement"))]);
132
-
133
- def("CallExpression")
134
- .field("arguments", [or(def("Expression"), def("SpreadElement"))]);
135
-
136
- // Note: this node type is *not* an AssignmentExpression with a Pattern on
137
- // the left-hand side! The existing AssignmentExpression type already
138
- // supports destructuring assignments. AssignmentPattern nodes may appear
139
- // wherever a Pattern is allowed, and the right-hand side represents a
140
- // default value to be destructured against the left-hand side, if no
141
- // value is otherwise provided. For example: default parameter values.
142
- def("AssignmentPattern")
143
- .bases("Pattern")
144
- .build("left", "right")
145
- .field("left", def("Pattern"))
146
- .field("right", def("Expression"));
147
-
148
- var ClassBodyElement = or(
149
- def("MethodDefinition"),
150
- def("VariableDeclarator"),
151
- def("ClassPropertyDefinition"),
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 core_1 = __importDefault(require("./core"));
7
+ var types_1 = __importDefault(require("../lib/types"));
8
+ var shared_1 = __importDefault(require("../lib/shared"));
9
+ function default_1(fork) {
10
+ fork.use(core_1.default);
11
+ var types = fork.use(types_1.default);
12
+ var def = types.Type.def;
13
+ var or = types.Type.or;
14
+ var defaults = fork.use(shared_1.default).defaults;
15
+ def("Function")
16
+ .field("generator", Boolean, defaults["false"])
17
+ .field("expression", Boolean, defaults["false"])
18
+ .field("defaults", [or(def("Expression"), null)], defaults.emptyArray)
19
+ // TODO This could be represented as a RestElement in .params.
20
+ .field("rest", or(def("Identifier"), null), defaults["null"]);
21
+ // The ESTree way of representing a ...rest parameter.
22
+ def("RestElement")
23
+ .bases("Pattern")
24
+ .build("argument")
25
+ .field("argument", def("Pattern"))
26
+ .field("typeAnnotation", // for Babylon. Flow parser puts it on the identifier
27
+ or(def("TypeAnnotation"), def("TSTypeAnnotation"), null), defaults["null"]);
28
+ def("SpreadElementPattern")
29
+ .bases("Pattern")
30
+ .build("argument")
31
+ .field("argument", def("Pattern"));
32
+ def("FunctionDeclaration")
33
+ .build("id", "params", "body", "generator", "expression");
34
+ def("FunctionExpression")
35
+ .build("id", "params", "body", "generator", "expression");
36
+ // The Parser API calls this ArrowExpression, but Esprima and all other
37
+ // actual parsers use ArrowFunctionExpression.
38
+ def("ArrowFunctionExpression")
39
+ .bases("Function", "Expression")
40
+ .build("params", "body", "expression")
41
+ // The forced null value here is compatible with the overridden
42
+ // definition of the "id" field in the Function interface.
43
+ .field("id", null, defaults["null"])
44
+ // Arrow function bodies are allowed to be expressions.
45
+ .field("body", or(def("BlockStatement"), def("Expression")))
46
+ // The current spec forbids arrow generators, so I have taken the
47
+ // liberty of enforcing that. TODO Report this.
48
+ .field("generator", false, defaults["false"]);
49
+ def("ForOfStatement")
50
+ .bases("Statement")
51
+ .build("left", "right", "body")
52
+ .field("left", or(def("VariableDeclaration"), def("Pattern")))
53
+ .field("right", def("Expression"))
54
+ .field("body", def("Statement"));
55
+ def("YieldExpression")
56
+ .bases("Expression")
57
+ .build("argument", "delegate")
58
+ .field("argument", or(def("Expression"), null))
59
+ .field("delegate", Boolean, defaults["false"]);
60
+ def("GeneratorExpression")
61
+ .bases("Expression")
62
+ .build("body", "blocks", "filter")
63
+ .field("body", def("Expression"))
64
+ .field("blocks", [def("ComprehensionBlock")])
65
+ .field("filter", or(def("Expression"), null));
66
+ def("ComprehensionExpression")
67
+ .bases("Expression")
68
+ .build("body", "blocks", "filter")
69
+ .field("body", def("Expression"))
70
+ .field("blocks", [def("ComprehensionBlock")])
71
+ .field("filter", or(def("Expression"), null));
72
+ def("ComprehensionBlock")
73
+ .bases("Node")
74
+ .build("left", "right", "each")
75
+ .field("left", def("Pattern"))
76
+ .field("right", def("Expression"))
77
+ .field("each", Boolean);
78
+ def("Property")
79
+ .field("key", or(def("Literal"), def("Identifier"), def("Expression")))
80
+ .field("value", or(def("Expression"), def("Pattern")))
81
+ .field("method", Boolean, defaults["false"])
82
+ .field("shorthand", Boolean, defaults["false"])
83
+ .field("computed", Boolean, defaults["false"]);
84
+ def("ObjectProperty")
85
+ .field("shorthand", Boolean, defaults["false"]);
86
+ def("PropertyPattern")
87
+ .bases("Pattern")
88
+ .build("key", "pattern")
89
+ .field("key", or(def("Literal"), def("Identifier"), def("Expression")))
90
+ .field("pattern", def("Pattern"))
91
+ .field("computed", Boolean, defaults["false"]);
92
+ def("ObjectPattern")
93
+ .bases("Pattern")
94
+ .build("properties")
95
+ .field("properties", [or(def("PropertyPattern"), def("Property"))]);
96
+ def("ArrayPattern")
97
+ .bases("Pattern")
98
+ .build("elements")
99
+ .field("elements", [or(def("Pattern"), null)]);
100
+ def("MethodDefinition")
101
+ .bases("Declaration")
102
+ .build("kind", "key", "value", "static")
103
+ .field("kind", or("constructor", "method", "get", "set"))
104
+ .field("key", def("Expression"))
105
+ .field("value", def("Function"))
106
+ .field("computed", Boolean, defaults["false"])
107
+ .field("static", Boolean, defaults["false"]);
108
+ def("SpreadElement")
109
+ .bases("Node")
110
+ .build("argument")
111
+ .field("argument", def("Expression"));
112
+ def("ArrayExpression")
113
+ .field("elements", [or(def("Expression"), def("SpreadElement"), def("RestElement"), null)]);
114
+ def("NewExpression")
115
+ .field("arguments", [or(def("Expression"), def("SpreadElement"))]);
116
+ def("CallExpression")
117
+ .field("arguments", [or(def("Expression"), def("SpreadElement"))]);
118
+ // Note: this node type is *not* an AssignmentExpression with a Pattern on
119
+ // the left-hand side! The existing AssignmentExpression type already
120
+ // supports destructuring assignments. AssignmentPattern nodes may appear
121
+ // wherever a Pattern is allowed, and the right-hand side represents a
122
+ // default value to be destructured against the left-hand side, if no
123
+ // value is otherwise provided. For example: default parameter values.
124
+ def("AssignmentPattern")
125
+ .bases("Pattern")
126
+ .build("left", "right")
127
+ .field("left", def("Pattern"))
128
+ .field("right", def("Expression"));
129
+ var ClassBodyElement = or(def("MethodDefinition"), def("VariableDeclarator"), def("ClassPropertyDefinition"), def("ClassProperty"));
152
130
  def("ClassProperty")
153
- );
154
-
155
- def("ClassProperty")
156
- .bases("Declaration")
157
- .build("key")
158
- .field("key", or(def("Literal"), def("Identifier"), def("Expression")))
159
- .field("computed", Boolean, defaults["false"]);
160
-
161
- def("ClassPropertyDefinition") // static property
162
- .bases("Declaration")
163
- .build("definition")
164
- // Yes, Virginia, circular definitions are permitted.
165
- .field("definition", ClassBodyElement);
166
-
167
- def("ClassBody")
168
- .bases("Declaration")
169
- .build("body")
170
- .field("body", [ClassBodyElement]);
171
-
172
- def("ClassDeclaration")
173
- .bases("Declaration")
174
- .build("id", "body", "superClass")
175
- .field("id", or(def("Identifier"), null))
176
- .field("body", def("ClassBody"))
177
- .field("superClass", or(def("Expression"), null), defaults["null"]);
178
-
179
- def("ClassExpression")
180
- .bases("Expression")
181
- .build("id", "body", "superClass")
182
- .field("id", or(def("Identifier"), null), defaults["null"])
183
- .field("body", def("ClassBody"))
184
- .field("superClass", or(def("Expression"), null), defaults["null"]);
185
-
186
- // Specifier and ModuleSpecifier are abstract non-standard types
187
- // introduced for definitional convenience.
188
- def("Specifier").bases("Node");
189
-
190
- // This supertype is shared/abused by both def/babel.js and
191
- // def/esprima.js. In the future, it will be possible to load only one set
192
- // of definitions appropriate for a given parser, but until then we must
193
- // rely on default functions to reconcile the conflicting AST formats.
194
- def("ModuleSpecifier")
195
- .bases("Specifier")
196
- // This local field is used by Babel/Acorn. It should not technically
197
- // be optional in the Babel/Acorn AST format, but it must be optional
198
- // in the Esprima AST format.
199
- .field("local", or(def("Identifier"), null), defaults["null"])
200
- // The id and name fields are used by Esprima. The id field should not
201
- // technically be optional in the Esprima AST format, but it must be
202
- // optional in the Babel/Acorn AST format.
203
- .field("id", or(def("Identifier"), null), defaults["null"])
204
- .field("name", or(def("Identifier"), null), defaults["null"]);
205
-
206
- // Like ModuleSpecifier, except type:"ImportSpecifier" and buildable.
207
- // import {<id [as name]>} from ...;
208
- def("ImportSpecifier")
209
- .bases("ModuleSpecifier")
210
- .build("id", "name");
211
-
212
- // import <* as id> from ...;
213
- def("ImportNamespaceSpecifier")
214
- .bases("ModuleSpecifier")
215
- .build("id");
216
-
217
- // import <id> from ...;
218
- def("ImportDefaultSpecifier")
219
- .bases("ModuleSpecifier")
220
- .build("id");
221
-
222
- def("ImportDeclaration")
223
- .bases("Declaration")
224
- .build("specifiers", "source", "importKind")
225
- .field("specifiers", [or(
226
- def("ImportSpecifier"),
227
- def("ImportNamespaceSpecifier"),
228
- def("ImportDefaultSpecifier")
229
- )], defaults.emptyArray)
230
- .field("source", def("Literal"))
231
- .field("importKind", or(
232
- "value",
233
- "type"
234
- ), function() {
235
- return "value";
131
+ .bases("Declaration")
132
+ .build("key")
133
+ .field("key", or(def("Literal"), def("Identifier"), def("Expression")))
134
+ .field("computed", Boolean, defaults["false"]);
135
+ def("ClassPropertyDefinition") // static property
136
+ .bases("Declaration")
137
+ .build("definition")
138
+ // Yes, Virginia, circular definitions are permitted.
139
+ .field("definition", ClassBodyElement);
140
+ def("ClassBody")
141
+ .bases("Declaration")
142
+ .build("body")
143
+ .field("body", [ClassBodyElement]);
144
+ def("ClassDeclaration")
145
+ .bases("Declaration")
146
+ .build("id", "body", "superClass")
147
+ .field("id", or(def("Identifier"), null))
148
+ .field("body", def("ClassBody"))
149
+ .field("superClass", or(def("Expression"), null), defaults["null"]);
150
+ def("ClassExpression")
151
+ .bases("Expression")
152
+ .build("id", "body", "superClass")
153
+ .field("id", or(def("Identifier"), null), defaults["null"])
154
+ .field("body", def("ClassBody"))
155
+ .field("superClass", or(def("Expression"), null), defaults["null"]);
156
+ // Specifier and ModuleSpecifier are abstract non-standard types
157
+ // introduced for definitional convenience.
158
+ def("Specifier").bases("Node");
159
+ // This supertype is shared/abused by both def/babel.js and
160
+ // def/esprima.js. In the future, it will be possible to load only one set
161
+ // of definitions appropriate for a given parser, but until then we must
162
+ // rely on default functions to reconcile the conflicting AST formats.
163
+ def("ModuleSpecifier")
164
+ .bases("Specifier")
165
+ // This local field is used by Babel/Acorn. It should not technically
166
+ // be optional in the Babel/Acorn AST format, but it must be optional
167
+ // in the Esprima AST format.
168
+ .field("local", or(def("Identifier"), null), defaults["null"])
169
+ // The id and name fields are used by Esprima. The id field should not
170
+ // technically be optional in the Esprima AST format, but it must be
171
+ // optional in the Babel/Acorn AST format.
172
+ .field("id", or(def("Identifier"), null), defaults["null"])
173
+ .field("name", or(def("Identifier"), null), defaults["null"]);
174
+ // Like ModuleSpecifier, except type:"ImportSpecifier" and buildable.
175
+ // import {<id [as name]>} from ...;
176
+ def("ImportSpecifier")
177
+ .bases("ModuleSpecifier")
178
+ .build("id", "name");
179
+ // import <* as id> from ...;
180
+ def("ImportNamespaceSpecifier")
181
+ .bases("ModuleSpecifier")
182
+ .build("id");
183
+ // import <id> from ...;
184
+ def("ImportDefaultSpecifier")
185
+ .bases("ModuleSpecifier")
186
+ .build("id");
187
+ def("ImportDeclaration")
188
+ .bases("Declaration")
189
+ .build("specifiers", "source", "importKind")
190
+ .field("specifiers", [or(def("ImportSpecifier"), def("ImportNamespaceSpecifier"), def("ImportDefaultSpecifier"))], defaults.emptyArray)
191
+ .field("source", def("Literal"))
192
+ .field("importKind", or("value", "type"), function () {
193
+ return "value";
236
194
  });
237
-
238
- def("TaggedTemplateExpression")
239
- .bases("Expression")
240
- .build("tag", "quasi")
241
- .field("tag", def("Expression"))
242
- .field("quasi", def("TemplateLiteral"));
243
-
244
- def("TemplateLiteral")
245
- .bases("Expression")
246
- .build("quasis", "expressions")
247
- .field("quasis", [def("TemplateElement")])
248
- .field("expressions", [def("Expression")]);
249
-
250
- def("TemplateElement")
251
- .bases("Node")
252
- .build("value", "tail")
253
- .field("value", {"cooked": String, "raw": String})
254
- .field("tail", Boolean);
255
- };
195
+ def("TaggedTemplateExpression")
196
+ .bases("Expression")
197
+ .build("tag", "quasi")
198
+ .field("tag", def("Expression"))
199
+ .field("quasi", def("TemplateLiteral"));
200
+ def("TemplateLiteral")
201
+ .bases("Expression")
202
+ .build("quasis", "expressions")
203
+ .field("quasis", [def("TemplateElement")])
204
+ .field("expressions", [def("Expression")]);
205
+ def("TemplateElement")
206
+ .bases("Node")
207
+ .build("value", "tail")
208
+ .field("value", { "cooked": String, "raw": String })
209
+ .field("tail", Boolean);
210
+ }
211
+ exports.default = default_1;
212
+ module.exports = exports["default"];
package/def/es7.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ import { Fork } from "../types";
2
+ export default function (fork: Fork): void;
package/def/es7.js CHANGED
@@ -1,42 +1,36 @@
1
- module.exports = function (fork) {
2
- fork.use(require('./es6'));
3
-
4
- var types = fork.use(require("../lib/types"));
5
- var def = types.Type.def;
6
- var or = types.Type.or;
7
- var builtin = types.builtInTypes;
8
- var defaults = fork.use(require("../lib/shared")).defaults;
9
-
10
- def("Function")
11
- .field("async", Boolean, defaults["false"]);
12
-
13
- def("SpreadProperty")
14
- .bases("Node")
15
- .build("argument")
16
- .field("argument", def("Expression"));
17
-
18
- def("ObjectExpression")
19
- .field("properties", [or(
20
- def("Property"),
21
- def("SpreadProperty"),
22
- def("SpreadElement")
23
- )]);
24
-
25
- def("SpreadPropertyPattern")
26
- .bases("Pattern")
27
- .build("argument")
28
- .field("argument", def("Pattern"));
29
-
30
- def("ObjectPattern")
31
- .field("properties", [or(
32
- def("Property"),
33
- def("PropertyPattern"),
34
- def("SpreadPropertyPattern")
35
- )]);
36
-
37
- def("AwaitExpression")
38
- .bases("Expression")
39
- .build("argument", "all")
40
- .field("argument", or(def("Expression"), null))
41
- .field("all", Boolean, defaults["false"]);
1
+ "use strict";;
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
42
4
  };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ var es6_1 = __importDefault(require("./es6"));
7
+ var types_1 = __importDefault(require("../lib/types"));
8
+ var shared_1 = __importDefault(require("../lib/shared"));
9
+ function default_1(fork) {
10
+ fork.use(es6_1.default);
11
+ var types = fork.use(types_1.default);
12
+ var def = types.Type.def;
13
+ var or = types.Type.or;
14
+ var defaults = fork.use(shared_1.default).defaults;
15
+ def("Function")
16
+ .field("async", Boolean, defaults["false"]);
17
+ def("SpreadProperty")
18
+ .bases("Node")
19
+ .build("argument")
20
+ .field("argument", def("Expression"));
21
+ def("ObjectExpression")
22
+ .field("properties", [or(def("Property"), def("SpreadProperty"), def("SpreadElement"))]);
23
+ def("SpreadPropertyPattern")
24
+ .bases("Pattern")
25
+ .build("argument")
26
+ .field("argument", def("Pattern"));
27
+ def("ObjectPattern")
28
+ .field("properties", [or(def("Property"), def("PropertyPattern"), def("SpreadPropertyPattern"))]);
29
+ def("AwaitExpression")
30
+ .bases("Expression")
31
+ .build("argument", "all")
32
+ .field("argument", or(def("Expression"), null))
33
+ .field("all", Boolean, defaults["false"]);
34
+ }
35
+ exports.default = default_1;
36
+ module.exports = exports["default"];
@@ -0,0 +1,2 @@
1
+ import { Fork } from "../types";
2
+ export default function (fork: Fork): void;