You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					317 lines
				
				10 KiB
			
		
		
			
		
	
	
					317 lines
				
				10 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								"use strict";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Object.defineProperty(exports, "__esModule", {
							 | 
						||
| 
								 | 
							
								  value: true
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								exports.ArrowFunctionExpression = ArrowFunctionExpression;
							 | 
						||
| 
								 | 
							
								exports.AssignmentExpression = AssignmentExpression;
							 | 
						||
| 
								 | 
							
								exports.Binary = Binary;
							 | 
						||
| 
								 | 
							
								exports.BinaryExpression = BinaryExpression;
							 | 
						||
| 
								 | 
							
								exports.ClassExpression = ClassExpression;
							 | 
						||
| 
								 | 
							
								exports.ConditionalExpression = ConditionalExpression;
							 | 
						||
| 
								 | 
							
								exports.DoExpression = DoExpression;
							 | 
						||
| 
								 | 
							
								exports.FunctionExpression = FunctionExpression;
							 | 
						||
| 
								 | 
							
								exports.FunctionTypeAnnotation = FunctionTypeAnnotation;
							 | 
						||
| 
								 | 
							
								exports.Identifier = Identifier;
							 | 
						||
| 
								 | 
							
								exports.LogicalExpression = LogicalExpression;
							 | 
						||
| 
								 | 
							
								exports.NullableTypeAnnotation = NullableTypeAnnotation;
							 | 
						||
| 
								 | 
							
								exports.ObjectExpression = ObjectExpression;
							 | 
						||
| 
								 | 
							
								exports.OptionalIndexedAccessType = OptionalIndexedAccessType;
							 | 
						||
| 
								 | 
							
								exports.OptionalCallExpression = exports.OptionalMemberExpression = OptionalMemberExpression;
							 | 
						||
| 
								 | 
							
								exports.SequenceExpression = SequenceExpression;
							 | 
						||
| 
								 | 
							
								exports.TSTypeAssertion = exports.TSSatisfiesExpression = exports.TSAsExpression = TSAsExpression;
							 | 
						||
| 
								 | 
							
								exports.TSInferType = TSInferType;
							 | 
						||
| 
								 | 
							
								exports.TSInstantiationExpression = TSInstantiationExpression;
							 | 
						||
| 
								 | 
							
								exports.TSIntersectionType = exports.TSUnionType = TSUnionType;
							 | 
						||
| 
								 | 
							
								exports.UnaryLike = UnaryLike;
							 | 
						||
| 
								 | 
							
								exports.IntersectionTypeAnnotation = exports.UnionTypeAnnotation = UnionTypeAnnotation;
							 | 
						||
| 
								 | 
							
								exports.UpdateExpression = UpdateExpression;
							 | 
						||
| 
								 | 
							
								exports.AwaitExpression = exports.YieldExpression = YieldExpression;
							 | 
						||
| 
								 | 
							
								var _t = require("@babel/types");
							 | 
						||
| 
								 | 
							
								const {
							 | 
						||
| 
								 | 
							
								  isArrayTypeAnnotation,
							 | 
						||
| 
								 | 
							
								  isArrowFunctionExpression,
							 | 
						||
| 
								 | 
							
								  isAssignmentExpression,
							 | 
						||
| 
								 | 
							
								  isAwaitExpression,
							 | 
						||
| 
								 | 
							
								  isBinary,
							 | 
						||
| 
								 | 
							
								  isBinaryExpression,
							 | 
						||
| 
								 | 
							
								  isUpdateExpression,
							 | 
						||
| 
								 | 
							
								  isCallExpression,
							 | 
						||
| 
								 | 
							
								  isClass,
							 | 
						||
| 
								 | 
							
								  isClassExpression,
							 | 
						||
| 
								 | 
							
								  isConditional,
							 | 
						||
| 
								 | 
							
								  isConditionalExpression,
							 | 
						||
| 
								 | 
							
								  isExportDeclaration,
							 | 
						||
| 
								 | 
							
								  isExportDefaultDeclaration,
							 | 
						||
| 
								 | 
							
								  isExpressionStatement,
							 | 
						||
| 
								 | 
							
								  isFor,
							 | 
						||
| 
								 | 
							
								  isForInStatement,
							 | 
						||
| 
								 | 
							
								  isForOfStatement,
							 | 
						||
| 
								 | 
							
								  isForStatement,
							 | 
						||
| 
								 | 
							
								  isFunctionExpression,
							 | 
						||
| 
								 | 
							
								  isIfStatement,
							 | 
						||
| 
								 | 
							
								  isIndexedAccessType,
							 | 
						||
| 
								 | 
							
								  isIntersectionTypeAnnotation,
							 | 
						||
| 
								 | 
							
								  isLogicalExpression,
							 | 
						||
| 
								 | 
							
								  isMemberExpression,
							 | 
						||
| 
								 | 
							
								  isNewExpression,
							 | 
						||
| 
								 | 
							
								  isNullableTypeAnnotation,
							 | 
						||
| 
								 | 
							
								  isObjectPattern,
							 | 
						||
| 
								 | 
							
								  isOptionalCallExpression,
							 | 
						||
| 
								 | 
							
								  isOptionalMemberExpression,
							 | 
						||
| 
								 | 
							
								  isReturnStatement,
							 | 
						||
| 
								 | 
							
								  isSequenceExpression,
							 | 
						||
| 
								 | 
							
								  isSwitchStatement,
							 | 
						||
| 
								 | 
							
								  isTSArrayType,
							 | 
						||
| 
								 | 
							
								  isTSAsExpression,
							 | 
						||
| 
								 | 
							
								  isTSInstantiationExpression,
							 | 
						||
| 
								 | 
							
								  isTSIntersectionType,
							 | 
						||
| 
								 | 
							
								  isTSNonNullExpression,
							 | 
						||
| 
								 | 
							
								  isTSOptionalType,
							 | 
						||
| 
								 | 
							
								  isTSRestType,
							 | 
						||
| 
								 | 
							
								  isTSTypeAssertion,
							 | 
						||
| 
								 | 
							
								  isTSUnionType,
							 | 
						||
| 
								 | 
							
								  isTaggedTemplateExpression,
							 | 
						||
| 
								 | 
							
								  isThrowStatement,
							 | 
						||
| 
								 | 
							
								  isTypeAnnotation,
							 | 
						||
| 
								 | 
							
								  isUnaryLike,
							 | 
						||
| 
								 | 
							
								  isUnionTypeAnnotation,
							 | 
						||
| 
								 | 
							
								  isVariableDeclarator,
							 | 
						||
| 
								 | 
							
								  isWhileStatement,
							 | 
						||
| 
								 | 
							
								  isYieldExpression,
							 | 
						||
| 
								 | 
							
								  isTSSatisfiesExpression
							 | 
						||
| 
								 | 
							
								} = _t;
							 | 
						||
| 
								 | 
							
								const PRECEDENCE = {
							 | 
						||
| 
								 | 
							
								  "||": 0,
							 | 
						||
| 
								 | 
							
								  "??": 0,
							 | 
						||
| 
								 | 
							
								  "|>": 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 isTSTypeExpression(node) {
							 | 
						||
| 
								 | 
							
								  return isTSAsExpression(node) || isTSSatisfiesExpression(node) || isTSTypeAssertion(node);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								const isClassExtendsClause = (node, parent) => isClass(parent, {
							 | 
						||
| 
								 | 
							
								  superClass: node
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								const hasPostfixPart = (node, parent) => (isMemberExpression(parent) || isOptionalMemberExpression(parent)) && parent.object === node || (isCallExpression(parent) || isOptionalCallExpression(parent) || isNewExpression(parent)) && parent.callee === node || isTaggedTemplateExpression(parent) && parent.tag === node || isTSNonNullExpression(parent);
							 | 
						||
| 
								 | 
							
								function NullableTypeAnnotation(node, parent) {
							 | 
						||
| 
								 | 
							
								  return isArrayTypeAnnotation(parent);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								function FunctionTypeAnnotation(node, parent, printStack) {
							 | 
						||
| 
								 | 
							
								  if (printStack.length < 3) return;
							 | 
						||
| 
								 | 
							
								  return (
							 | 
						||
| 
								 | 
							
								    isUnionTypeAnnotation(parent) ||
							 | 
						||
| 
								 | 
							
								    isIntersectionTypeAnnotation(parent) ||
							 | 
						||
| 
								 | 
							
								    isArrayTypeAnnotation(parent) ||
							 | 
						||
| 
								 | 
							
								    isTypeAnnotation(parent) &&
							 | 
						||
| 
								 | 
							
								    isArrowFunctionExpression(printStack[printStack.length - 3])
							 | 
						||
| 
								 | 
							
								  );
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								function UpdateExpression(node, parent) {
							 | 
						||
| 
								 | 
							
								  return hasPostfixPart(node, parent) || isClassExtendsClause(node, parent);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								function ObjectExpression(node, parent, printStack) {
							 | 
						||
| 
								 | 
							
								  return isFirstInContext(printStack, 1 | 2);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								function DoExpression(node, parent, printStack) {
							 | 
						||
| 
								 | 
							
								  return !node.async && isFirstInContext(printStack, 1);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								function Binary(node, parent) {
							 | 
						||
| 
								 | 
							
								  if (node.operator === "**" && isBinaryExpression(parent, {
							 | 
						||
| 
								 | 
							
								    operator: "**"
							 | 
						||
| 
								 | 
							
								  })) {
							 | 
						||
| 
								 | 
							
								    return parent.left === node;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  if (isClassExtendsClause(node, parent)) {
							 | 
						||
| 
								 | 
							
								    return true;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  if (hasPostfixPart(node, parent) || isUnaryLike(parent) || isAwaitExpression(parent)) {
							 | 
						||
| 
								 | 
							
								    return true;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  if (isBinary(parent)) {
							 | 
						||
| 
								 | 
							
								    const parentOp = parent.operator;
							 | 
						||
| 
								 | 
							
								    const parentPos = PRECEDENCE[parentOp];
							 | 
						||
| 
								 | 
							
								    const nodeOp = node.operator;
							 | 
						||
| 
								 | 
							
								    const nodePos = PRECEDENCE[nodeOp];
							 | 
						||
| 
								 | 
							
								    if (
							 | 
						||
| 
								 | 
							
								    parentPos === nodePos && parent.right === node && !isLogicalExpression(parent) || parentPos > nodePos) {
							 | 
						||
| 
								 | 
							
								      return true;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								function UnionTypeAnnotation(node, parent) {
							 | 
						||
| 
								 | 
							
								  return isArrayTypeAnnotation(parent) || isNullableTypeAnnotation(parent) || isIntersectionTypeAnnotation(parent) || isUnionTypeAnnotation(parent);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								function OptionalIndexedAccessType(node, parent) {
							 | 
						||
| 
								 | 
							
								  return isIndexedAccessType(parent, {
							 | 
						||
| 
								 | 
							
								    objectType: node
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								function TSAsExpression() {
							 | 
						||
| 
								 | 
							
								  return true;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								function TSUnionType(node, parent) {
							 | 
						||
| 
								 | 
							
								  return isTSArrayType(parent) || isTSOptionalType(parent) || isTSIntersectionType(parent) || isTSUnionType(parent) || isTSRestType(parent);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								function TSInferType(node, parent) {
							 | 
						||
| 
								 | 
							
								  return isTSArrayType(parent) || isTSOptionalType(parent);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								function TSInstantiationExpression(node, parent) {
							 | 
						||
| 
								 | 
							
								  return (isCallExpression(parent) || isOptionalCallExpression(parent) || isNewExpression(parent) || isTSInstantiationExpression(parent)) && !!parent.typeParameters;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								function BinaryExpression(node, parent) {
							 | 
						||
| 
								 | 
							
								  return node.operator === "in" && (isVariableDeclarator(parent) || isFor(parent));
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								function SequenceExpression(node, parent) {
							 | 
						||
| 
								 | 
							
								  if (
							 | 
						||
| 
								 | 
							
								  isForStatement(parent) || isThrowStatement(parent) || isReturnStatement(parent) || isIfStatement(parent) && parent.test === node || isWhileStatement(parent) && parent.test === node || isForInStatement(parent) && parent.right === node || isSwitchStatement(parent) && parent.discriminant === node || isExpressionStatement(parent) && parent.expression === node) {
							 | 
						||
| 
								 | 
							
								    return false;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return true;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								function YieldExpression(node, parent) {
							 | 
						||
| 
								 | 
							
								  return isBinary(parent) || isUnaryLike(parent) || hasPostfixPart(node, parent) || isAwaitExpression(parent) && isYieldExpression(node) || isConditionalExpression(parent) && node === parent.test || isClassExtendsClause(node, parent);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								function ClassExpression(node, parent, printStack) {
							 | 
						||
| 
								 | 
							
								  return isFirstInContext(printStack, 1 | 4);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								function UnaryLike(node, parent) {
							 | 
						||
| 
								 | 
							
								  return hasPostfixPart(node, parent) || isBinaryExpression(parent, {
							 | 
						||
| 
								 | 
							
								    operator: "**",
							 | 
						||
| 
								 | 
							
								    left: node
							 | 
						||
| 
								 | 
							
								  }) || isClassExtendsClause(node, parent);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								function FunctionExpression(node, parent, printStack) {
							 | 
						||
| 
								 | 
							
								  return isFirstInContext(printStack, 1 | 4);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								function ArrowFunctionExpression(node, parent) {
							 | 
						||
| 
								 | 
							
								  return isExportDeclaration(parent) || ConditionalExpression(node, parent);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								function ConditionalExpression(node, parent) {
							 | 
						||
| 
								 | 
							
								  if (isUnaryLike(parent) || isBinary(parent) || isConditionalExpression(parent, {
							 | 
						||
| 
								 | 
							
								    test: node
							 | 
						||
| 
								 | 
							
								  }) || isAwaitExpression(parent) || isTSTypeExpression(parent)) {
							 | 
						||
| 
								 | 
							
								    return true;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  return UnaryLike(node, parent);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								function OptionalMemberExpression(node, parent) {
							 | 
						||
| 
								 | 
							
								  return isCallExpression(parent, {
							 | 
						||
| 
								 | 
							
								    callee: node
							 | 
						||
| 
								 | 
							
								  }) || isMemberExpression(parent, {
							 | 
						||
| 
								 | 
							
								    object: node
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								function AssignmentExpression(node, parent) {
							 | 
						||
| 
								 | 
							
								  if (isObjectPattern(node.left)) {
							 | 
						||
| 
								 | 
							
								    return true;
							 | 
						||
| 
								 | 
							
								  } else {
							 | 
						||
| 
								 | 
							
								    return ConditionalExpression(node, parent);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								function LogicalExpression(node, parent) {
							 | 
						||
| 
								 | 
							
								  if (isTSTypeExpression(parent)) return true;
							 | 
						||
| 
								 | 
							
								  switch (node.operator) {
							 | 
						||
| 
								 | 
							
								    case "||":
							 | 
						||
| 
								 | 
							
								      if (!isLogicalExpression(parent)) return false;
							 | 
						||
| 
								 | 
							
								      return parent.operator === "??" || parent.operator === "&&";
							 | 
						||
| 
								 | 
							
								    case "&&":
							 | 
						||
| 
								 | 
							
								      return isLogicalExpression(parent, {
							 | 
						||
| 
								 | 
							
								        operator: "??"
							 | 
						||
| 
								 | 
							
								      });
							 | 
						||
| 
								 | 
							
								    case "??":
							 | 
						||
| 
								 | 
							
								      return isLogicalExpression(parent) && parent.operator !== "??";
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								function Identifier(node, parent, printStack) {
							 | 
						||
| 
								 | 
							
								  var _node$extra;
							 | 
						||
| 
								 | 
							
								  if ((_node$extra = node.extra) != null && _node$extra.parenthesized && isAssignmentExpression(parent, {
							 | 
						||
| 
								 | 
							
								    left: node
							 | 
						||
| 
								 | 
							
								  }) && (isFunctionExpression(parent.right) || isClassExpression(parent.right)) && parent.right.id == null) {
							 | 
						||
| 
								 | 
							
								    return true;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  if (node.name === "let") {
							 | 
						||
| 
								 | 
							
								    const isFollowedByBracket = isMemberExpression(parent, {
							 | 
						||
| 
								 | 
							
								      object: node,
							 | 
						||
| 
								 | 
							
								      computed: true
							 | 
						||
| 
								 | 
							
								    }) || isOptionalMemberExpression(parent, {
							 | 
						||
| 
								 | 
							
								      object: node,
							 | 
						||
| 
								 | 
							
								      computed: true,
							 | 
						||
| 
								 | 
							
								      optional: false
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								    return isFirstInContext(printStack, isFollowedByBracket ? 1 | 8 | 16 | 32 : 32);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return node.name === "async" && isForOfStatement(parent) && node === parent.left;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function isFirstInContext(printStack, checkParam) {
							 | 
						||
| 
								 | 
							
								  const expressionStatement = checkParam & 1;
							 | 
						||
| 
								 | 
							
								  const arrowBody = checkParam & 2;
							 | 
						||
| 
								 | 
							
								  const exportDefault = checkParam & 4;
							 | 
						||
| 
								 | 
							
								  const forHead = checkParam & 8;
							 | 
						||
| 
								 | 
							
								  const forInHead = checkParam & 16;
							 | 
						||
| 
								 | 
							
								  const forOfHead = checkParam & 32;
							 | 
						||
| 
								 | 
							
								  let i = printStack.length - 1;
							 | 
						||
| 
								 | 
							
								  if (i <= 0) return;
							 | 
						||
| 
								 | 
							
								  let node = printStack[i];
							 | 
						||
| 
								 | 
							
								  i--;
							 | 
						||
| 
								 | 
							
								  let parent = printStack[i];
							 | 
						||
| 
								 | 
							
								  while (i >= 0) {
							 | 
						||
| 
								 | 
							
								    if (expressionStatement && isExpressionStatement(parent, {
							 | 
						||
| 
								 | 
							
								      expression: node
							 | 
						||
| 
								 | 
							
								    }) || exportDefault && isExportDefaultDeclaration(parent, {
							 | 
						||
| 
								 | 
							
								      declaration: node
							 | 
						||
| 
								 | 
							
								    }) || arrowBody && isArrowFunctionExpression(parent, {
							 | 
						||
| 
								 | 
							
								      body: node
							 | 
						||
| 
								 | 
							
								    }) || forHead && isForStatement(parent, {
							 | 
						||
| 
								 | 
							
								      init: node
							 | 
						||
| 
								 | 
							
								    }) || forInHead && isForInStatement(parent, {
							 | 
						||
| 
								 | 
							
								      left: node
							 | 
						||
| 
								 | 
							
								    }) || forOfHead && isForOfStatement(parent, {
							 | 
						||
| 
								 | 
							
								      left: node
							 | 
						||
| 
								 | 
							
								    })) {
							 | 
						||
| 
								 | 
							
								      return true;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    if (i > 0 && (hasPostfixPart(node, parent) && !isNewExpression(parent) || isSequenceExpression(parent) && parent.expressions[0] === node || isUpdateExpression(parent) && !parent.prefix || isConditional(parent, {
							 | 
						||
| 
								 | 
							
								      test: node
							 | 
						||
| 
								 | 
							
								    }) || isBinary(parent, {
							 | 
						||
| 
								 | 
							
								      left: node
							 | 
						||
| 
								 | 
							
								    }) || isAssignmentExpression(parent, {
							 | 
						||
| 
								 | 
							
								      left: node
							 | 
						||
| 
								 | 
							
								    }))) {
							 | 
						||
| 
								 | 
							
								      node = parent;
							 | 
						||
| 
								 | 
							
								      i--;
							 | 
						||
| 
								 | 
							
								      parent = printStack[i];
							 | 
						||
| 
								 | 
							
								    } else {
							 | 
						||
| 
								 | 
							
								      return false;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  return false;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								//# sourceMappingURL=parentheses.js.map
							 |