ast-types 0.9.2 → 0.9.6

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.
package/def/babel6.js CHANGED
@@ -1,160 +1,165 @@
1
1
  module.exports = function (fork) {
2
- fork.use(require("./babel"));
3
- fork.use(require("./flow"));
4
-
5
- // var types = fork.types;
6
- var types = fork.use(require("../lib/types"));
7
- // var defaults = fork.shared.defaults;
8
- var defaults = fork.use(require("../lib/shared")).defaults;
9
- var def = types.Type.def;
10
- var or = types.Type.or;
11
-
12
- def("Directive")
13
- .bases("Node")
14
- .build("value")
15
- .field("value", def("DirectiveLiteral"));
16
-
17
- def("DirectiveLiteral")
18
- .bases("Node", "Expression")
19
- .build("value")
20
- .field("value", String, defaults["use strict"]);
21
-
22
- def("BlockStatement")
23
- .bases("Statement")
24
- .build("body")
25
- .field("body", [def("Statement")])
26
- .field("directives", [def("Directive")], defaults.emptyArray);
27
-
28
- def("Program")
29
- .bases("Node")
30
- .build("body")
31
- .field("body", [def("Statement")])
32
- .field("directives", [def("Directive")], defaults.emptyArray);
33
-
34
- // Split Literal
35
- def("StringLiteral")
36
- .bases("Literal")
37
- .build("value")
38
- .field("value", String);
39
-
40
- def("NumericLiteral")
41
- .bases("Literal")
42
- .build("value")
43
- .field("value", Number);
44
-
45
- def("NullLiteral")
46
- .bases("Literal")
47
- .build();
48
-
49
- def("BooleanLiteral")
50
- .bases("Literal")
51
- .build("value")
52
- .field("value", Boolean);
53
-
54
- def("RegExpLiteral")
55
- .bases("Literal")
56
- .build("pattern", "flags")
57
- .field("pattern", String)
58
- .field("flags", String);
59
-
60
- var ObjectExpressionProperty = or(
61
- def("Property"),
62
- def("ObjectMethod"),
63
- def("ObjectProperty"),
64
- def("SpreadProperty")
65
- );
66
-
67
- // Split Property -> ObjectProperty and ObjectMethod
68
- def("ObjectExpression")
69
- .bases("Expression")
70
- .build("properties")
71
- .field("properties", [ObjectExpressionProperty]);
72
-
73
- // ObjectMethod hoist .value properties to own properties
74
- def("ObjectMethod")
75
- .bases("Node", "Function")
76
- .build("kind", "key", "params", "body", "computed")
77
- .field("kind", or("method", "get", "set"))
78
- .field("key", or(def("Literal"), def("Identifier"), def("Expression")))
79
- .field("params", [def("Pattern")])
80
- .field("body", def("BlockStatement"))
81
- .field("computed", Boolean, defaults["false"])
82
- .field("generator", Boolean, defaults["false"])
83
- .field("async", Boolean, defaults["false"])
84
- .field("decorators",
85
- or([def("Decorator")], null),
86
- defaults["null"]);
87
-
88
- def("ObjectProperty")
89
- .bases("Node")
90
- .build("key", "value")
91
- .field("key", or(def("Literal"), def("Identifier"), def("Expression")))
92
- .field("value", or(def("Expression"), def("Pattern")))
93
- .field("computed", Boolean, defaults["false"]);
94
-
95
- var ClassBodyElement = or(
96
- def("MethodDefinition"),
97
- def("VariableDeclarator"),
98
- def("ClassPropertyDefinition"),
99
- def("ClassProperty"),
100
- def("ClassMethod")
101
- );
102
-
103
- // MethodDefinition -> ClassMethod
104
- def("ClassBody")
105
- .bases("Declaration")
106
- .build("body")
107
- .field("body", [ClassBodyElement]);
108
-
109
- def("ClassMethod")
110
- .bases("Declaration", "Function")
111
- .build("kind", "key", "params", "body", "computed", "static")
112
- .field("kind", or("get", "set", "method", "constructor"))
113
- .field("key", or(def("Literal"), def("Identifier"), def("Expression")))
114
- .field("params", [def("Pattern")])
115
- .field("body", def("BlockStatement"))
116
- .field("computed", Boolean, defaults["false"])
117
- .field("static", Boolean, defaults["false"])
118
- .field("generator", Boolean, defaults["false"])
119
- .field("async", Boolean, defaults["false"])
120
- .field("decorators",
121
- or([def("Decorator")], null),
122
- defaults["null"]);
123
-
124
- var ObjectPatternProperty = or(
125
- def("Property"),
126
- def("PropertyPattern"),
127
- def("SpreadPropertyPattern"),
128
- def("SpreadProperty"), // Used by Esprima
129
- def("ObjectProperty"), // Babel 6
130
- def("RestProperty") // Babel 6
131
- );
132
-
133
- // Split into RestProperty and SpreadProperty
134
- def("ObjectPattern")
135
- .bases("Pattern")
136
- .build("properties")
137
- .field("properties", [ObjectPatternProperty])
138
- .field("decorators",
139
- or([def("Decorator")], null),
140
- defaults["null"]);
141
-
2
+ fork.use(require("./babel"));
3
+ fork.use(require("./flow"));
4
+
5
+ // var types = fork.types;
6
+ var types = fork.use(require("../lib/types"));
7
+ // var defaults = fork.shared.defaults;
8
+ var defaults = fork.use(require("../lib/shared")).defaults;
9
+ var def = types.Type.def;
10
+ var or = types.Type.or;
11
+
12
+ def("Directive")
13
+ .bases("Node")
14
+ .build("value")
15
+ .field("value", def("DirectiveLiteral"));
16
+
17
+ def("DirectiveLiteral")
18
+ .bases("Node", "Expression")
19
+ .build("value")
20
+ .field("value", String, defaults["use strict"]);
21
+
22
+ def("BlockStatement")
23
+ .bases("Statement")
24
+ .build("body")
25
+ .field("body", [def("Statement")])
26
+ .field("directives", [def("Directive")], defaults.emptyArray);
27
+
28
+ def("Program")
29
+ .bases("Node")
30
+ .build("body")
31
+ .field("body", [def("Statement")])
32
+ .field("directives", [def("Directive")], defaults.emptyArray);
33
+
34
+ // Split Literal
35
+ def("StringLiteral")
36
+ .bases("Literal")
37
+ .build("value")
38
+ .field("value", String);
39
+
40
+ def("NumericLiteral")
41
+ .bases("Literal")
42
+ .build("value")
43
+ .field("value", Number);
44
+
45
+ def("NullLiteral")
46
+ .bases("Literal")
47
+ .build();
48
+
49
+ def("BooleanLiteral")
50
+ .bases("Literal")
51
+ .build("value")
52
+ .field("value", Boolean);
53
+
54
+ def("RegExpLiteral")
55
+ .bases("Literal")
56
+ .build("pattern", "flags")
57
+ .field("pattern", String)
58
+ .field("flags", String);
59
+
60
+ var ObjectExpressionProperty = or(
61
+ def("Property"),
62
+ def("ObjectMethod"),
63
+ def("ObjectProperty"),
142
64
  def("SpreadProperty")
143
- .bases("Node")
144
- .build("argument")
145
- .field("argument", def("Expression"));
146
-
147
- def("RestProperty")
148
- .bases("Node")
149
- .build("argument")
150
- .field("argument", def("Expression"));
151
-
152
- def("ForAwaitStatement")
153
- .bases("Statement")
154
- .build("left", "right", "body")
155
- .field("left", or(
156
- def("VariableDeclaration"),
157
- def("Expression")))
158
- .field("right", def("Expression"))
159
- .field("body", def("Statement"));
65
+ );
66
+
67
+ // Split Property -> ObjectProperty and ObjectMethod
68
+ def("ObjectExpression")
69
+ .bases("Expression")
70
+ .build("properties")
71
+ .field("properties", [ObjectExpressionProperty]);
72
+
73
+ // ObjectMethod hoist .value properties to own properties
74
+ def("ObjectMethod")
75
+ .bases("Node", "Function")
76
+ .build("kind", "key", "params", "body", "computed")
77
+ .field("kind", or("method", "get", "set"))
78
+ .field("key", or(def("Literal"), def("Identifier"), def("Expression")))
79
+ .field("params", [def("Pattern")])
80
+ .field("body", def("BlockStatement"))
81
+ .field("computed", Boolean, defaults["false"])
82
+ .field("generator", Boolean, defaults["false"])
83
+ .field("async", Boolean, defaults["false"])
84
+ .field("decorators",
85
+ or([def("Decorator")], null),
86
+ defaults["null"]);
87
+
88
+ def("ObjectProperty")
89
+ .bases("Node")
90
+ .build("key", "value")
91
+ .field("key", or(def("Literal"), def("Identifier"), def("Expression")))
92
+ .field("value", or(def("Expression"), def("Pattern")))
93
+ .field("computed", Boolean, defaults["false"]);
94
+
95
+ var ClassBodyElement = or(
96
+ def("MethodDefinition"),
97
+ def("VariableDeclarator"),
98
+ def("ClassPropertyDefinition"),
99
+ def("ClassProperty"),
100
+ def("ClassMethod")
101
+ );
102
+
103
+ // MethodDefinition -> ClassMethod
104
+ def("ClassBody")
105
+ .bases("Declaration")
106
+ .build("body")
107
+ .field("body", [ClassBodyElement]);
108
+
109
+ def("ClassMethod")
110
+ .bases("Declaration", "Function")
111
+ .build("kind", "key", "params", "body", "computed", "static")
112
+ .field("kind", or("get", "set", "method", "constructor"))
113
+ .field("key", or(def("Literal"), def("Identifier"), def("Expression")))
114
+ .field("params", [def("Pattern")])
115
+ .field("body", def("BlockStatement"))
116
+ .field("computed", Boolean, defaults["false"])
117
+ .field("static", Boolean, defaults["false"])
118
+ .field("generator", Boolean, defaults["false"])
119
+ .field("async", Boolean, defaults["false"])
120
+ .field("decorators",
121
+ or([def("Decorator")], null),
122
+ defaults["null"]);
123
+
124
+ var ObjectPatternProperty = or(
125
+ def("Property"),
126
+ def("PropertyPattern"),
127
+ def("SpreadPropertyPattern"),
128
+ def("SpreadProperty"), // Used by Esprima
129
+ def("ObjectProperty"), // Babel 6
130
+ def("RestProperty") // Babel 6
131
+ );
132
+
133
+ // Split into RestProperty and SpreadProperty
134
+ def("ObjectPattern")
135
+ .bases("Pattern")
136
+ .build("properties")
137
+ .field("properties", [ObjectPatternProperty])
138
+ .field("decorators",
139
+ or([def("Decorator")], null),
140
+ defaults["null"]);
141
+
142
+ def("SpreadProperty")
143
+ .bases("Node")
144
+ .build("argument")
145
+ .field("argument", def("Expression"));
146
+
147
+ def("RestProperty")
148
+ .bases("Node")
149
+ .build("argument")
150
+ .field("argument", def("Expression"));
151
+
152
+ def("ForAwaitStatement")
153
+ .bases("Statement")
154
+ .build("left", "right", "body")
155
+ .field("left", or(
156
+ def("VariableDeclaration"),
157
+ def("Expression")))
158
+ .field("right", def("Expression"))
159
+ .field("body", def("Statement"));
160
+
161
+ // The callee node of a dynamic import(...) expression.
162
+ def("Import")
163
+ .bases("Expression")
164
+ .build();
160
165
  };
