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.
		
		
		
		
		
			
		
			
				
					300 lines
				
				7.7 KiB
			
		
		
			
		
	
	
					300 lines
				
				7.7 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								"use strict";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Object.defineProperty(exports, "__esModule", {
							 | 
						||
| 
								 | 
							
								  value: true
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								exports.LogicalExpression = exports.BinaryExpression = exports.AssignmentExpression = AssignmentExpression;
							 | 
						||
| 
								 | 
							
								exports.AssignmentPattern = AssignmentPattern;
							 | 
						||
| 
								 | 
							
								exports.AwaitExpression = AwaitExpression;
							 | 
						||
| 
								 | 
							
								exports.BindExpression = BindExpression;
							 | 
						||
| 
								 | 
							
								exports.CallExpression = CallExpression;
							 | 
						||
| 
								 | 
							
								exports.ConditionalExpression = ConditionalExpression;
							 | 
						||
| 
								 | 
							
								exports.Decorator = Decorator;
							 | 
						||
| 
								 | 
							
								exports.DoExpression = DoExpression;
							 | 
						||
| 
								 | 
							
								exports.EmptyStatement = EmptyStatement;
							 | 
						||
| 
								 | 
							
								exports.ExpressionStatement = ExpressionStatement;
							 | 
						||
| 
								 | 
							
								exports.Import = Import;
							 | 
						||
| 
								 | 
							
								exports.MemberExpression = MemberExpression;
							 | 
						||
| 
								 | 
							
								exports.MetaProperty = MetaProperty;
							 | 
						||
| 
								 | 
							
								exports.ModuleExpression = ModuleExpression;
							 | 
						||
| 
								 | 
							
								exports.NewExpression = NewExpression;
							 | 
						||
| 
								 | 
							
								exports.OptionalCallExpression = OptionalCallExpression;
							 | 
						||
| 
								 | 
							
								exports.OptionalMemberExpression = OptionalMemberExpression;
							 | 
						||
| 
								 | 
							
								exports.ParenthesizedExpression = ParenthesizedExpression;
							 | 
						||
| 
								 | 
							
								exports.PrivateName = PrivateName;
							 | 
						||
| 
								 | 
							
								exports.SequenceExpression = SequenceExpression;
							 | 
						||
| 
								 | 
							
								exports.Super = Super;
							 | 
						||
| 
								 | 
							
								exports.ThisExpression = ThisExpression;
							 | 
						||
| 
								 | 
							
								exports.UnaryExpression = UnaryExpression;
							 | 
						||
| 
								 | 
							
								exports.UpdateExpression = UpdateExpression;
							 | 
						||
| 
								 | 
							
								exports.V8IntrinsicIdentifier = V8IntrinsicIdentifier;
							 | 
						||
| 
								 | 
							
								exports.YieldExpression = YieldExpression;
							 | 
						||
| 
								 | 
							
								var _t = require("@babel/types");
							 | 
						||
| 
								 | 
							
								var n = require("../node");
							 | 
						||
| 
								 | 
							
								const {
							 | 
						||
| 
								 | 
							
								  isCallExpression,
							 | 
						||
| 
								 | 
							
								  isLiteral,
							 | 
						||
| 
								 | 
							
								  isMemberExpression,
							 | 
						||
| 
								 | 
							
								  isNewExpression
							 | 
						||
| 
								 | 
							
								} = _t;
							 | 
						||
| 
								 | 
							
								function UnaryExpression(node) {
							 | 
						||
| 
								 | 
							
								  if (node.operator === "void" || node.operator === "delete" || node.operator === "typeof" ||
							 | 
						||
| 
								 | 
							
								  node.operator === "throw") {
							 | 
						||
| 
								 | 
							
								    this.word(node.operator);
							 | 
						||
| 
								 | 
							
								    this.space();
							 | 
						||
| 
								 | 
							
								  } else {
							 | 
						||
| 
								 | 
							
								    this.token(node.operator);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  this.print(node.argument, node);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								function DoExpression(node) {
							 | 
						||
| 
								 | 
							
								  if (node.async) {
							 | 
						||
| 
								 | 
							
								    this.word("async", true);
							 | 
						||
| 
								 | 
							
								    this.space();
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  this.word("do");
							 | 
						||
| 
								 | 
							
								  this.space();
							 | 
						||
| 
								 | 
							
								  this.print(node.body, node);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								function ParenthesizedExpression(node) {
							 | 
						||
| 
								 | 
							
								  this.tokenChar(40);
							 | 
						||
| 
								 | 
							
								  this.print(node.expression, node);
							 | 
						||
| 
								 | 
							
								  this.tokenChar(41);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								function UpdateExpression(node) {
							 | 
						||
| 
								 | 
							
								  if (node.prefix) {
							 | 
						||
| 
								 | 
							
								    this.token(node.operator);
							 | 
						||
| 
								 | 
							
								    this.print(node.argument, node);
							 | 
						||
| 
								 | 
							
								  } else {
							 | 
						||
| 
								 | 
							
								    this.printTerminatorless(node.argument, node, true);
							 | 
						||
| 
								 | 
							
								    this.token(node.operator);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								function ConditionalExpression(node) {
							 | 
						||
| 
								 | 
							
								  this.print(node.test, node);
							 | 
						||
| 
								 | 
							
								  this.space();
							 | 
						||
| 
								 | 
							
								  this.tokenChar(63);
							 | 
						||
| 
								 | 
							
								  this.space();
							 | 
						||
| 
								 | 
							
								  this.print(node.consequent, node);
							 | 
						||
| 
								 | 
							
								  this.space();
							 | 
						||
| 
								 | 
							
								  this.tokenChar(58);
							 | 
						||
| 
								 | 
							
								  this.space();
							 | 
						||
| 
								 | 
							
								  this.print(node.alternate, node);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								function NewExpression(node, parent) {
							 | 
						||
| 
								 | 
							
								  this.word("new");
							 | 
						||
| 
								 | 
							
								  this.space();
							 | 
						||
| 
								 | 
							
								  this.print(node.callee, node);
							 | 
						||
| 
								 | 
							
								  if (this.format.minified && node.arguments.length === 0 && !node.optional && !isCallExpression(parent, {
							 | 
						||
| 
								 | 
							
								    callee: node
							 | 
						||
| 
								 | 
							
								  }) && !isMemberExpression(parent) && !isNewExpression(parent)) {
							 | 
						||
| 
								 | 
							
								    return;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  this.print(node.typeArguments, node);
							 | 
						||
| 
								 | 
							
								  this.print(node.typeParameters, node);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (node.optional) {
							 | 
						||
| 
								 | 
							
								    this.token("?.");
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  this.tokenChar(40);
							 | 
						||
| 
								 | 
							
								  this.printList(node.arguments, node);
							 | 
						||
| 
								 | 
							
								  this.tokenChar(41);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								function SequenceExpression(node) {
							 | 
						||
| 
								 | 
							
								  this.printList(node.expressions, node);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								function ThisExpression() {
							 | 
						||
| 
								 | 
							
								  this.word("this");
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								function Super() {
							 | 
						||
| 
								 | 
							
								  this.word("super");
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								function isDecoratorMemberExpression(node) {
							 | 
						||
| 
								 | 
							
								  switch (node.type) {
							 | 
						||
| 
								 | 
							
								    case "Identifier":
							 | 
						||
| 
								 | 
							
								      return true;
							 | 
						||
| 
								 | 
							
								    case "MemberExpression":
							 | 
						||
| 
								 | 
							
								      return !node.computed && node.property.type === "Identifier" && isDecoratorMemberExpression(node.object);
							 | 
						||
| 
								 | 
							
								    default:
							 | 
						||
| 
								 | 
							
								      return false;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								function shouldParenthesizeDecoratorExpression(node) {
							 | 
						||
| 
								 | 
							
								  if (node.type === "ParenthesizedExpression") {
							 | 
						||
| 
								 | 
							
								    return false;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  return !isDecoratorMemberExpression(node.type === "CallExpression" ? node.callee : node);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								function Decorator(node) {
							 | 
						||
| 
								 | 
							
								  this.tokenChar(64);
							 | 
						||
| 
								 | 
							
								  const {
							 | 
						||
| 
								 | 
							
								    expression
							 | 
						||
| 
								 | 
							
								  } = node;
							 | 
						||
| 
								 | 
							
								  if (shouldParenthesizeDecoratorExpression(expression)) {
							 | 
						||
| 
								 | 
							
								    this.tokenChar(40);
							 | 
						||
| 
								 | 
							
								    this.print(expression, node);
							 | 
						||
| 
								 | 
							
								    this.tokenChar(41);
							 | 
						||
| 
								 | 
							
								  } else {
							 | 
						||
| 
								 | 
							
								    this.print(expression, node);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  this.newline();
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								function OptionalMemberExpression(node) {
							 | 
						||
| 
								 | 
							
								  this.print(node.object, node);
							 | 
						||
| 
								 | 
							
								  if (!node.computed && isMemberExpression(node.property)) {
							 | 
						||
| 
								 | 
							
								    throw new TypeError("Got a MemberExpression for MemberExpression property");
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  let computed = node.computed;
							 | 
						||
| 
								 | 
							
								  if (isLiteral(node.property) && typeof node.property.value === "number") {
							 | 
						||
| 
								 | 
							
								    computed = true;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  if (node.optional) {
							 | 
						||
| 
								 | 
							
								    this.token("?.");
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  if (computed) {
							 | 
						||
| 
								 | 
							
								    this.tokenChar(91);
							 | 
						||
| 
								 | 
							
								    this.print(node.property, node);
							 | 
						||
| 
								 | 
							
								    this.tokenChar(93);
							 | 
						||
| 
								 | 
							
								  } else {
							 | 
						||
| 
								 | 
							
								    if (!node.optional) {
							 | 
						||
| 
								 | 
							
								      this.tokenChar(46);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    this.print(node.property, node);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								function OptionalCallExpression(node) {
							 | 
						||
| 
								 | 
							
								  this.print(node.callee, node);
							 | 
						||
| 
								 | 
							
								  this.print(node.typeParameters, node);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (node.optional) {
							 | 
						||
| 
								 | 
							
								    this.token("?.");
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  this.print(node.typeArguments, node);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  this.tokenChar(40);
							 | 
						||
| 
								 | 
							
								  this.printList(node.arguments, node);
							 | 
						||
| 
								 | 
							
								  this.tokenChar(41);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								function CallExpression(node) {
							 | 
						||
| 
								 | 
							
								  this.print(node.callee, node);
							 | 
						||
| 
								 | 
							
								  this.print(node.typeArguments, node);
							 | 
						||
| 
								 | 
							
								  this.print(node.typeParameters, node);
							 | 
						||
| 
								 | 
							
								  this.tokenChar(40);
							 | 
						||
| 
								 | 
							
								  this.printList(node.arguments, node);
							 | 
						||
| 
								 | 
							
								  this.tokenChar(41);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								function Import() {
							 | 
						||
| 
								 | 
							
								  this.word("import");
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								function AwaitExpression(node) {
							 | 
						||
| 
								 | 
							
								  this.word("await");
							 | 
						||
| 
								 | 
							
								  if (node.argument) {
							 | 
						||
| 
								 | 
							
								    this.space();
							 | 
						||
| 
								 | 
							
								    this.printTerminatorless(node.argument, node, false);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								function YieldExpression(node) {
							 | 
						||
| 
								 | 
							
								  this.word("yield", true);
							 | 
						||
| 
								 | 
							
								  if (node.delegate) {
							 | 
						||
| 
								 | 
							
								    this.tokenChar(42);
							 | 
						||
| 
								 | 
							
								    if (node.argument) {
							 | 
						||
| 
								 | 
							
								      this.space();
							 | 
						||
| 
								 | 
							
								      this.print(node.argument, node);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  } else {
							 | 
						||
| 
								 | 
							
								    if (node.argument) {
							 | 
						||
| 
								 | 
							
								      this.space();
							 | 
						||
| 
								 | 
							
								      this.printTerminatorless(node.argument, node, false);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								function EmptyStatement() {
							 | 
						||
| 
								 | 
							
								  this.semicolon(true);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function ExpressionStatement(node) {
							 | 
						||
| 
								 | 
							
								  this.print(node.expression, node);
							 | 
						||
| 
								 | 
							
								  this.semicolon();
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								function AssignmentPattern(node) {
							 | 
						||
| 
								 | 
							
								  this.print(node.left, node);
							 | 
						||
| 
								 | 
							
								  if (node.left.optional) this.tokenChar(63);
							 | 
						||
| 
								 | 
							
								  this.print(node.left.typeAnnotation, node);
							 | 
						||
| 
								 | 
							
								  this.space();
							 | 
						||
| 
								 | 
							
								  this.tokenChar(61);
							 | 
						||
| 
								 | 
							
								  this.space();
							 | 
						||
| 
								 | 
							
								  this.print(node.right, node);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								function AssignmentExpression(node, parent) {
							 | 
						||
| 
								 | 
							
								  const parens = this.inForStatementInitCounter && node.operator === "in" && !n.needsParens(node, parent);
							 | 
						||
| 
								 | 
							
								  if (parens) {
							 | 
						||
| 
								 | 
							
								    this.tokenChar(40);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  this.print(node.left, node);
							 | 
						||
| 
								 | 
							
								  this.space();
							 | 
						||
| 
								 | 
							
								  if (node.operator === "in" || node.operator === "instanceof") {
							 | 
						||
| 
								 | 
							
								    this.word(node.operator);
							 | 
						||
| 
								 | 
							
								  } else {
							 | 
						||
| 
								 | 
							
								    this.token(node.operator);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  this.space();
							 | 
						||
| 
								 | 
							
								  this.print(node.right, node);
							 | 
						||
| 
								 | 
							
								  if (parens) {
							 | 
						||
| 
								 | 
							
								    this.tokenChar(41);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								function BindExpression(node) {
							 | 
						||
| 
								 | 
							
								  this.print(node.object, node);
							 | 
						||
| 
								 | 
							
								  this.token("::");
							 | 
						||
| 
								 | 
							
								  this.print(node.callee, node);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								function MemberExpression(node) {
							 | 
						||
| 
								 | 
							
								  this.print(node.object, node);
							 | 
						||
| 
								 | 
							
								  if (!node.computed && isMemberExpression(node.property)) {
							 | 
						||
| 
								 | 
							
								    throw new TypeError("Got a MemberExpression for MemberExpression property");
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  let computed = node.computed;
							 | 
						||
| 
								 | 
							
								  if (isLiteral(node.property) && typeof node.property.value === "number") {
							 | 
						||
| 
								 | 
							
								    computed = true;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  if (computed) {
							 | 
						||
| 
								 | 
							
								    this.tokenChar(91);
							 | 
						||
| 
								 | 
							
								    this.print(node.property, node);
							 | 
						||
| 
								 | 
							
								    this.tokenChar(93);
							 | 
						||
| 
								 | 
							
								  } else {
							 | 
						||
| 
								 | 
							
								    this.tokenChar(46);
							 | 
						||
| 
								 | 
							
								    this.print(node.property, node);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								function MetaProperty(node) {
							 | 
						||
| 
								 | 
							
								  this.print(node.meta, node);
							 | 
						||
| 
								 | 
							
								  this.tokenChar(46);
							 | 
						||
| 
								 | 
							
								  this.print(node.property, node);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								function PrivateName(node) {
							 | 
						||
| 
								 | 
							
								  this.tokenChar(35);
							 | 
						||
| 
								 | 
							
								  this.print(node.id, node);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								function V8IntrinsicIdentifier(node) {
							 | 
						||
| 
								 | 
							
								  this.tokenChar(37);
							 | 
						||
| 
								 | 
							
								  this.word(node.name);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								function ModuleExpression(node) {
							 | 
						||
| 
								 | 
							
								  this.word("module", true);
							 | 
						||
| 
								 | 
							
								  this.space();
							 | 
						||
| 
								 | 
							
								  this.tokenChar(123);
							 | 
						||
| 
								 | 
							
								  this.indent();
							 | 
						||
| 
								 | 
							
								  const {
							 | 
						||
| 
								 | 
							
								    body
							 | 
						||
| 
								 | 
							
								  } = node;
							 | 
						||
| 
								 | 
							
								  if (body.body.length || body.directives.length) {
							 | 
						||
| 
								 | 
							
								    this.newline();
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  this.print(body, node);
							 | 
						||
| 
								 | 
							
								  this.dedent();
							 | 
						||
| 
								 | 
							
								  this.sourceWithOffset("end", node.loc, 0, -1);
							 | 
						||
| 
								 | 
							
								  this.rightBrace();
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								//# sourceMappingURL=expressions.js.map
							 |