babel-types
Advanced tools
Comparing version 7.0.0-alpha.9 to 7.0.0-alpha.10
@@ -39,102 +39,111 @@ "use strict"; | ||
function toSequenceExpression(nodes, scope) { | ||
if (!nodes || !nodes.length) return; | ||
function gatherSequenceExpressions(nodes, scope, declars) { | ||
var exprs = []; | ||
var ensureLastUndefined = true; | ||
var declars = []; | ||
var bailed = false; | ||
for (var _iterator = nodes, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { | ||
var _ref; | ||
var result = convert(nodes); | ||
if (bailed) return; | ||
if (_isArray) { | ||
if (_i >= _iterator.length) break; | ||
_ref = _iterator[_i++]; | ||
} else { | ||
_i = _iterator.next(); | ||
if (_i.done) break; | ||
_ref = _i.value; | ||
} | ||
for (var i = 0; i < declars.length; i++) { | ||
scope.push(declars[i]); | ||
} | ||
var node = _ref; | ||
return result; | ||
ensureLastUndefined = false; | ||
function convert(nodes) { | ||
var ensureLastUndefined = false; | ||
var exprs = []; | ||
if (t.isExpression(node)) { | ||
exprs.push(node); | ||
} else if (t.isExpressionStatement(node)) { | ||
exprs.push(node.expression); | ||
} else if (t.isVariableDeclaration(node)) { | ||
if (node.kind !== "var") return; | ||
for (var _iterator = nodes, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { | ||
var _ref; | ||
for (var _iterator2 = node.declarations, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) { | ||
var _ref2; | ||
if (_isArray) { | ||
if (_i >= _iterator.length) break; | ||
_ref = _iterator[_i++]; | ||
} else { | ||
_i = _iterator.next(); | ||
if (_i.done) break; | ||
_ref = _i.value; | ||
} | ||
if (_isArray2) { | ||
if (_i2 >= _iterator2.length) break; | ||
_ref2 = _iterator2[_i2++]; | ||
} else { | ||
_i2 = _iterator2.next(); | ||
if (_i2.done) break; | ||
_ref2 = _i2.value; | ||
} | ||
var node = _ref; | ||
var declar = _ref2; | ||
if (t.isExpression(node)) { | ||
exprs.push(node); | ||
} else if (t.isExpressionStatement(node)) { | ||
exprs.push(node.expression); | ||
} else if (t.isVariableDeclaration(node)) { | ||
if (node.kind !== "var") return bailed = true; | ||
var bindings = t.getBindingIdentifiers(declar); | ||
for (var key in bindings) { | ||
declars.push({ | ||
kind: node.kind, | ||
id: bindings[key] | ||
}); | ||
} | ||
for (var _iterator2 = node.declarations, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) { | ||
var _ref2; | ||
if (declar.init) { | ||
exprs.push(t.assignmentExpression("=", declar.id, declar.init)); | ||
} | ||
} | ||
if (_isArray2) { | ||
if (_i2 >= _iterator2.length) break; | ||
_ref2 = _iterator2[_i2++]; | ||
} else { | ||
_i2 = _iterator2.next(); | ||
if (_i2.done) break; | ||
_ref2 = _i2.value; | ||
} | ||
ensureLastUndefined = true; | ||
} else if (t.isIfStatement(node)) { | ||
var consequent = node.consequent ? gatherSequenceExpressions([node.consequent], scope, declars) : scope.buildUndefinedNode(); | ||
var alternate = node.alternate ? gatherSequenceExpressions([node.alternate], scope, declars) : scope.buildUndefinedNode(); | ||
if (!consequent || !alternate) return; | ||
var declar = _ref2; | ||
exprs.push(t.conditionalExpression(node.test, consequent, alternate)); | ||
} else if (t.isBlockStatement(node)) { | ||
var body = gatherSequenceExpressions(node.body, scope, declars); | ||
if (!body) return; | ||
var bindings = t.getBindingIdentifiers(declar); | ||
for (var key in bindings) { | ||
declars.push({ | ||
kind: node.kind, | ||
id: bindings[key] | ||
}); | ||
} | ||
exprs.push(body); | ||
} else if (t.isEmptyStatement(node)) { | ||
ensureLastUndefined = true; | ||
} else { | ||
return; | ||
} | ||
} | ||
if (declar.init) { | ||
exprs.push(t.assignmentExpression("=", declar.id, declar.init)); | ||
} | ||
} | ||
if (ensureLastUndefined) { | ||
exprs.push(scope.buildUndefinedNode()); | ||
} | ||
ensureLastUndefined = true; | ||
continue; | ||
} else if (t.isIfStatement(node)) { | ||
var consequent = node.consequent ? convert([node.consequent]) : scope.buildUndefinedNode(); | ||
var alternate = node.alternate ? convert([node.alternate]) : scope.buildUndefinedNode(); | ||
if (exprs.length === 1) { | ||
return exprs[0]; | ||
} else { | ||
return t.sequenceExpression(exprs); | ||
} | ||
} | ||
if (consequent === true || alternate === true) { | ||
return bailed = true; | ||
} | ||
function toSequenceExpression(nodes, scope) { | ||
if (!nodes || !nodes.length) return; | ||
exprs.push(t.conditionalExpression(node.test, consequent, alternate)); | ||
} else if (t.isBlockStatement(node)) { | ||
exprs.push(convert(node.body)); | ||
} else if (t.isEmptyStatement(node)) { | ||
ensureLastUndefined = true; | ||
continue; | ||
} else { | ||
return bailed = true; | ||
} | ||
var declars = []; | ||
var result = gatherSequenceExpressions(nodes, scope, declars); | ||
if (!result) return; | ||
ensureLastUndefined = false; | ||
} | ||
for (var _iterator3 = declars, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) { | ||
var _ref3; | ||
if (ensureLastUndefined || exprs.length === 0) { | ||
exprs.push(scope.buildUndefinedNode()); | ||
if (_isArray3) { | ||
if (_i3 >= _iterator3.length) break; | ||
_ref3 = _iterator3[_i3++]; | ||
} else { | ||
_i3 = _iterator3.next(); | ||
if (_i3.done) break; | ||
_ref3 = _i3.value; | ||
} | ||
if (exprs.length === 1) { | ||
return exprs[0]; | ||
} else { | ||
return t.sequenceExpression(exprs); | ||
} | ||
var declar = _ref3; | ||
scope.push(declar); | ||
} | ||
return result; | ||
} | ||
@@ -141,0 +150,0 @@ |
@@ -509,3 +509,3 @@ "use strict"; | ||
value: { | ||
validate: (0, _index2.assertNodeType)("Expression") | ||
validate: (0, _index2.assertNodeType)("Expression", "Pattern", "RestElement") | ||
}, | ||
@@ -512,0 +512,0 @@ shorthand: { |
@@ -30,3 +30,3 @@ "use strict"; | ||
elements: { | ||
validate: (0, _index.chain)((0, _index.assertValueType)("array"), (0, _index.assertEach)((0, _index.assertNodeType)("Expression"))) | ||
validate: (0, _index.chain)((0, _index.assertValueType)("array"), (0, _index.assertEach)((0, _index.assertNodeType)("Identifier", "Pattern", "RestElement"))) | ||
}, | ||
@@ -233,6 +233,6 @@ decorators: { | ||
meta: { | ||
validate: (0, _index.assertValueType)("string") | ||
validate: (0, _index.assertNodeType)("Identifier") | ||
}, | ||
property: { | ||
validate: (0, _index.assertValueType)("string") | ||
validate: (0, _index.assertNodeType)("Identifier") | ||
} | ||
@@ -239,0 +239,0 @@ } |
@@ -246,2 +246,8 @@ "use strict"; | ||
(0, _index2.default)("ObjectTypeSpreadProperty", { | ||
visitor: ["argument"], | ||
aliases: ["Flow", "UserWhitespacable"], | ||
fields: {} | ||
}); | ||
(0, _index2.default)("QualifiedTypeIdentifier", { | ||
@@ -248,0 +254,0 @@ visitor: ["id", "qualification"], |
@@ -122,2 +122,4 @@ "use strict"; | ||
}); | ||
exports.isRestProperty = isRestProperty; | ||
exports.isSpreadProperty = isSpreadProperty; | ||
exports.is = is; | ||
@@ -356,2 +358,9 @@ exports.isType = isType; | ||
function isRestProperty() { | ||
return t.isRestElement.apply(t, arguments); | ||
} | ||
function isSpreadProperty() { | ||
return t.isSpreadElement.apply(t, arguments); | ||
} | ||
t.FLIPPED_ALIAS_KEYS = {}; | ||
@@ -358,0 +367,0 @@ |
@@ -205,3 +205,3 @@ "use strict"; | ||
function isNodesEquivalent(a, b) { | ||
if ((typeof a === "undefined" ? "undefined" : _typeof(a)) !== "object" || (typeof a === "undefined" ? "undefined" : _typeof(a)) !== "object" || a == null || b == null) { | ||
if ((typeof a === "undefined" ? "undefined" : _typeof(a)) !== "object" || (typeof b === "undefined" ? "undefined" : _typeof(b)) !== "object" || a == null || b == null) { | ||
return a === b; | ||
@@ -208,0 +208,0 @@ } |
{ | ||
"name": "babel-types", | ||
"version": "7.0.0-alpha.9", | ||
"version": "7.0.0-alpha.10", | ||
"description": "Babel Types is a Lodash-esque utility library for AST nodes", | ||
@@ -16,4 +16,5 @@ "author": "Sebastian McKenzie <sebmck@gmail.com>", | ||
"devDependencies": { | ||
"babel-generator": "7.0.0-alpha.10", | ||
"babylon": "^7.0.0-beta.8" | ||
} | ||
} |
@@ -49,3 +49,3 @@ # babel-types | ||
- `elements`: `Array<Expression>` (required) | ||
- `elements`: `Array<Identifier | Pattern | RestElement>` (required) | ||
- `typeAnnotation` (required) | ||
@@ -1183,4 +1183,4 @@ - `decorators`: `Array<Decorator>` (default: `null`) | ||
- `meta`: `string` (required) | ||
- `property`: `string` (required) | ||
- `meta`: `Identifier` (required) | ||
- `property`: `Identifier` (required) | ||
@@ -1359,3 +1359,3 @@ --- | ||
- `key`if computed then `Expression` else `Identifier | Literal` (required) | ||
- `value`: `Expression` (required) | ||
- `value`: `Expression | Pattern | RestElement` (required) | ||
- `computed`: `boolean` (default: `false`) | ||
@@ -1424,2 +1424,15 @@ - `shorthand`: `boolean` (default: `false`) | ||
### objectTypeSpreadProperty | ||
```javascript | ||
t.objectTypeSpreadProperty(argument) | ||
``` | ||
See also `t.isObjectTypeSpreadProperty(node, opts)` and `t.assertObjectTypeSpreadProperty(node, opts)`. | ||
Aliases: `Flow`, `UserWhitespacable` | ||
- `argument` (required) | ||
--- | ||
### parenthesizedExpression | ||
@@ -1426,0 +1439,0 @@ ```javascript |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
134135
2977
1944
2