babel-types
Advanced tools
Comparing version 6.25.0 to 6.26.0
@@ -52,99 +52,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 : (0, _getIterator3.default)(_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 : (0, _getIterator3.default)(_iterator);;) { | ||
var _ref; | ||
for (var _iterator2 = node.declarations, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : (0, _getIterator3.default)(_iterator2);;) { | ||
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 : (0, _getIterator3.default)(_iterator2);;) { | ||
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 (!consequent || !alternate) return bailed = true; | ||
if (exprs.length === 1) { | ||
return exprs[0]; | ||
} else { | ||
return t.sequenceExpression(exprs); | ||
} | ||
} | ||
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; | ||
} | ||
function toSequenceExpression(nodes, scope) { | ||
if (!nodes || !nodes.length) return; | ||
ensureLastUndefined = false; | ||
} | ||
var declars = []; | ||
var result = gatherSequenceExpressions(nodes, scope, declars); | ||
if (!result) return; | ||
if (ensureLastUndefined || exprs.length === 0) { | ||
exprs.push(scope.buildUndefinedNode()); | ||
} | ||
for (var _iterator3 = declars, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : (0, _getIterator3.default)(_iterator3);;) { | ||
var _ref3; | ||
if (exprs.length === 1) { | ||
return exprs[0]; | ||
if (_isArray3) { | ||
if (_i3 >= _iterator3.length) break; | ||
_ref3 = _iterator3[_i3++]; | ||
} else { | ||
return t.sequenceExpression(exprs); | ||
_i3 = _iterator3.next(); | ||
if (_i3.done) break; | ||
_ref3 = _i3.value; | ||
} | ||
var declar = _ref3; | ||
scope.push(declar); | ||
} | ||
return result; | ||
} | ||
@@ -151,0 +163,0 @@ |
@@ -89,2 +89,8 @@ "use strict"; | ||
(0, _index2.default)("DeclareOpaqueType", { | ||
visitor: ["id", "typeParameters", "supertype"], | ||
aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"], | ||
fields: {} | ||
}); | ||
(0, _index2.default)("DeclareVariable", { | ||
@@ -96,2 +102,8 @@ visitor: ["id"], | ||
(0, _index2.default)("DeclareExportDeclaration", { | ||
visitor: ["declaration", "specifiers", "source"], | ||
aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"], | ||
fields: {} | ||
}); | ||
(0, _index2.default)("ExistentialTypeParam", { | ||
@@ -194,2 +206,8 @@ aliases: ["Flow"] | ||
(0, _index2.default)("OpaqueType", { | ||
visitor: ["id", "typeParameters", "impltype", "supertype"], | ||
aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"], | ||
fields: {} | ||
}); | ||
(0, _index2.default)("TypeAnnotation", { | ||
@@ -196,0 +214,0 @@ visitor: ["typeAnnotation"], |
@@ -78,2 +78,3 @@ "use strict"; | ||
TypeAlias: ["id"], | ||
OpaqueType: ["id"], | ||
@@ -80,0 +81,0 @@ CatchClause: ["param"], |
{ | ||
"name": "babel-types", | ||
"version": "6.25.0", | ||
"version": "6.26.0", | ||
"description": "Babel Types is a Lodash-esque utility library for AST nodes", | ||
@@ -11,10 +11,11 @@ "author": "Sebastian McKenzie <sebmck@gmail.com>", | ||
"dependencies": { | ||
"babel-runtime": "^6.22.0", | ||
"babel-runtime": "^6.26.0", | ||
"esutils": "^2.0.2", | ||
"lodash": "^4.2.0", | ||
"to-fast-properties": "^1.0.1" | ||
"lodash": "^4.17.4", | ||
"to-fast-properties": "^1.0.3" | ||
}, | ||
"devDependencies": { | ||
"babylon": "^6.17.2" | ||
"babel-generator": "^6.26.0", | ||
"babylon": "^6.18.0" | ||
} | ||
} |
@@ -410,2 +410,17 @@ # babel-types | ||
### declareExportDeclaration | ||
```javascript | ||
t.declareExportDeclaration(declaration, specifiers, source) | ||
``` | ||
See also `t.isDeclareExportDeclaration(node, opts)` and `t.assertDeclareExportDeclaration(node, opts)`. | ||
Aliases: `Flow`, `FlowDeclaration`, `Statement`, `Declaration` | ||
- `declaration` (required) | ||
- `specifiers` (required) | ||
- `source` (required) | ||
--- | ||
### declareFunction | ||
@@ -467,2 +482,17 @@ ```javascript | ||
### declareOpaqueType | ||
```javascript | ||
t.declareOpaqueType(id, typeParameters, supertype) | ||
``` | ||
See also `t.isDeclareOpaqueType(node, opts)` and `t.assertDeclareOpaqueType(node, opts)`. | ||
Aliases: `Flow`, `FlowDeclaration`, `Statement`, `Declaration` | ||
- `id` (required) | ||
- `typeParameters` (required) | ||
- `supertype` (required) | ||
--- | ||
### declareTypeAlias | ||
@@ -1450,2 +1480,18 @@ ```javascript | ||
### opaqueType | ||
```javascript | ||
t.opaqueType(id, typeParameters, impltype, supertype) | ||
``` | ||
See also `t.isOpaqueType(node, opts)` and `t.assertOpaqueType(node, opts)`. | ||
Aliases: `Flow`, `FlowDeclaration`, `Statement`, `Declaration` | ||
- `id` (required) | ||
- `typeParameters` (required) | ||
- `impltype` (required) | ||
- `supertype` (required) | ||
--- | ||
### parenthesizedExpression | ||
@@ -1452,0 +1498,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
140579
19
3078
2030
2
Updatedbabel-runtime@^6.26.0
Updatedlodash@^4.17.4
Updatedto-fast-properties@^1.0.3