| | |
| | | Object.defineProperty(exports, "__esModule", { |
| | | value: true |
| | | }); |
| | | exports.UnaryExpression = UnaryExpression; |
| | | exports.DoExpression = DoExpression; |
| | | exports.ParenthesizedExpression = ParenthesizedExpression; |
| | | exports.UpdateExpression = UpdateExpression; |
| | | exports.ConditionalExpression = ConditionalExpression; |
| | | exports.NewExpression = NewExpression; |
| | | exports.SequenceExpression = SequenceExpression; |
| | | exports.ThisExpression = ThisExpression; |
| | | exports.Super = Super; |
| | | exports.Decorator = Decorator; |
| | | exports.OptionalMemberExpression = OptionalMemberExpression; |
| | | exports.OptionalCallExpression = OptionalCallExpression; |
| | | exports.LogicalExpression = exports.BinaryExpression = exports.AssignmentExpression = AssignmentExpression; |
| | | exports.AssignmentPattern = AssignmentPattern; |
| | | exports.AwaitExpression = void 0; |
| | | exports.BindExpression = BindExpression; |
| | | exports.CallExpression = CallExpression; |
| | | exports.Import = Import; |
| | | exports.ConditionalExpression = ConditionalExpression; |
| | | exports.Decorator = Decorator; |
| | | exports.DoExpression = DoExpression; |
| | | exports.EmptyStatement = EmptyStatement; |
| | | exports.ExpressionStatement = ExpressionStatement; |
| | | exports.AssignmentPattern = AssignmentPattern; |
| | | exports.LogicalExpression = exports.BinaryExpression = exports.AssignmentExpression = AssignmentExpression; |
| | | exports.BindExpression = BindExpression; |
| | | exports.Import = Import; |
| | | exports.MemberExpression = MemberExpression; |
| | | exports.MetaProperty = MetaProperty; |
| | | exports.PrivateName = PrivateName; |
| | | exports.V8IntrinsicIdentifier = V8IntrinsicIdentifier; |
| | | exports.ModuleExpression = ModuleExpression; |
| | | exports.AwaitExpression = exports.YieldExpression = void 0; |
| | | 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 = void 0; |
| | | |
| | | var _t = require("@babel/types"); |
| | | |
| | |
| | | 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("@"); |
| | | this.print(node.expression, node); |
| | | const { |
| | | expression |
| | | } = node; |
| | | |
| | | if (shouldParenthesizeDecoratorExpression(expression)) { |
| | | this.token("("); |
| | | this.print(expression, node); |
| | | this.token(")"); |
| | | } else { |
| | | this.print(expression, node); |
| | | } |
| | | |
| | | this.newline(); |
| | | } |
| | | |