"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"); this.space(); } this.word("do"); this.space(); this.print(node.body, node); } function ParenthesizedExpression(node) { this.token("("); this.print(node.expression, node); this.token(")"); } 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.token("?"); this.space(); this.print(node.consequent, node); this.space(); this.token(":"); 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.token("("); this.printList(node.arguments, node); this.token(")"); } 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 === "CallExpression") { node = node.callee; } if (node.type === "ParenthesizedExpression") { return false; } return !isDecoratorMemberExpression(node); } function Decorator(node) { this.token("@"); const { expression } = node; if (shouldParenthesizeDecoratorExpression(expression)) { this.token("("); this.print(expression, node); this.token(")"); } 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.token("["); this.print(node.property, node); this.token("]"); } else { if (!node.optional) { this.token("."); } this.print(node.property, node); } } function OptionalCallExpression(node) { this.print(node.callee, node); this.print(node.typeArguments, node); this.print(node.typeParameters, node); if (node.optional) { this.token("?."); } this.token("("); this.printList(node.arguments, node); this.token(")"); } function CallExpression(node) { this.print(node.callee, node); this.print(node.typeArguments, node); this.print(node.typeParameters, node); this.token("("); this.printList(node.arguments, node); this.token(")"); } 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"); if (node.delegate) { this.token("*"); } 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.token("?"); this.print(node.left.typeAnnotation, node); this.space(); this.token("="); 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.token("("); } 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.token(")"); } } 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.token("["); this.print(node.property, node); this.token("]"); } else { this.token("."); this.print(node.property, node); } } function MetaProperty(node) { this.print(node.meta, node); this.token("."); this.print(node.property, node); } function PrivateName(node) { this.token("#"); this.print(node.id, node); } function V8IntrinsicIdentifier(node) { this.token("%"); this.word(node.name); } function ModuleExpression(node) { this.word("module"); this.space(); this.token("{"); if (node.body.body.length === 0) { this.token("}"); } else { this.newline(); this.printSequence(node.body.body, node, { indent: true }); this.rightBrace(); } }