diff options
| author | Florian Dold <florian.dold@gmail.com> | 2016-10-10 03:43:44 +0200 | 
|---|---|---|
| committer | Florian Dold <florian.dold@gmail.com> | 2016-10-10 03:43:44 +0200 | 
| commit | abd94a7f5a50f43c797a11b53549ae48fff667c3 (patch) | |
| tree | ab8ed457f65cdd72e13e0571d2975729428f1551 /node_modules/babel-generator/lib/node | |
| parent | a0247c6a3fd6a09a41a7e35a3441324c4dcb58be (diff) | |
add node_modules to address #4364
Diffstat (limited to 'node_modules/babel-generator/lib/node')
| -rw-r--r-- | node_modules/babel-generator/lib/node/index.js | 146 | ||||
| -rw-r--r-- | node_modules/babel-generator/lib/node/parentheses.js | 251 | ||||
| -rw-r--r-- | node_modules/babel-generator/lib/node/whitespace.js | 164 | 
3 files changed, 561 insertions, 0 deletions
diff --git a/node_modules/babel-generator/lib/node/index.js b/node_modules/babel-generator/lib/node/index.js new file mode 100644 index 000000000..be5d34797 --- /dev/null +++ b/node_modules/babel-generator/lib/node/index.js @@ -0,0 +1,146 @@ +"use strict"; + +exports.__esModule = true; + +var _getIterator2 = require("babel-runtime/core-js/get-iterator"); + +var _getIterator3 = _interopRequireDefault(_getIterator2); + +var _keys = require("babel-runtime/core-js/object/keys"); + +var _keys2 = _interopRequireDefault(_keys); + +exports.needsWhitespace = needsWhitespace; +exports.needsWhitespaceBefore = needsWhitespaceBefore; +exports.needsWhitespaceAfter = needsWhitespaceAfter; +exports.needsParens = needsParens; + +var _whitespace = require("./whitespace"); + +var _whitespace2 = _interopRequireDefault(_whitespace); + +var _parentheses = require("./parentheses"); + +var parens = _interopRequireWildcard(_parentheses); + +var _babelTypes = require("babel-types"); + +var t = _interopRequireWildcard(_babelTypes); + +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; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function expandAliases(obj) { +  var newObj = {}; + +  function add(type, func) { +    var fn = newObj[type]; +    newObj[type] = fn ? function (node, parent, stack) { +      var result = fn(node, parent, stack); + +      return result == null ? func(node, parent, stack) : result; +    } : func; +  } + +  for (var _iterator = (0, _keys2.default)(obj), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : (0, _getIterator3.default)(_iterator);;) { +    var _ref; + +    if (_isArray) { +      if (_i >= _iterator.length) break; +      _ref = _iterator[_i++]; +    } else { +      _i = _iterator.next(); +      if (_i.done) break; +      _ref = _i.value; +    } + +    var type = _ref; + + +    var aliases = t.FLIPPED_ALIAS_KEYS[type]; +    if (aliases) { +      for (var _iterator2 = aliases, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : (0, _getIterator3.default)(_iterator2);;) { +        var _ref2; + +        if (_isArray2) { +          if (_i2 >= _iterator2.length) break; +          _ref2 = _iterator2[_i2++]; +        } else { +          _i2 = _iterator2.next(); +          if (_i2.done) break; +          _ref2 = _i2.value; +        } + +        var alias = _ref2; + +        add(alias, obj[type]); +      } +    } else { +      add(type, obj[type]); +    } +  } + +  return newObj; +} + +var expandedParens = expandAliases(parens); +var expandedWhitespaceNodes = expandAliases(_whitespace2.default.nodes); +var expandedWhitespaceList = expandAliases(_whitespace2.default.list); + +function find(obj, node, parent, printStack) { +  var fn = obj[node.type]; +  return fn ? fn(node, parent, printStack) : null; +} + +function isOrHasCallExpression(node) { +  if (t.isCallExpression(node)) { +    return true; +  } + +  if (t.isMemberExpression(node)) { +    return isOrHasCallExpression(node.object) || !node.computed && isOrHasCallExpression(node.property); +  } else { +    return false; +  } +} + +function needsWhitespace(node, parent, type) { +  if (!node) return 0; + +  if (t.isExpressionStatement(node)) { +    node = node.expression; +  } + +  var linesInfo = find(expandedWhitespaceNodes, node, parent); + +  if (!linesInfo) { +    var items = find(expandedWhitespaceList, node, parent); +    if (items) { +      for (var i = 0; i < items.length; i++) { +        linesInfo = needsWhitespace(items[i], node, type); +        if (linesInfo) break; +      } +    } +  } + +  return linesInfo && linesInfo[type] || 0; +} + +function needsWhitespaceBefore(node, parent) { +  return needsWhitespace(node, parent, "before"); +} + +function needsWhitespaceAfter(node, parent) { +  return needsWhitespace(node, parent, "after"); +} + +function needsParens(node, parent, printStack) { +  if (!parent) return false; + +  if (t.isNewExpression(parent) && parent.callee === node) { +    if (isOrHasCallExpression(node)) return true; +  } + +  return find(expandedParens, node, parent, printStack); +}
\ No newline at end of file diff --git a/node_modules/babel-generator/lib/node/parentheses.js b/node_modules/babel-generator/lib/node/parentheses.js new file mode 100644 index 000000000..a6405be83 --- /dev/null +++ b/node_modules/babel-generator/lib/node/parentheses.js @@ -0,0 +1,251 @@ +"use strict"; + +exports.__esModule = true; +exports.AwaitExpression = exports.FunctionTypeAnnotation = undefined; +exports.NullableTypeAnnotation = NullableTypeAnnotation; +exports.UpdateExpression = UpdateExpression; +exports.ObjectExpression = ObjectExpression; +exports.Binary = Binary; +exports.BinaryExpression = BinaryExpression; +exports.SequenceExpression = SequenceExpression; +exports.YieldExpression = YieldExpression; +exports.ClassExpression = ClassExpression; +exports.UnaryLike = UnaryLike; +exports.FunctionExpression = FunctionExpression; +exports.ArrowFunctionExpression = ArrowFunctionExpression; +exports.ConditionalExpression = ConditionalExpression; +exports.AssignmentExpression = AssignmentExpression; + +var _babelTypes = require("babel-types"); + +var t = _interopRequireWildcard(_babelTypes); + +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; } } + +var PRECEDENCE = { +  "||": 0, +  "&&": 1, +  "|": 2, +  "^": 3, +  "&": 4, +  "==": 5, +  "===": 5, +  "!=": 5, +  "!==": 5, +  "<": 6, +  ">": 6, +  "<=": 6, +  ">=": 6, +  in: 6, +  instanceof: 6, +  ">>": 7, +  "<<": 7, +  ">>>": 7, +  "+": 8, +  "-": 8, +  "*": 9, +  "/": 9, +  "%": 9, +  "**": 10 +}; + +function NullableTypeAnnotation(node, parent) { +  return t.isArrayTypeAnnotation(parent); +} + +exports.FunctionTypeAnnotation = NullableTypeAnnotation; +function UpdateExpression(node, parent) { +  if (t.isMemberExpression(parent) && parent.object === node) { +    return true; +  } + +  return false; +} + +function ObjectExpression(node, parent, printStack) { +  return isFirstInStatement(printStack, { considerArrow: true }); +} + +function Binary(node, parent) { +  if ((t.isCallExpression(parent) || t.isNewExpression(parent)) && parent.callee === node) { +    return true; +  } + +  if (t.isUnaryLike(parent)) { +    return true; +  } + +  if (t.isMemberExpression(parent) && parent.object === node) { +    return true; +  } + +  if (t.isBinary(parent)) { +    var parentOp = parent.operator; +    var parentPos = PRECEDENCE[parentOp]; + +    var nodeOp = node.operator; +    var nodePos = PRECEDENCE[nodeOp]; + +    if (parentPos > nodePos) { +      return true; +    } + +    if (parentPos === nodePos && parent.right === node && !t.isLogicalExpression(parent)) { +      return true; +    } +  } + +  return false; +} + +function BinaryExpression(node, parent) { +  if (node.operator === "in") { +    if (t.isVariableDeclarator(parent)) { +      return true; +    } + +    if (t.isFor(parent)) { +      return true; +    } +  } + +  return false; +} + +function SequenceExpression(node, parent) { +  if (t.isForStatement(parent)) { +    return false; +  } + +  if (t.isExpressionStatement(parent) && parent.expression === node) { +    return false; +  } + +  if (t.isReturnStatement(parent)) { +    return false; +  } + +  if (t.isThrowStatement(parent)) { +    return false; +  } + +  if (t.isSwitchStatement(parent) && parent.discriminant === node) { +    return false; +  } + +  if (t.isWhileStatement(parent) && parent.test === node) { +    return false; +  } + +  if (t.isIfStatement(parent) && parent.test === node) { +    return false; +  } + +  if (t.isForInStatement(parent) && parent.right === node) { +    return false; +  } + +  return true; +} + +function YieldExpression(node, parent) { +  return t.isBinary(parent) || t.isUnaryLike(parent) || t.isCallExpression(parent) || t.isMemberExpression(parent) || t.isNewExpression(parent) || t.isConditionalExpression(parent) && node === parent.test; +} + +exports.AwaitExpression = YieldExpression; +function ClassExpression(node, parent, printStack) { +  return isFirstInStatement(printStack, { considerDefaultExports: true }); +} + +function UnaryLike(node, parent) { +  if (t.isMemberExpression(parent, { object: node })) { +    return true; +  } + +  if (t.isCallExpression(parent, { callee: node }) || t.isNewExpression(parent, { callee: node })) { +    return true; +  } + +  return false; +} + +function FunctionExpression(node, parent, printStack) { +  return isFirstInStatement(printStack, { considerDefaultExports: true }); +} + +function ArrowFunctionExpression(node, parent) { +  if (t.isExportDeclaration(parent)) { +    return true; +  } + +  if (t.isBinaryExpression(parent) || t.isLogicalExpression(parent)) { +    return true; +  } + +  if (t.isUnaryExpression(parent)) { +    return true; +  } + +  return UnaryLike(node, parent); +} + +function ConditionalExpression(node, parent) { +  if (t.isUnaryLike(parent)) { +    return true; +  } + +  if (t.isBinary(parent)) { +    return true; +  } + +  if (t.isConditionalExpression(parent, { test: node })) { +    return true; +  } + +  return UnaryLike(node, parent); +} + +function AssignmentExpression(node) { +  if (t.isObjectPattern(node.left)) { +    return true; +  } else { +    return ConditionalExpression.apply(undefined, arguments); +  } +} + +function isFirstInStatement(printStack) { +  var _ref = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; + +  var _ref$considerArrow = _ref.considerArrow; +  var considerArrow = _ref$considerArrow === undefined ? false : _ref$considerArrow; +  var _ref$considerDefaultE = _ref.considerDefaultExports; +  var considerDefaultExports = _ref$considerDefaultE === undefined ? false : _ref$considerDefaultE; + +  var i = printStack.length - 1; +  var node = printStack[i]; +  i--; +  var parent = printStack[i]; +  while (i > 0) { +    if (t.isExpressionStatement(parent, { expression: node })) { +      return true; +    } + +    if (considerDefaultExports && t.isExportDefaultDeclaration(parent, { declaration: node })) { +      return true; +    } + +    if (considerArrow && t.isArrowFunctionExpression(parent, { body: node })) { +      return true; +    } + +    if (t.isCallExpression(parent, { callee: node }) || t.isSequenceExpression(parent) && parent.expressions[0] === node || t.isMemberExpression(parent, { object: node }) || t.isConditional(parent, { test: node }) || t.isBinary(parent, { left: node }) || t.isAssignmentExpression(parent, { left: node })) { +      node = parent; +      i--; +      parent = printStack[i]; +    } else { +      return false; +    } +  } + +  return false; +}
\ No newline at end of file diff --git a/node_modules/babel-generator/lib/node/whitespace.js b/node_modules/babel-generator/lib/node/whitespace.js new file mode 100644 index 000000000..6a27c55cb --- /dev/null +++ b/node_modules/babel-generator/lib/node/whitespace.js @@ -0,0 +1,164 @@ +"use strict"; + +var _isBoolean = require("lodash/isBoolean"); + +var _isBoolean2 = _interopRequireDefault(_isBoolean); + +var _each = require("lodash/each"); + +var _each2 = _interopRequireDefault(_each); + +var _map = require("lodash/map"); + +var _map2 = _interopRequireDefault(_map); + +var _babelTypes = require("babel-types"); + +var t = _interopRequireWildcard(_babelTypes); + +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; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function crawl(node) { +  var state = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; + +  if (t.isMemberExpression(node)) { +    crawl(node.object, state); +    if (node.computed) crawl(node.property, state); +  } else if (t.isBinary(node) || t.isAssignmentExpression(node)) { +    crawl(node.left, state); +    crawl(node.right, state); +  } else if (t.isCallExpression(node)) { +    state.hasCall = true; +    crawl(node.callee, state); +  } else if (t.isFunction(node)) { +    state.hasFunction = true; +  } else if (t.isIdentifier(node)) { +    state.hasHelper = state.hasHelper || isHelper(node.callee); +  } + +  return state; +} + +function isHelper(node) { +  if (t.isMemberExpression(node)) { +    return isHelper(node.object) || isHelper(node.property); +  } else if (t.isIdentifier(node)) { +    return node.name === "require" || node.name[0] === "_"; +  } else if (t.isCallExpression(node)) { +    return isHelper(node.callee); +  } else if (t.isBinary(node) || t.isAssignmentExpression(node)) { +    return t.isIdentifier(node.left) && isHelper(node.left) || isHelper(node.right); +  } else { +    return false; +  } +} + +function isType(node) { +  return t.isLiteral(node) || t.isObjectExpression(node) || t.isArrayExpression(node) || t.isIdentifier(node) || t.isMemberExpression(node); +} + +exports.nodes = { +  AssignmentExpression: function AssignmentExpression(node) { +    var state = crawl(node.right); +    if (state.hasCall && state.hasHelper || state.hasFunction) { +      return { +        before: state.hasFunction, +        after: true +      }; +    } +  }, +  SwitchCase: function SwitchCase(node, parent) { +    return { +      before: node.consequent.length || parent.cases[0] === node +    }; +  }, +  LogicalExpression: function LogicalExpression(node) { +    if (t.isFunction(node.left) || t.isFunction(node.right)) { +      return { +        after: true +      }; +    } +  }, +  Literal: function Literal(node) { +    if (node.value === "use strict") { +      return { +        after: true +      }; +    } +  }, +  CallExpression: function CallExpression(node) { +    if (t.isFunction(node.callee) || isHelper(node)) { +      return { +        before: true, +        after: true +      }; +    } +  }, +  VariableDeclaration: function VariableDeclaration(node) { +    for (var i = 0; i < node.declarations.length; i++) { +      var declar = node.declarations[i]; + +      var enabled = isHelper(declar.id) && !isType(declar.init); +      if (!enabled) { +        var state = crawl(declar.init); +        enabled = isHelper(declar.init) && state.hasCall || state.hasFunction; +      } + +      if (enabled) { +        return { +          before: true, +          after: true +        }; +      } +    } +  }, +  IfStatement: function IfStatement(node) { +    if (t.isBlockStatement(node.consequent)) { +      return { +        before: true, +        after: true +      }; +    } +  } +}; + +exports.nodes.ObjectProperty = exports.nodes.ObjectTypeProperty = exports.nodes.ObjectMethod = exports.nodes.SpreadProperty = function (node, parent) { +  if (parent.properties[0] === node) { +    return { +      before: true +    }; +  } +}; + +exports.list = { +  VariableDeclaration: function VariableDeclaration(node) { +    return (0, _map2.default)(node.declarations, "init"); +  }, +  ArrayExpression: function ArrayExpression(node) { +    return node.elements; +  }, +  ObjectExpression: function ObjectExpression(node) { +    return node.properties; +  } +}; + +(0, _each2.default)({ +  Function: true, +  Class: true, +  Loop: true, +  LabeledStatement: true, +  SwitchStatement: true, +  TryStatement: true +}, function (amounts, type) { +  if ((0, _isBoolean2.default)(amounts)) { +    amounts = { after: amounts, before: amounts }; +  } + +  (0, _each2.default)([type].concat(t.FLIPPED_ALIAS_KEYS[type] || []), function (type) { +    exports.nodes[type] = function () { +      return amounts; +    }; +  }); +});
\ No newline at end of file  | 
