babel-schmooze-sprockets 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/console +14 -0
- data/bin/export-external-helpers +3 -0
- data/bin/setup +6 -0
- data/bin/update-npm-deps +8 -0
- data/examples/myapp/Gemfile +4 -5
- data/examples/myapp/Gemfile.lock +69 -93
- data/examples/myapp/app/assets/javascripts/code/hello.es6 +5 -1
- data/examples/myapp/app/views/layouts/application.html.erb +1 -0
- data/examples/myapp/app/views/site/home.html.erb +0 -1
- data/lib/babel-schmooze-sprockets/babel_processor.rb +6 -4
- data/lib/babel-schmooze-sprockets/engine.rb +1 -4
- data/lib/babel-schmooze-sprockets/version.rb +1 -1
- data/node_modules/amdefine/package.json +8 -1
- data/node_modules/babel-core/node_modules/babel-runtime/package.json +9 -5
- data/node_modules/babel-core/node_modules/babel-traverse/.npmignore +3 -0
- data/node_modules/babel-core/node_modules/babel-traverse/README.md +1 -0
- data/node_modules/babel-core/node_modules/babel-traverse/lib/cache.js +20 -0
- data/node_modules/babel-core/node_modules/babel-traverse/lib/context.js +219 -0
- data/node_modules/babel-core/node_modules/babel-traverse/lib/hub.js +19 -0
- data/node_modules/babel-core/node_modules/babel-traverse/lib/index.js +250 -0
- data/node_modules/babel-core/node_modules/babel-traverse/lib/path/ancestry.js +317 -0
- data/node_modules/babel-core/node_modules/babel-traverse/lib/path/comments.js +55 -0
- data/node_modules/babel-core/node_modules/babel-traverse/lib/path/context.js +297 -0
- data/node_modules/babel-core/node_modules/babel-traverse/lib/path/conversion.js +48 -0
- data/node_modules/babel-core/node_modules/babel-traverse/lib/path/evaluation.js +406 -0
- data/node_modules/babel-core/node_modules/babel-traverse/lib/path/family.js +168 -0
- data/node_modules/babel-core/node_modules/babel-traverse/lib/path/index.js +245 -0
- data/node_modules/babel-core/node_modules/babel-traverse/lib/path/inference/index.js +151 -0
- data/node_modules/babel-core/node_modules/babel-traverse/lib/path/inference/inferer-reference.js +225 -0
- data/node_modules/babel-core/node_modules/babel-traverse/lib/path/inference/inferers.js +198 -0
- data/node_modules/babel-core/node_modules/babel-traverse/lib/path/introspection.js +518 -0
- data/node_modules/babel-core/node_modules/babel-traverse/lib/path/lib/hoister.js +166 -0
- data/node_modules/babel-core/node_modules/babel-traverse/lib/path/lib/removal-hooks.js +64 -0
- data/node_modules/babel-core/node_modules/babel-traverse/lib/path/lib/virtual-types.js +141 -0
- data/node_modules/babel-core/node_modules/babel-traverse/lib/path/modification.js +293 -0
- data/node_modules/babel-core/node_modules/babel-traverse/lib/path/removal.js +72 -0
- data/node_modules/babel-core/node_modules/babel-traverse/lib/path/replacement.js +302 -0
- data/node_modules/babel-core/node_modules/babel-traverse/lib/scope/binding.js +105 -0
- data/node_modules/babel-core/node_modules/babel-traverse/lib/scope/index.js +1222 -0
- data/node_modules/babel-core/node_modules/babel-traverse/lib/scope/lib/renamer.js +154 -0
- data/node_modules/babel-core/node_modules/babel-traverse/lib/visitors.js +360 -0
- data/node_modules/babel-core/node_modules/babel-traverse/package.json +107 -0
- data/node_modules/babel-core/node_modules/core-js/package.json +20 -2
- data/node_modules/babel-core/package.json +31 -24
- data/node_modules/babel-generator/lib/buffer.js +69 -70
- data/node_modules/babel-generator/lib/generators/base.js +16 -12
- data/node_modules/babel-generator/lib/generators/classes.js +28 -19
- data/node_modules/babel-generator/lib/generators/expressions.js +76 -99
- data/node_modules/babel-generator/lib/generators/flow.js +178 -119
- data/node_modules/babel-generator/lib/generators/jsx.js +38 -29
- data/node_modules/babel-generator/lib/generators/methods.js +34 -25
- data/node_modules/babel-generator/lib/generators/modules.js +67 -40
- data/node_modules/babel-generator/lib/generators/statements.js +93 -76
- data/node_modules/babel-generator/lib/generators/template-literals.js +12 -11
- data/node_modules/babel-generator/lib/generators/types.js +56 -49
- data/node_modules/babel-generator/lib/index.js +52 -39
- data/node_modules/babel-generator/lib/node/index.js +12 -18
- data/node_modules/babel-generator/lib/node/parentheses.js +23 -27
- data/node_modules/babel-generator/lib/node/whitespace.js +20 -26
- data/node_modules/babel-generator/lib/position.js +5 -5
- data/node_modules/babel-generator/lib/printer.js +52 -81
- data/node_modules/babel-generator/lib/source-map.js +9 -11
- data/node_modules/babel-generator/lib/whitespace.js +13 -13
- data/node_modules/babel-generator/node_modules/babel-runtime/package.json +19 -6
- data/node_modules/babel-generator/node_modules/babel-types/.npmignore +3 -0
- data/node_modules/babel-generator/node_modules/babel-types/README.md +1141 -0
- data/node_modules/babel-generator/node_modules/babel-types/lib/constants.js +40 -0
- data/node_modules/babel-generator/node_modules/babel-types/lib/converters.js +378 -0
- data/node_modules/babel-generator/node_modules/babel-types/lib/definitions/core.js +704 -0
- data/node_modules/babel-generator/node_modules/babel-types/lib/definitions/es2015.js +354 -0
- data/node_modules/babel-generator/node_modules/babel-types/lib/definitions/experimental.js +85 -0
- data/node_modules/babel-generator/node_modules/babel-types/lib/definitions/flow.js +319 -0
- data/node_modules/babel-generator/node_modules/babel-types/lib/definitions/index.js +247 -0
- data/node_modules/babel-generator/node_modules/babel-types/lib/definitions/init.js +15 -0
- data/node_modules/babel-generator/node_modules/babel-types/lib/definitions/jsx.js +137 -0
- data/node_modules/babel-generator/node_modules/babel-types/lib/definitions/misc.js +21 -0
- data/node_modules/babel-generator/node_modules/babel-types/lib/flow.js +129 -0
- data/node_modules/babel-generator/node_modules/babel-types/lib/index.js +848 -0
- data/node_modules/babel-generator/node_modules/babel-types/lib/react.js +83 -0
- data/node_modules/babel-generator/node_modules/babel-types/lib/retrievers.js +123 -0
- data/node_modules/babel-generator/node_modules/babel-types/lib/validators.js +276 -0
- data/node_modules/babel-generator/node_modules/babel-types/package.json +103 -0
- data/node_modules/babel-generator/node_modules/core-js/package.json +10 -5
- data/node_modules/babel-generator/package.json +19 -16
- data/node_modules/babel-helpers/node_modules/babel-runtime/package.json +19 -3
- data/node_modules/babel-helpers/node_modules/core-js/package.json +20 -4
- data/node_modules/babel-helpers/package.json +8 -1
- data/node_modules/babel-register/node_modules/babel-runtime/package.json +19 -3
- data/node_modules/babel-register/node_modules/core-js/package.json +20 -4
- data/node_modules/babel-register/package.json +8 -1
- data/node_modules/balanced-match/package.json +8 -1
- data/node_modules/brace-expansion/package.json +19 -12
- data/node_modules/concat-map/package.json +9 -2
- data/node_modules/convert-source-map/package.json +8 -1
- data/node_modules/detect-indent/package.json +8 -1
- data/node_modules/get-stdin/package.json +8 -1
- data/node_modules/home-or-tmp/package.json +9 -2
- data/node_modules/is-finite/package.json +8 -2
- data/node_modules/json5/package.json +8 -1
- data/node_modules/minimatch/README.md +2 -9
- data/node_modules/minimatch/minimatch.js +15 -3
- data/node_modules/minimatch/package.json +29 -21
- data/node_modules/minimist/package.json +8 -1
- data/node_modules/mkdirp/node_modules/minimist/package.json +8 -1
- data/node_modules/mkdirp/package.json +8 -1
- data/node_modules/number-is-nan/package.json +8 -1
- data/node_modules/os-tmpdir/package.json +8 -1
- data/node_modules/path-exists/package.json +8 -1
- data/node_modules/path-is-absolute/package.json +8 -1
- data/node_modules/repeating/package.json +15 -11
- data/node_modules/shebang-regex/package.json +8 -1
- data/node_modules/slash/package.json +8 -1
- data/node_modules/source-map-support/node_modules/source-map/package.json +8 -1
- data/node_modules/source-map-support/package.json +8 -1
- data/node_modules/source-map/package.json +8 -1
- data/node_modules/user-home/package.json +8 -1
- data/package.json +1 -1
- metadata +54 -6
- data/node_modules/brace-expansion/.npmignore +0 -3
- data/node_modules/brace-expansion/example.js +0 -8
- data/node_modules/minimatch/browser.js +0 -1159
@@ -0,0 +1,247 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
exports.__esModule = true;
|
4
|
+
exports.DEPRECATED_KEYS = exports.BUILDER_KEYS = exports.NODE_FIELDS = exports.ALIAS_KEYS = exports.VISITOR_KEYS = undefined;
|
5
|
+
|
6
|
+
var _getIterator2 = require("babel-runtime/core-js/get-iterator");
|
7
|
+
|
8
|
+
var _getIterator3 = _interopRequireDefault(_getIterator2);
|
9
|
+
|
10
|
+
var _stringify = require("babel-runtime/core-js/json/stringify");
|
11
|
+
|
12
|
+
var _stringify2 = _interopRequireDefault(_stringify);
|
13
|
+
|
14
|
+
var _typeof2 = require("babel-runtime/helpers/typeof");
|
15
|
+
|
16
|
+
var _typeof3 = _interopRequireDefault(_typeof2);
|
17
|
+
|
18
|
+
exports.assertEach = assertEach;
|
19
|
+
exports.assertOneOf = assertOneOf;
|
20
|
+
exports.assertNodeType = assertNodeType;
|
21
|
+
exports.assertNodeOrValueType = assertNodeOrValueType;
|
22
|
+
exports.assertValueType = assertValueType;
|
23
|
+
exports.chain = chain;
|
24
|
+
exports.default = defineType;
|
25
|
+
|
26
|
+
var _index = require("../index");
|
27
|
+
|
28
|
+
var t = _interopRequireWildcard(_index);
|
29
|
+
|
30
|
+
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
|
31
|
+
|
32
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
33
|
+
|
34
|
+
var VISITOR_KEYS = exports.VISITOR_KEYS = {};
|
35
|
+
var ALIAS_KEYS = exports.ALIAS_KEYS = {};
|
36
|
+
var NODE_FIELDS = exports.NODE_FIELDS = {};
|
37
|
+
var BUILDER_KEYS = exports.BUILDER_KEYS = {};
|
38
|
+
var DEPRECATED_KEYS = exports.DEPRECATED_KEYS = {};
|
39
|
+
|
40
|
+
function getType(val) {
|
41
|
+
if (Array.isArray(val)) {
|
42
|
+
return "array";
|
43
|
+
} else if (val === null) {
|
44
|
+
return "null";
|
45
|
+
} else if (val === undefined) {
|
46
|
+
return "undefined";
|
47
|
+
} else {
|
48
|
+
return typeof val === "undefined" ? "undefined" : (0, _typeof3.default)(val);
|
49
|
+
}
|
50
|
+
}
|
51
|
+
|
52
|
+
function assertEach(callback) {
|
53
|
+
function validator(node, key, val) {
|
54
|
+
if (!Array.isArray(val)) return;
|
55
|
+
|
56
|
+
for (var i = 0; i < val.length; i++) {
|
57
|
+
callback(node, key + "[" + i + "]", val[i]);
|
58
|
+
}
|
59
|
+
}
|
60
|
+
validator.each = callback;
|
61
|
+
return validator;
|
62
|
+
}
|
63
|
+
|
64
|
+
function assertOneOf() {
|
65
|
+
for (var _len = arguments.length, vals = Array(_len), _key = 0; _key < _len; _key++) {
|
66
|
+
vals[_key] = arguments[_key];
|
67
|
+
}
|
68
|
+
|
69
|
+
function validate(node, key, val) {
|
70
|
+
if (vals.indexOf(val) < 0) {
|
71
|
+
throw new TypeError("Property " + key + " expected value to be one of " + (0, _stringify2.default)(vals) + " but got " + (0, _stringify2.default)(val));
|
72
|
+
}
|
73
|
+
}
|
74
|
+
|
75
|
+
validate.oneOf = vals;
|
76
|
+
|
77
|
+
return validate;
|
78
|
+
}
|
79
|
+
|
80
|
+
function assertNodeType() {
|
81
|
+
for (var _len2 = arguments.length, types = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
82
|
+
types[_key2] = arguments[_key2];
|
83
|
+
}
|
84
|
+
|
85
|
+
function validate(node, key, val) {
|
86
|
+
var valid = false;
|
87
|
+
|
88
|
+
for (var _iterator = types, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : (0, _getIterator3.default)(_iterator);;) {
|
89
|
+
var _ref;
|
90
|
+
|
91
|
+
if (_isArray) {
|
92
|
+
if (_i >= _iterator.length) break;
|
93
|
+
_ref = _iterator[_i++];
|
94
|
+
} else {
|
95
|
+
_i = _iterator.next();
|
96
|
+
if (_i.done) break;
|
97
|
+
_ref = _i.value;
|
98
|
+
}
|
99
|
+
|
100
|
+
var type = _ref;
|
101
|
+
|
102
|
+
if (t.is(type, val)) {
|
103
|
+
valid = true;
|
104
|
+
break;
|
105
|
+
}
|
106
|
+
}
|
107
|
+
|
108
|
+
if (!valid) {
|
109
|
+
throw new TypeError("Property " + key + " of " + node.type + " expected node to be of a type " + (0, _stringify2.default)(types) + " " + ("but instead got " + (0, _stringify2.default)(val && val.type)));
|
110
|
+
}
|
111
|
+
}
|
112
|
+
|
113
|
+
validate.oneOfNodeTypes = types;
|
114
|
+
|
115
|
+
return validate;
|
116
|
+
}
|
117
|
+
|
118
|
+
function assertNodeOrValueType() {
|
119
|
+
for (var _len3 = arguments.length, types = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
|
120
|
+
types[_key3] = arguments[_key3];
|
121
|
+
}
|
122
|
+
|
123
|
+
function validate(node, key, val) {
|
124
|
+
var valid = false;
|
125
|
+
|
126
|
+
for (var _iterator2 = types, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : (0, _getIterator3.default)(_iterator2);;) {
|
127
|
+
var _ref2;
|
128
|
+
|
129
|
+
if (_isArray2) {
|
130
|
+
if (_i2 >= _iterator2.length) break;
|
131
|
+
_ref2 = _iterator2[_i2++];
|
132
|
+
} else {
|
133
|
+
_i2 = _iterator2.next();
|
134
|
+
if (_i2.done) break;
|
135
|
+
_ref2 = _i2.value;
|
136
|
+
}
|
137
|
+
|
138
|
+
var type = _ref2;
|
139
|
+
|
140
|
+
if (getType(val) === type || t.is(type, val)) {
|
141
|
+
valid = true;
|
142
|
+
break;
|
143
|
+
}
|
144
|
+
}
|
145
|
+
|
146
|
+
if (!valid) {
|
147
|
+
throw new TypeError("Property " + key + " of " + node.type + " expected node to be of a type " + (0, _stringify2.default)(types) + " " + ("but instead got " + (0, _stringify2.default)(val && val.type)));
|
148
|
+
}
|
149
|
+
}
|
150
|
+
|
151
|
+
validate.oneOfNodeOrValueTypes = types;
|
152
|
+
|
153
|
+
return validate;
|
154
|
+
}
|
155
|
+
|
156
|
+
function assertValueType(type) {
|
157
|
+
function validate(node, key, val) {
|
158
|
+
var valid = getType(val) === type;
|
159
|
+
|
160
|
+
if (!valid) {
|
161
|
+
throw new TypeError("Property " + key + " expected type of " + type + " but got " + getType(val));
|
162
|
+
}
|
163
|
+
}
|
164
|
+
|
165
|
+
validate.type = type;
|
166
|
+
|
167
|
+
return validate;
|
168
|
+
}
|
169
|
+
|
170
|
+
function chain() {
|
171
|
+
for (var _len4 = arguments.length, fns = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
|
172
|
+
fns[_key4] = arguments[_key4];
|
173
|
+
}
|
174
|
+
|
175
|
+
function validate() {
|
176
|
+
for (var _iterator3 = fns, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : (0, _getIterator3.default)(_iterator3);;) {
|
177
|
+
var _ref3;
|
178
|
+
|
179
|
+
if (_isArray3) {
|
180
|
+
if (_i3 >= _iterator3.length) break;
|
181
|
+
_ref3 = _iterator3[_i3++];
|
182
|
+
} else {
|
183
|
+
_i3 = _iterator3.next();
|
184
|
+
if (_i3.done) break;
|
185
|
+
_ref3 = _i3.value;
|
186
|
+
}
|
187
|
+
|
188
|
+
var fn = _ref3;
|
189
|
+
|
190
|
+
fn.apply(undefined, arguments);
|
191
|
+
}
|
192
|
+
}
|
193
|
+
validate.chainOf = fns;
|
194
|
+
return validate;
|
195
|
+
}
|
196
|
+
|
197
|
+
function defineType(type) {
|
198
|
+
var opts = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
|
199
|
+
|
200
|
+
var inherits = opts.inherits && store[opts.inherits] || {};
|
201
|
+
|
202
|
+
opts.fields = opts.fields || inherits.fields || {};
|
203
|
+
opts.visitor = opts.visitor || inherits.visitor || [];
|
204
|
+
opts.aliases = opts.aliases || inherits.aliases || [];
|
205
|
+
opts.builder = opts.builder || inherits.builder || opts.visitor || [];
|
206
|
+
|
207
|
+
if (opts.deprecatedAlias) {
|
208
|
+
DEPRECATED_KEYS[opts.deprecatedAlias] = type;
|
209
|
+
}
|
210
|
+
|
211
|
+
// ensure all field keys are represented in `fields`
|
212
|
+
for (var _iterator4 = opts.visitor.concat(opts.builder), _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : (0, _getIterator3.default)(_iterator4);;) {
|
213
|
+
var _ref4;
|
214
|
+
|
215
|
+
if (_isArray4) {
|
216
|
+
if (_i4 >= _iterator4.length) break;
|
217
|
+
_ref4 = _iterator4[_i4++];
|
218
|
+
} else {
|
219
|
+
_i4 = _iterator4.next();
|
220
|
+
if (_i4.done) break;
|
221
|
+
_ref4 = _i4.value;
|
222
|
+
}
|
223
|
+
|
224
|
+
var _key5 = _ref4;
|
225
|
+
|
226
|
+
opts.fields[_key5] = opts.fields[_key5] || {};
|
227
|
+
}
|
228
|
+
|
229
|
+
for (var key in opts.fields) {
|
230
|
+
var field = opts.fields[key];
|
231
|
+
|
232
|
+
if (field.default === undefined) {
|
233
|
+
field.default = null;
|
234
|
+
} else if (!field.validate) {
|
235
|
+
field.validate = assertValueType(getType(field.default));
|
236
|
+
}
|
237
|
+
}
|
238
|
+
|
239
|
+
VISITOR_KEYS[type] = opts.visitor;
|
240
|
+
BUILDER_KEYS[type] = opts.builder;
|
241
|
+
NODE_FIELDS[type] = opts.fields;
|
242
|
+
ALIAS_KEYS[type] = opts.aliases;
|
243
|
+
|
244
|
+
store[type] = opts;
|
245
|
+
}
|
246
|
+
|
247
|
+
var store = {};
|
@@ -0,0 +1,137 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _index = require("./index");
|
4
|
+
|
5
|
+
var _index2 = _interopRequireDefault(_index);
|
6
|
+
|
7
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
8
|
+
|
9
|
+
(0, _index2.default)("JSXAttribute", {
|
10
|
+
visitor: ["name", "value"],
|
11
|
+
aliases: ["JSX", "Immutable"],
|
12
|
+
fields: {
|
13
|
+
name: {
|
14
|
+
validate: (0, _index.assertNodeType)("JSXIdentifier", "JSXNamespacedName")
|
15
|
+
},
|
16
|
+
value: {
|
17
|
+
optional: true,
|
18
|
+
validate: (0, _index.assertNodeType)("JSXElement", "StringLiteral", "JSXExpressionContainer")
|
19
|
+
}
|
20
|
+
}
|
21
|
+
});
|
22
|
+
|
23
|
+
(0, _index2.default)("JSXClosingElement", {
|
24
|
+
visitor: ["name"],
|
25
|
+
aliases: ["JSX", "Immutable"],
|
26
|
+
fields: {
|
27
|
+
name: {
|
28
|
+
validate: (0, _index.assertNodeType)("JSXIdentifier", "JSXMemberExpression")
|
29
|
+
}
|
30
|
+
}
|
31
|
+
});
|
32
|
+
|
33
|
+
(0, _index2.default)("JSXElement", {
|
34
|
+
builder: ["openingElement", "closingElement", "children", "selfClosing"],
|
35
|
+
visitor: ["openingElement", "children", "closingElement"],
|
36
|
+
aliases: ["JSX", "Immutable", "Expression"],
|
37
|
+
fields: {
|
38
|
+
openingElement: {
|
39
|
+
validate: (0, _index.assertNodeType)("JSXOpeningElement")
|
40
|
+
},
|
41
|
+
closingElement: {
|
42
|
+
optional: true,
|
43
|
+
validate: (0, _index.assertNodeType)("JSXClosingElement")
|
44
|
+
},
|
45
|
+
children: {
|
46
|
+
validate: (0, _index.chain)((0, _index.assertValueType)("array"), (0, _index.assertEach)((0, _index.assertNodeType)("JSXText", "JSXExpressionContainer", "JSXElement")))
|
47
|
+
}
|
48
|
+
}
|
49
|
+
});
|
50
|
+
|
51
|
+
(0, _index2.default)("JSXEmptyExpression", {
|
52
|
+
aliases: ["JSX", "Expression"]
|
53
|
+
});
|
54
|
+
|
55
|
+
(0, _index2.default)("JSXExpressionContainer", {
|
56
|
+
visitor: ["expression"],
|
57
|
+
aliases: ["JSX", "Immutable"],
|
58
|
+
fields: {
|
59
|
+
expression: {
|
60
|
+
validate: (0, _index.assertNodeType)("Expression")
|
61
|
+
}
|
62
|
+
}
|
63
|
+
});
|
64
|
+
|
65
|
+
(0, _index2.default)("JSXIdentifier", {
|
66
|
+
builder: ["name"],
|
67
|
+
aliases: ["JSX", "Expression"],
|
68
|
+
fields: {
|
69
|
+
name: {
|
70
|
+
validate: (0, _index.assertValueType)("string")
|
71
|
+
}
|
72
|
+
}
|
73
|
+
});
|
74
|
+
|
75
|
+
(0, _index2.default)("JSXMemberExpression", {
|
76
|
+
visitor: ["object", "property"],
|
77
|
+
aliases: ["JSX", "Expression"],
|
78
|
+
fields: {
|
79
|
+
object: {
|
80
|
+
validate: (0, _index.assertNodeType)("JSXMemberExpression", "JSXIdentifier")
|
81
|
+
},
|
82
|
+
property: {
|
83
|
+
validate: (0, _index.assertNodeType)("JSXIdentifier")
|
84
|
+
}
|
85
|
+
}
|
86
|
+
});
|
87
|
+
|
88
|
+
(0, _index2.default)("JSXNamespacedName", {
|
89
|
+
visitor: ["namespace", "name"],
|
90
|
+
aliases: ["JSX"],
|
91
|
+
fields: {
|
92
|
+
namespace: {
|
93
|
+
validate: (0, _index.assertNodeType)("JSXIdentifier")
|
94
|
+
},
|
95
|
+
name: {
|
96
|
+
validate: (0, _index.assertNodeType)("JSXIdentifier")
|
97
|
+
}
|
98
|
+
}
|
99
|
+
});
|
100
|
+
|
101
|
+
(0, _index2.default)("JSXOpeningElement", {
|
102
|
+
builder: ["name", "attributes", "selfClosing"],
|
103
|
+
visitor: ["name", "attributes"],
|
104
|
+
aliases: ["JSX", "Immutable"],
|
105
|
+
fields: {
|
106
|
+
name: {
|
107
|
+
validate: (0, _index.assertNodeType)("JSXIdentifier", "JSXMemberExpression")
|
108
|
+
},
|
109
|
+
selfClosing: {
|
110
|
+
default: false,
|
111
|
+
validate: (0, _index.assertValueType)("boolean")
|
112
|
+
},
|
113
|
+
attributes: {
|
114
|
+
validate: (0, _index.chain)((0, _index.assertValueType)("array"), (0, _index.assertEach)((0, _index.assertNodeType)("JSXAttribute", "JSXSpreadAttribute")))
|
115
|
+
}
|
116
|
+
}
|
117
|
+
});
|
118
|
+
|
119
|
+
(0, _index2.default)("JSXSpreadAttribute", {
|
120
|
+
visitor: ["argument"],
|
121
|
+
aliases: ["JSX"],
|
122
|
+
fields: {
|
123
|
+
argument: {
|
124
|
+
validate: (0, _index.assertNodeType)("Expression")
|
125
|
+
}
|
126
|
+
}
|
127
|
+
});
|
128
|
+
|
129
|
+
(0, _index2.default)("JSXText", {
|
130
|
+
aliases: ["JSX", "Immutable"],
|
131
|
+
builder: ["value"],
|
132
|
+
fields: {
|
133
|
+
value: {
|
134
|
+
validate: (0, _index.assertValueType)("string")
|
135
|
+
}
|
136
|
+
}
|
137
|
+
});
|
@@ -0,0 +1,21 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _index = require("./index");
|
4
|
+
|
5
|
+
var _index2 = _interopRequireDefault(_index);
|
6
|
+
|
7
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
8
|
+
|
9
|
+
(0, _index2.default)("Noop", {
|
10
|
+
visitor: []
|
11
|
+
});
|
12
|
+
|
13
|
+
(0, _index2.default)("ParenthesizedExpression", {
|
14
|
+
visitor: ["expression"],
|
15
|
+
aliases: ["Expression", "ExpressionWrapper"],
|
16
|
+
fields: {
|
17
|
+
expression: {
|
18
|
+
validate: (0, _index.assertNodeType)("Expression")
|
19
|
+
}
|
20
|
+
}
|
21
|
+
});
|
@@ -0,0 +1,129 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
exports.__esModule = true;
|
4
|
+
exports.createUnionTypeAnnotation = createUnionTypeAnnotation;
|
5
|
+
exports.removeTypeDuplicates = removeTypeDuplicates;
|
6
|
+
exports.createTypeAnnotationBasedOnTypeof = createTypeAnnotationBasedOnTypeof;
|
7
|
+
|
8
|
+
var _index = require("./index");
|
9
|
+
|
10
|
+
var t = _interopRequireWildcard(_index);
|
11
|
+
|
12
|
+
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
|
13
|
+
|
14
|
+
/**
|
15
|
+
* Takes an array of `types` and flattens them, removing duplicates and
|
16
|
+
* returns a `UnionTypeAnnotation` node containg them.
|
17
|
+
*/
|
18
|
+
|
19
|
+
function createUnionTypeAnnotation(types) {
|
20
|
+
var flattened = removeTypeDuplicates(types);
|
21
|
+
|
22
|
+
if (flattened.length === 1) {
|
23
|
+
return flattened[0];
|
24
|
+
} else {
|
25
|
+
return t.unionTypeAnnotation(flattened);
|
26
|
+
}
|
27
|
+
}
|
28
|
+
|
29
|
+
/**
|
30
|
+
* Dedupe type annotations.
|
31
|
+
*/
|
32
|
+
|
33
|
+
function removeTypeDuplicates(nodes) {
|
34
|
+
var generics = {};
|
35
|
+
var bases = {};
|
36
|
+
|
37
|
+
// store union type groups to circular references
|
38
|
+
var typeGroups = [];
|
39
|
+
|
40
|
+
var types = [];
|
41
|
+
|
42
|
+
for (var i = 0; i < nodes.length; i++) {
|
43
|
+
var node = nodes[i];
|
44
|
+
if (!node) continue;
|
45
|
+
|
46
|
+
// detect duplicates
|
47
|
+
if (types.indexOf(node) >= 0) {
|
48
|
+
continue;
|
49
|
+
}
|
50
|
+
|
51
|
+
// this type matches anything
|
52
|
+
if (t.isAnyTypeAnnotation(node)) {
|
53
|
+
return [node];
|
54
|
+
}
|
55
|
+
|
56
|
+
//
|
57
|
+
if (t.isFlowBaseAnnotation(node)) {
|
58
|
+
bases[node.type] = node;
|
59
|
+
continue;
|
60
|
+
}
|
61
|
+
|
62
|
+
//
|
63
|
+
if (t.isUnionTypeAnnotation(node)) {
|
64
|
+
if (typeGroups.indexOf(node.types) < 0) {
|
65
|
+
nodes = nodes.concat(node.types);
|
66
|
+
typeGroups.push(node.types);
|
67
|
+
}
|
68
|
+
continue;
|
69
|
+
}
|
70
|
+
|
71
|
+
// find a matching generic type and merge and deduplicate the type parameters
|
72
|
+
if (t.isGenericTypeAnnotation(node)) {
|
73
|
+
var name = node.id.name;
|
74
|
+
|
75
|
+
if (generics[name]) {
|
76
|
+
var existing = generics[name];
|
77
|
+
if (existing.typeParameters) {
|
78
|
+
if (node.typeParameters) {
|
79
|
+
existing.typeParameters.params = removeTypeDuplicates(existing.typeParameters.params.concat(node.typeParameters.params));
|
80
|
+
}
|
81
|
+
} else {
|
82
|
+
existing = node.typeParameters;
|
83
|
+
}
|
84
|
+
} else {
|
85
|
+
generics[name] = node;
|
86
|
+
}
|
87
|
+
|
88
|
+
continue;
|
89
|
+
}
|
90
|
+
|
91
|
+
types.push(node);
|
92
|
+
}
|
93
|
+
|
94
|
+
// add back in bases
|
95
|
+
for (var type in bases) {
|
96
|
+
types.push(bases[type]);
|
97
|
+
}
|
98
|
+
|
99
|
+
// add back in generics
|
100
|
+
for (var _name in generics) {
|
101
|
+
types.push(generics[_name]);
|
102
|
+
}
|
103
|
+
|
104
|
+
return types;
|
105
|
+
}
|
106
|
+
|
107
|
+
/**
|
108
|
+
* Create a type anotation based on typeof expression.
|
109
|
+
*/
|
110
|
+
|
111
|
+
function createTypeAnnotationBasedOnTypeof(type) {
|
112
|
+
if (type === "string") {
|
113
|
+
return t.stringTypeAnnotation();
|
114
|
+
} else if (type === "number") {
|
115
|
+
return t.numberTypeAnnotation();
|
116
|
+
} else if (type === "undefined") {
|
117
|
+
return t.voidTypeAnnotation();
|
118
|
+
} else if (type === "boolean") {
|
119
|
+
return t.booleanTypeAnnotation();
|
120
|
+
} else if (type === "function") {
|
121
|
+
return t.genericTypeAnnotation(t.identifier("Function"));
|
122
|
+
} else if (type === "object") {
|
123
|
+
return t.genericTypeAnnotation(t.identifier("Object"));
|
124
|
+
} else if (type === "symbol") {
|
125
|
+
return t.genericTypeAnnotation(t.identifier("Symbol"));
|
126
|
+
} else {
|
127
|
+
throw new Error("Invalid typeof value");
|
128
|
+
}
|
129
|
+
}
|