package/def/core.js CHANGED
@@ -36,8 +36,9 @@ module.exports = function (fork) {
36
36
 
37
37
  def("File")
38
38
  .bases("Node")
39
- .build("program")
40
- .field("program", def("Program"));
39
+ .build("program", "name")
40
+ .field("program", def("Program"))
41
+ .field("name", or(String, null), defaults["null"]);
41
42
 
42
43
  def("Program")
43
44
  .bases("Node")
package/def/esprima.js CHANGED
@@ -80,13 +80,19 @@ module.exports = function (fork) {
80
80
 
81
81
  def("ImportDeclaration")
82
82
  .bases("Declaration")
83
- .build("specifiers", "source")
83
+ .build("specifiers", "source", "importKind")
84
84
  .field("specifiers", [or(
85
85
  def("ImportSpecifier"),
86
86
  def("ImportNamespaceSpecifier"),
87
87
  def("ImportDefaultSpecifier")
88
88
  )], defaults.emptyArray)
89
- .field("source", def("Literal"));
89
+ .field("source", def("Literal"))
90
+ .field("importKind", or(
91
+ "value",
92
+ "type"
93
+ ), function() {
94
+ return "value";
95
+ });
90
96
 
91
97
  def("Block")
92
98
  .bases("Comment")
package/def/flow.js CHANGED
@@ -35,6 +35,14 @@ module.exports = function (fork) {
35
35
  .field("value", Number)
36
36
  .field("raw", String);
37
37
 
38
+ // Babylon 6 differs in AST from Flow
39
+ // same as NumberLiteralTypeAnnotation
40
+ def("NumericLiteralTypeAnnotation")
41
+ .bases("Type")
42
+ .build("value", "raw")
43
+ .field("value", Number)
44
+ .field("raw", String);
45
+
38
46
  def("StringTypeAnnotation")
39
47
  .bases("Type")
40
48
  .build();
@@ -310,4 +318,12 @@ module.exports = function (fork) {
310
318
  def("Literal"),
311
319
  null
312
320
  ), defaults["null"]);
321
+
322
+ def("DeclareExportAllDeclaration")
323
+ .bases("Declaration")
324
+ .build("source")
325
+ .field("source", or(
326
+ def("Literal"),
327
+ null
328
+ ), defaults["null"]);
313
329
  };
package/package.json CHANGED
@@ -18,7 +18,7 @@
18
18
  "transformation",
19
19
  "syntax"
20
20
  ],
21
- "version": "0.9.2",
21
+ "version": "0.9.6",
22
22
  "homepage": "http://github.com/benjamn/ast-types",
23
23
  "repository": {
24
24
  "type": "git",