| "use strict"; |
| |
| Object.defineProperty(exports, "__esModule", { |
| value: true |
| }); |
| exports.ArgumentPlaceholder = ArgumentPlaceholder; |
| exports.ArrayPattern = exports.ArrayExpression = ArrayExpression; |
| exports.BigIntLiteral = BigIntLiteral; |
| exports.BooleanLiteral = BooleanLiteral; |
| exports.DecimalLiteral = DecimalLiteral; |
| exports.Identifier = Identifier; |
| exports.NullLiteral = NullLiteral; |
| exports.NumericLiteral = NumericLiteral; |
| exports.ObjectPattern = exports.ObjectExpression = ObjectExpression; |
| exports.ObjectMethod = ObjectMethod; |
| exports.ObjectProperty = ObjectProperty; |
| exports.PipelineBareFunction = PipelineBareFunction; |
| exports.PipelinePrimaryTopicReference = PipelinePrimaryTopicReference; |
| exports.PipelineTopicExpression = PipelineTopicExpression; |
| exports.RecordExpression = RecordExpression; |
| exports.RegExpLiteral = RegExpLiteral; |
| exports.SpreadElement = exports.RestElement = RestElement; |
| exports.StringLiteral = StringLiteral; |
| exports.TopicReference = TopicReference; |
| exports.TupleExpression = TupleExpression; |
| |
| var _t = require("@babel/types"); |
| |
| var _jsesc = require("jsesc"); |
| |
| const { |
| isAssignmentPattern, |
| isIdentifier |
| } = _t; |
| |
| function Identifier(node) { |
| this.exactSource(node.loc, () => { |
| this.word(node.name); |
| }); |
| } |
| |
| function ArgumentPlaceholder() { |
| this.token("?"); |
| } |
| |
| function RestElement(node) { |
| this.token("..."); |
| this.print(node.argument, node); |
| } |
| |
| function ObjectExpression(node) { |
| const props = node.properties; |
| this.token("{"); |
| this.printInnerComments(node); |
| |
| if (props.length) { |
| this.space(); |
| this.printList(props, node, { |
| indent: true, |
| statement: true |
| }); |
| this.space(); |
| } |
| |
| this.token("}"); |
| } |
| |
| function ObjectMethod(node) { |
| this.printJoin(node.decorators, node); |
| |
| this._methodHead(node); |
| |
| this.space(); |
| this.print(node.body, node); |
| } |
| |
| function ObjectProperty(node) { |
| this.printJoin(node.decorators, node); |
| |
| if (node.computed) { |
| this.token("["); |
| this.print(node.key, node); |
| this.token("]"); |
| } else { |
| if (isAssignmentPattern(node.value) && isIdentifier(node.key) && node.key.name === node.value.left.name) { |
| this.print(node.value, node); |
| return; |
| } |
| |
| this.print(node.key, node); |
| |
| if (node.shorthand && isIdentifier(node.key) && isIdentifier(node.value) && node.key.name === node.value.name) { |
| return; |
| } |
| } |
| |
| this.token(":"); |
| this.space(); |
| this.print(node.value, node); |
| } |
| |
| function ArrayExpression(node) { |
| const elems = node.elements; |
| const len = elems.length; |
| this.token("["); |
| this.printInnerComments(node); |
| |
| for (let i = 0; i < elems.length; i++) { |
| const elem = elems[i]; |
| |
| if (elem) { |
| if (i > 0) this.space(); |
| this.print(elem, node); |
| if (i < len - 1) this.token(","); |
| } else { |
| this.token(","); |
| } |
| } |
| |
| this.token("]"); |
| } |
| |
| function RecordExpression(node) { |
| const props = node.properties; |
| let startToken; |
| let endToken; |
| |
| if (this.format.recordAndTupleSyntaxType === "bar") { |
| startToken = "{|"; |
| endToken = "|}"; |
| } else if (this.format.recordAndTupleSyntaxType === "hash") { |
| startToken = "#{"; |
| endToken = "}"; |
| } else { |
| throw new Error(`The "recordAndTupleSyntaxType" generator option must be "bar" or "hash" (${JSON.stringify(this.format.recordAndTupleSyntaxType)} received).`); |
| } |
| |
| this.token(startToken); |
| this.printInnerComments(node); |
| |
| if (props.length) { |
| this.space(); |
| this.printList(props, node, { |
| indent: true, |
| statement: true |
| }); |
| this.space(); |
| } |
| |
| this.token(endToken); |
| } |
| |
| function TupleExpression(node) { |
| const elems = node.elements; |
| const len = elems.length; |
| let startToken; |
| let endToken; |
| |
| if (this.format.recordAndTupleSyntaxType === "bar") { |
| startToken = "[|"; |
| endToken = "|]"; |
| } else if (this.format.recordAndTupleSyntaxType === "hash") { |
| startToken = "#["; |
| endToken = "]"; |
| } else { |
| throw new Error(`${this.format.recordAndTupleSyntaxType} is not a valid recordAndTuple syntax type`); |
| } |
| |
| this.token(startToken); |
| this.printInnerComments(node); |
| |
| for (let i = 0; i < elems.length; i++) { |
| const elem = elems[i]; |
| |
| if (elem) { |
| if (i > 0) this.space(); |
| this.print(elem, node); |
| if (i < len - 1) this.token(","); |
| } |
| } |
| |
| this.token(endToken); |
| } |
| |
| function RegExpLiteral(node) { |
| this.word(`/${node.pattern}/${node.flags}`); |
| } |
| |
| function BooleanLiteral(node) { |
| this.word(node.value ? "true" : "false"); |
| } |
| |
| function NullLiteral() { |
| this.word("null"); |
| } |
| |
| function NumericLiteral(node) { |
| const raw = this.getPossibleRaw(node); |
| const opts = this.format.jsescOption; |
| const value = node.value + ""; |
| |
| if (opts.numbers) { |
| this.number(_jsesc(node.value, opts)); |
| } else if (raw == null) { |
| this.number(value); |
| } else if (this.format.minified) { |
| this.number(raw.length < value.length ? raw : value); |
| } else { |
| this.number(raw); |
| } |
| } |
| |
| function StringLiteral(node) { |
| const raw = this.getPossibleRaw(node); |
| |
| if (!this.format.minified && raw != null) { |
| this.token(raw); |
| return; |
| } |
| |
| const val = _jsesc(node.value, Object.assign(this.format.jsescOption, this.format.jsonCompatibleStrings && { |
| json: true |
| })); |
| |
| return this.token(val); |
| } |
| |
| function BigIntLiteral(node) { |
| const raw = this.getPossibleRaw(node); |
| |
| if (!this.format.minified && raw != null) { |
| this.word(raw); |
| return; |
| } |
| |
| this.word(node.value + "n"); |
| } |
| |
| function DecimalLiteral(node) { |
| const raw = this.getPossibleRaw(node); |
| |
| if (!this.format.minified && raw != null) { |
| this.word(raw); |
| return; |
| } |
| |
| this.word(node.value + "m"); |
| } |
| |
| const validTopicTokenSet = new Set(["^", "%", "#"]); |
| |
| function TopicReference() { |
| const { |
| topicToken |
| } = this.format; |
| |
| if (validTopicTokenSet.has(topicToken)) { |
| this.token(topicToken); |
| } else { |
| const givenTopicTokenJSON = JSON.stringify(topicToken); |
| const validTopics = Array.from(validTopicTokenSet, v => JSON.stringify(v)); |
| throw new Error(`The "topicToken" generator option must be one of ` + `${validTopics.join(", ")} (${givenTopicTokenJSON} received instead).`); |
| } |
| } |
| |
| function PipelineTopicExpression(node) { |
| this.print(node.expression, node); |
| } |
| |
| function PipelineBareFunction(node) { |
| this.print(node.callee, node); |
| } |
| |
| function PipelinePrimaryTopicReference() { |
| this.token("#"); |
| } |