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.
- package/.travis.yml +2 -2
- package/def/babel-core.d.ts +2 -0
- package/def/babel-core.js +250 -290
- package/def/babel.d.ts +2 -0
- package/def/babel.js +12 -3
- package/def/core.d.ts +2 -0
- package/def/core.js +57 -126
- package/def/es-proposals.d.ts +2 -0
- package/def/es-proposals.js +34 -32
- package/def/es6.d.ts +2 -0
- package/def/es6.js +210 -253
- package/def/es7.d.ts +2 -0
- package/def/es7.js +35 -41
- package/def/esprima.d.ts +2 -0
- package/def/esprima.js +50 -71
- package/def/flow.d.ts +2 -0
- package/def/flow.js +289 -393
- package/def/jsx.d.ts +2 -0
- package/def/jsx.js +99 -125
- package/def/type-annotations.d.ts +7 -0
- package/def/type-annotations.js +42 -0
- package/def/typescript.d.ts +2 -0
- package/def/typescript.js +326 -444
- package/fork.d.ts +46 -0
- package/fork.js +40 -31
- package/gen/builders.d.ts +2539 -0
- package/gen/builders.js +2 -0
- package/gen/kinds.d.ts +259 -0
- package/gen/kinds.js +2 -0
- package/gen/namedTypes.d.ts +262 -0
- package/gen/namedTypes.js +2 -0
- package/gen/nodes.d.ts +1255 -0
- package/gen/nodes.js +2 -0
- package/gen/visitor.d.ts +263 -0
- package/gen/visitor.js +2 -0
- package/lib/equiv.d.ts +5 -0
- package/lib/equiv.js +19 -49
- package/lib/node-path.d.ts +22 -0
- package/lib/node-path.js +60 -125
- package/lib/path-visitor.d.ts +52 -0
- package/lib/path-visitor.js +117 -194
- package/lib/path.d.ts +25 -0
- package/lib/path.js +71 -107
- package/lib/scope.d.ts +26 -0
- package/lib/scope.js +100 -143
- package/lib/shared.d.ts +13 -0
- package/lib/shared.js +34 -31
- package/lib/types.d.ts +140 -0
- package/lib/types.js +584 -676
- package/main.d.ts +16 -0
- package/main.js +33 -18
- package/package.json +24 -7
- package/tsconfig.json +20 -0
- package/types.d.ts +6 -0
- package/types.js +2 -0
- package/def/e4x.js +0 -86
- package/def/mozilla.js +0 -42
package/def/jsx.js
CHANGED
|
@@ -1,131 +1,105 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
.
|
|
11
|
-
.
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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 es7_1 = __importDefault(require("./es7"));
|
|
7
|
+
var types_1 = __importDefault(require("../lib/types"));
|
|
8
|
+
var shared_1 = __importDefault(require("../lib/shared"));
|
|
9
|
+
function default_1(fork) {
|
|
10
|
+
fork.use(es7_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("JSXAttribute")
|
|
16
|
+
.bases("Node")
|
|
17
|
+
.build("name", "value")
|
|
18
|
+
.field("name", or(def("JSXIdentifier"), def("JSXNamespacedName")))
|
|
19
|
+
.field("value", or(def("Literal"), // attr="value"
|
|
20
|
+
def("JSXExpressionContainer"), // attr={value}
|
|
21
|
+
null // attr= or just attr
|
|
17
22
|
), defaults["null"]);
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
.field("namespace", def("JSXIdentifier"))
|
|
28
|
-
.field("name", def("JSXIdentifier"));
|
|
29
|
-
|
|
30
|
-
def("JSXMemberExpression")
|
|
31
|
-
.bases("MemberExpression")
|
|
32
|
-
.build("object", "property")
|
|
33
|
-
.field("object", or(def("JSXIdentifier"), def("JSXMemberExpression")))
|
|
34
|
-
.field("property", def("JSXIdentifier"))
|
|
35
|
-
.field("computed", Boolean, defaults.false);
|
|
36
|
-
|
|
37
|
-
var JSXElementName = or(
|
|
38
|
-
def("JSXIdentifier"),
|
|
39
|
-
def("JSXNamespacedName"),
|
|
23
|
+
def("JSXIdentifier")
|
|
24
|
+
.bases("Identifier")
|
|
25
|
+
.build("name")
|
|
26
|
+
.field("name", String);
|
|
27
|
+
def("JSXNamespacedName")
|
|
28
|
+
.bases("Node")
|
|
29
|
+
.build("namespace", "name")
|
|
30
|
+
.field("namespace", def("JSXIdentifier"))
|
|
31
|
+
.field("name", def("JSXIdentifier"));
|
|
40
32
|
def("JSXMemberExpression")
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
var JSXAttributes = [or(
|
|
49
|
-
def("JSXAttribute"),
|
|
33
|
+
.bases("MemberExpression")
|
|
34
|
+
.build("object", "property")
|
|
35
|
+
.field("object", or(def("JSXIdentifier"), def("JSXMemberExpression")))
|
|
36
|
+
.field("property", def("JSXIdentifier"))
|
|
37
|
+
.field("computed", Boolean, defaults.false);
|
|
38
|
+
var JSXElementName = or(def("JSXIdentifier"), def("JSXNamespacedName"), def("JSXMemberExpression"));
|
|
50
39
|
def("JSXSpreadAttribute")
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
// fields initialized directly from builder function arguments
|
|
74
|
-
// (like openingElement, closingElement, and children) are
|
|
75
|
-
// guaranteed to be available.
|
|
76
|
-
return this.openingElement.name;
|
|
40
|
+
.bases("Node")
|
|
41
|
+
.build("argument")
|
|
42
|
+
.field("argument", def("Expression"));
|
|
43
|
+
var JSXAttributes = [or(def("JSXAttribute"), def("JSXSpreadAttribute"))];
|
|
44
|
+
def("JSXExpressionContainer")
|
|
45
|
+
.bases("Expression")
|
|
46
|
+
.build("expression")
|
|
47
|
+
.field("expression", def("Expression"));
|
|
48
|
+
def("JSXElement")
|
|
49
|
+
.bases("Expression")
|
|
50
|
+
.build("openingElement", "closingElement", "children")
|
|
51
|
+
.field("openingElement", def("JSXOpeningElement"))
|
|
52
|
+
.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("name", JSXElementName, function () {
|
|
56
|
+
// Little-known fact: the `this` object inside a default function
|
|
57
|
+
// is none other than the partially-built object itself, and any
|
|
58
|
+
// fields initialized directly from builder function arguments
|
|
59
|
+
// (like openingElement, closingElement, and children) are
|
|
60
|
+
// guaranteed to be available.
|
|
61
|
+
return this.openingElement.name;
|
|
77
62
|
}, true) // hidden from traversal
|
|
78
|
-
|
|
79
|
-
|
|
63
|
+
.field("selfClosing", Boolean, function () {
|
|
64
|
+
return this.openingElement.selfClosing;
|
|
80
65
|
}, true) // hidden from traversal
|
|
81
|
-
|
|
82
|
-
|
|
66
|
+
.field("attributes", JSXAttributes, function () {
|
|
67
|
+
return this.openingElement.attributes;
|
|
83
68
|
}, true); // hidden from traversal
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
.bases("
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
.field("value", String);
|
|
122
|
-
|
|
123
|
-
def("JSXEmptyExpression").bases("Expression").build();
|
|
124
|
-
|
|
125
|
-
// This PR has caused many people issues, but supporting it seems like a
|
|
126
|
-
// good idea anyway: https://github.com/babel/babel/pull/4988
|
|
127
|
-
def("JSXSpreadChild")
|
|
128
|
-
.bases("Expression")
|
|
129
|
-
.build("expression")
|
|
130
|
-
.field("expression", def("Expression"));
|
|
131
|
-
};
|
|
69
|
+
def("JSXOpeningElement")
|
|
70
|
+
.bases("Node") // TODO Does this make sense? Can't really be an JSXElement.
|
|
71
|
+
.build("name", "attributes", "selfClosing")
|
|
72
|
+
.field("name", JSXElementName)
|
|
73
|
+
.field("attributes", JSXAttributes, defaults.emptyArray)
|
|
74
|
+
.field("selfClosing", Boolean, defaults["false"]);
|
|
75
|
+
def("JSXClosingElement")
|
|
76
|
+
.bases("Node") // TODO Same concern.
|
|
77
|
+
.build("name")
|
|
78
|
+
.field("name", JSXElementName);
|
|
79
|
+
def("JSXFragment")
|
|
80
|
+
.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);
|
|
86
|
+
def("JSXOpeningFragment")
|
|
87
|
+
.bases("Node") // TODO Same concern.
|
|
88
|
+
.build();
|
|
89
|
+
def("JSXClosingFragment")
|
|
90
|
+
.bases("Node") // TODO Same concern.
|
|
91
|
+
.build();
|
|
92
|
+
def("JSXText")
|
|
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
|
|
99
|
+
def("JSXSpreadChild")
|
|
100
|
+
.bases("Expression")
|
|
101
|
+
.build("expression")
|
|
102
|
+
.field("expression", def("Expression"));
|
|
103
|
+
}
|
|
104
|
+
exports.default = default_1;
|
|
105
|
+
module.exports = exports["default"];
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";;
|
|
2
|
+
/**
|
|
3
|
+
* Type annotation defs shared between Flow and TypeScript.
|
|
4
|
+
* These defs could not be defined in ./flow.ts or ./typescript.ts directly
|
|
5
|
+
* because they use the same name.
|
|
6
|
+
*/
|
|
7
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
8
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
9
|
+
};
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
var types_1 = __importDefault(require("../lib/types"));
|
|
12
|
+
var shared_1 = __importDefault(require("../lib/shared"));
|
|
13
|
+
function default_1(fork) {
|
|
14
|
+
var types = fork.use(types_1.default);
|
|
15
|
+
var def = types.Type.def;
|
|
16
|
+
var or = types.Type.or;
|
|
17
|
+
var defaults = fork.use(shared_1.default).defaults;
|
|
18
|
+
var TypeAnnotation = or(def("TypeAnnotation"), def("TSTypeAnnotation"), null);
|
|
19
|
+
var TypeParamDecl = or(def("TypeParameterDeclaration"), def("TSTypeParameterDeclaration"), null);
|
|
20
|
+
def("Identifier")
|
|
21
|
+
.field("typeAnnotation", TypeAnnotation, defaults["null"]);
|
|
22
|
+
def("ObjectPattern")
|
|
23
|
+
.field("typeAnnotation", TypeAnnotation, defaults["null"]);
|
|
24
|
+
def("Function")
|
|
25
|
+
.field("returnType", TypeAnnotation, defaults["null"])
|
|
26
|
+
.field("typeParameters", TypeParamDecl, defaults["null"]);
|
|
27
|
+
def("ClassProperty")
|
|
28
|
+
.build("key", "value", "typeAnnotation", "static")
|
|
29
|
+
.field("value", or(def("Expression"), null))
|
|
30
|
+
.field("static", Boolean, defaults["false"])
|
|
31
|
+
.field("typeAnnotation", TypeAnnotation, defaults["null"]);
|
|
32
|
+
["ClassDeclaration",
|
|
33
|
+
"ClassExpression",
|
|
34
|
+
].forEach(function (typeName) {
|
|
35
|
+
def(typeName)
|
|
36
|
+
.field("typeParameters", TypeParamDecl, defaults["null"])
|
|
37
|
+
.field("superTypeParameters", or(def("TypeParameterInstantiation"), def("TSTypeParameterInstantiation"), null), defaults["null"])
|
|
38
|
+
.field("implements", or([def("ClassImplements")], [def("TSExpressionWithTypeArguments")]), defaults.emptyArray);
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
exports.default = default_1;
|
|
42
|
+
module.exports = exports["default"];
|