summaryrefslogtreecommitdiff
path: root/node_modules/@babel/generator/lib/printer.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/@babel/generator/lib/printer.js')
-rw-r--r--node_modules/@babel/generator/lib/printer.js79
1 files changed, 56 insertions, 23 deletions
diff --git a/node_modules/@babel/generator/lib/printer.js b/node_modules/@babel/generator/lib/printer.js
index cc2faeb0..f137135d 100644
--- a/node_modules/@babel/generator/lib/printer.js
+++ b/node_modules/@babel/generator/lib/printer.js
@@ -17,10 +17,8 @@ const {
} = _t;
const SCIENTIFIC_NOTATION = /e/i;
const ZERO_DECIMAL_INTEGER = /\.0+$/;
-const NON_DECIMAL_LITERAL = /^0[box]/;
-const PURE_ANNOTATION_RE = /^\s*[@#]__PURE__\s*$/;
const HAS_NEWLINE = /[\n\r\u2028\u2029]/;
-const HAS_BlOCK_COMMENT_END = /\*\//;
+const HAS_NEWLINE_OR_BlOCK_COMMENT_END = /[\n\r\u2028\u2029]|\*\//;
const {
needsParens
} = n;
@@ -29,7 +27,6 @@ class Printer {
this.inForStatementInitCounter = 0;
this._printStack = [];
this._indent = 0;
- this._indentChar = 0;
this._indentRepeat = 0;
this._insideAux = false;
this._parenPushNewlineState = null;
@@ -42,10 +39,9 @@ class Printer {
this._endsWithInnerRaw = false;
this._indentInnerComments = true;
this.format = format;
- this._buf = new _buffer.default(map);
- this._indentChar = format.indent.style.charCodeAt(0);
this._indentRepeat = format.indent.style.length;
this._inputMap = map == null ? void 0 : map._inputMap;
+ this._buf = new _buffer.default(map, format.indent.style[0]);
}
generate(ast) {
this.print(ast);
@@ -101,9 +97,16 @@ class Printer {
this._endsWithWord = true;
this._noLineTerminator = noLineTerminatorAfter;
}
- number(str) {
+ number(str, number) {
+ function isNonDecimalLiteral(str) {
+ if (str.length > 2 && str.charCodeAt(0) === 48) {
+ const secondChar = str.charCodeAt(1);
+ return secondChar === 98 || secondChar === 111 || secondChar === 120;
+ }
+ return false;
+ }
this.word(str);
- this._endsWithInteger = Number.isInteger(+str) && !NON_DECIMAL_LITERAL.test(str) && !SCIENTIFIC_NOTATION.test(str) && !ZERO_DECIMAL_INTEGER.test(str) && str.charCodeAt(str.length - 1) !== 46;
+ this._endsWithInteger = Number.isInteger(number) && !isNonDecimalLiteral(str) && !SCIENTIFIC_NOTATION.test(str) && !ZERO_DECIMAL_INTEGER.test(str) && str.charCodeAt(str.length - 1) !== 46;
}
token(str, maybeNewline = false) {
this._maybePrintInnerComments();
@@ -215,7 +218,7 @@ class Printer {
}
_maybeIndent(firstChar) {
if (this._indent && firstChar !== 10 && this.endsWith(10)) {
- this._buf.queueIndentation(this._indentChar, this._getIndent());
+ this._buf.queueIndentation(this._getIndent());
}
}
_shouldIndent(firstChar) {
@@ -254,9 +257,7 @@ class Printer {
}
const chaPost = str.charCodeAt(i + 1);
if (chaPost === 42) {
- if (PURE_ANNOTATION_RE.test(str.slice(i + 2, len - 2))) {
- return;
- }
+ return;
} else if (chaPost !== 47) {
this._parenPushNewlineState = null;
return;
@@ -305,7 +306,7 @@ class Printer {
}
}
print(node, parent, noLineTerminatorAfter, trailingCommentsLineOffset, forceParens) {
- var _node$extra;
+ var _node$extra, _node$leadingComments;
if (!node) return;
this._endsWithInnerRaw = false;
const nodeType = node.type;
@@ -322,7 +323,24 @@ class Printer {
const oldInAux = this._insideAux;
this._insideAux = node.loc == undefined;
this._maybeAddAuxComment(this._insideAux && !oldInAux);
- const shouldPrintParens = forceParens || format.retainFunctionParens && nodeType === "FunctionExpression" && ((_node$extra = node.extra) == null ? void 0 : _node$extra.parenthesized) || needsParens(node, parent, this._printStack);
+ const parenthesized = (_node$extra = node.extra) == null ? void 0 : _node$extra.parenthesized;
+ let shouldPrintParens = forceParens || parenthesized && format.retainFunctionParens && nodeType === "FunctionExpression" || needsParens(node, parent, this._printStack);
+ if (!shouldPrintParens && parenthesized && (_node$leadingComments = node.leadingComments) != null && _node$leadingComments.length && node.leadingComments[0].type === "CommentBlock") {
+ const parentType = parent == null ? void 0 : parent.type;
+ switch (parentType) {
+ case "ExpressionStatement":
+ case "VariableDeclarator":
+ case "AssignmentExpression":
+ case "ReturnStatement":
+ break;
+ case "CallExpression":
+ case "OptionalCallExpression":
+ case "NewExpression":
+ if (parent.callee !== node) break;
+ default:
+ shouldPrintParens = true;
+ }
+ }
if (shouldPrintParens) {
this.tokenChar(40);
this._endsWithInnerRaw = false;
@@ -402,9 +420,13 @@ class Printer {
if (!node) continue;
if (opts.statement) this._printNewline(i === 0, newlineOpts);
this.print(node, parent, undefined, opts.trailingCommentsLineOffset || 0);
- opts.iterator == null ? void 0 : opts.iterator(node, i);
- if (i < len - 1) separator == null ? void 0 : separator();
+ opts.iterator == null || opts.iterator(node, i);
+ if (i < len - 1) separator == null || separator();
if (opts.statement) {
+ var _node$trailingComment;
+ if (!((_node$trailingComment = node.trailingComments) != null && _node$trailingComment.length)) {
+ this._lastCommentLine = 0;
+ }
if (i + 1 === len) {
this.newline(1);
} else {
@@ -507,7 +529,7 @@ class Printer {
_shouldPrintComment(comment) {
if (comment.ignore) return 0;
if (this._printedComments.has(comment)) return 0;
- if (this._noLineTerminator && (HAS_NEWLINE.test(comment.value) || HAS_BlOCK_COMMENT_END.test(comment.value))) {
+ if (this._noLineTerminator && HAS_NEWLINE_OR_BlOCK_COMMENT_END.test(comment.value)) {
return 2;
}
this._printedComments.add(comment);
@@ -529,6 +551,14 @@ class Printer {
}
let val;
if (isBlockComment) {
+ const {
+ _parenPushNewlineState
+ } = this;
+ if ((_parenPushNewlineState == null ? void 0 : _parenPushNewlineState.printed) === false && HAS_NEWLINE.test(comment.value)) {
+ this.tokenChar(40);
+ this.indent();
+ _parenPushNewlineState.printed = true;
+ }
val = `/*${comment.value}*/`;
if (this.format.indent.adjustMultilineComment) {
var _comment$loc;
@@ -537,11 +567,15 @@ class Printer {
const newlineRegex = new RegExp("\\n\\s{1," + offset + "}", "g");
val = val.replace(newlineRegex, "\n");
}
- let indentSize = this.format.retainLines ? 0 : this._buf.getCurrentColumn();
- if (this._shouldIndent(47) || this.format.retainLines) {
- indentSize += this._getIndent();
+ if (this.format.concise) {
+ val = val.replace(/\n(?!$)/g, `\n`);
+ } else {
+ let indentSize = this.format.retainLines ? 0 : this._buf.getCurrentColumn();
+ if (this._shouldIndent(47) || this.format.retainLines) {
+ indentSize += this._getIndent();
+ }
+ val = val.replace(/\n(?!$)/g, `\n${" ".repeat(indentSize)}`);
}
- val = val.replace(/\n(?!$)/g, `\n${" ".repeat(indentSize)}`);
}
} else if (!noLineTerminator) {
val = `//${comment.value}`;
@@ -641,8 +675,7 @@ Object.assign(Printer.prototype, generatorFunctions);
{
Printer.prototype.Noop = function Noop() {};
}
-var _default = Printer;
-exports.default = _default;
+var _default = exports.default = Printer;
function commaSeparator() {
this.tokenChar(44);
this.space();