feat: refactoring project
This commit is contained in:
318
node_modules/@babel/generator/lib/printer.js
generated
vendored
318
node_modules/@babel/generator/lib/printer.js
generated
vendored
@@ -7,8 +7,10 @@ exports.default = void 0;
|
||||
var _buffer = require("./buffer.js");
|
||||
var n = require("./node/index.js");
|
||||
var _t = require("@babel/types");
|
||||
var _tokenMap = require("./token-map.js");
|
||||
var generatorFunctions = require("./generators/index.js");
|
||||
const {
|
||||
isExpression,
|
||||
isFunction,
|
||||
isStatement,
|
||||
isClassBody,
|
||||
@@ -19,59 +21,105 @@ const SCIENTIFIC_NOTATION = /e/i;
|
||||
const ZERO_DECIMAL_INTEGER = /\.0+$/;
|
||||
const HAS_NEWLINE = /[\n\r\u2028\u2029]/;
|
||||
const HAS_NEWLINE_OR_BlOCK_COMMENT_END = /[\n\r\u2028\u2029]|\*\//;
|
||||
function commentIsNewline(c) {
|
||||
return c.type === "CommentLine" || HAS_NEWLINE.test(c.value);
|
||||
}
|
||||
const {
|
||||
needsParens
|
||||
} = n;
|
||||
class Printer {
|
||||
constructor(format, map) {
|
||||
constructor(format, map, tokens, originalCode) {
|
||||
this.inForStatementInit = false;
|
||||
this.tokenContext = 0;
|
||||
this._tokens = null;
|
||||
this._originalCode = null;
|
||||
this._currentNode = null;
|
||||
this._indent = 0;
|
||||
this._indentRepeat = 0;
|
||||
this._insideAux = false;
|
||||
this._parenPushNewlineState = null;
|
||||
this._noLineTerminator = false;
|
||||
this._noLineTerminatorAfterNode = null;
|
||||
this._printAuxAfterOnNextUserNode = false;
|
||||
this._printedComments = new Set();
|
||||
this._endsWithInteger = false;
|
||||
this._endsWithWord = false;
|
||||
this._endsWithDiv = false;
|
||||
this._lastCommentLine = 0;
|
||||
this._endsWithInnerRaw = false;
|
||||
this._indentInnerComments = true;
|
||||
this.tokenMap = null;
|
||||
this._boundGetRawIdentifier = this._getRawIdentifier.bind(this);
|
||||
this.format = format;
|
||||
this._tokens = tokens;
|
||||
this._originalCode = originalCode;
|
||||
this._indentRepeat = format.indent.style.length;
|
||||
this._inputMap = map == null ? void 0 : map._inputMap;
|
||||
this._buf = new _buffer.default(map, format.indent.style[0]);
|
||||
}
|
||||
enterForStatementInit(val) {
|
||||
const old = this.inForStatementInit;
|
||||
if (old === val) return () => {};
|
||||
this.inForStatementInit = val;
|
||||
enterForStatementInit() {
|
||||
if (this.inForStatementInit) return () => {};
|
||||
this.inForStatementInit = true;
|
||||
return () => {
|
||||
this.inForStatementInit = old;
|
||||
this.inForStatementInit = false;
|
||||
};
|
||||
}
|
||||
enterDelimited() {
|
||||
const oldInForStatementInit = this.inForStatementInit;
|
||||
const oldNoLineTerminatorAfterNode = this._noLineTerminatorAfterNode;
|
||||
if (oldInForStatementInit === false && oldNoLineTerminatorAfterNode === null) {
|
||||
return () => {};
|
||||
}
|
||||
this.inForStatementInit = false;
|
||||
this._noLineTerminatorAfterNode = null;
|
||||
return () => {
|
||||
this.inForStatementInit = oldInForStatementInit;
|
||||
this._noLineTerminatorAfterNode = oldNoLineTerminatorAfterNode;
|
||||
};
|
||||
}
|
||||
generate(ast) {
|
||||
if (this.format.preserveFormat) {
|
||||
this.tokenMap = new _tokenMap.TokenMap(ast, this._tokens, this._originalCode);
|
||||
}
|
||||
this.print(ast);
|
||||
this._maybeAddAuxComment();
|
||||
return this._buf.get();
|
||||
}
|
||||
indent() {
|
||||
if (this.format.compact || this.format.concise) return;
|
||||
const {
|
||||
format
|
||||
} = this;
|
||||
if (format.preserveFormat || format.compact || format.concise) {
|
||||
return;
|
||||
}
|
||||
this._indent++;
|
||||
}
|
||||
dedent() {
|
||||
if (this.format.compact || this.format.concise) return;
|
||||
const {
|
||||
format
|
||||
} = this;
|
||||
if (format.preserveFormat || format.compact || format.concise) {
|
||||
return;
|
||||
}
|
||||
this._indent--;
|
||||
}
|
||||
semicolon(force = false) {
|
||||
this._maybeAddAuxComment();
|
||||
if (force) {
|
||||
this._appendChar(59);
|
||||
} else {
|
||||
this._queue(59);
|
||||
this._noLineTerminator = false;
|
||||
return;
|
||||
}
|
||||
if (this.tokenMap) {
|
||||
const node = this._currentNode;
|
||||
if (node.start != null && node.end != null) {
|
||||
if (!this.tokenMap.endMatches(node, ";")) {
|
||||
return;
|
||||
}
|
||||
const indexes = this.tokenMap.getIndexes(this._currentNode);
|
||||
this._catchUpTo(this._tokens[indexes[indexes.length - 1]].loc.start);
|
||||
}
|
||||
}
|
||||
this._queue(59);
|
||||
this._noLineTerminator = false;
|
||||
}
|
||||
rightBrace(node) {
|
||||
@@ -86,7 +134,10 @@ class Printer {
|
||||
this.tokenChar(41);
|
||||
}
|
||||
space(force = false) {
|
||||
if (this.format.compact) return;
|
||||
const {
|
||||
format
|
||||
} = this;
|
||||
if (format.compact || format.preserveFormat) return;
|
||||
if (force) {
|
||||
this._space();
|
||||
} else if (this._buf.hasContent()) {
|
||||
@@ -98,8 +149,8 @@ class Printer {
|
||||
}
|
||||
word(str, noLineTerminatorAfter = false) {
|
||||
this.tokenContext = 0;
|
||||
this._maybePrintInnerComments();
|
||||
if (this._endsWithWord || str.charCodeAt(0) === 47 && this.endsWith(47)) {
|
||||
this._maybePrintInnerComments(str);
|
||||
if (this._endsWithWord || this._endsWithDiv && str.charCodeAt(0) === 47) {
|
||||
this._space();
|
||||
}
|
||||
this._maybeAddAuxComment();
|
||||
@@ -118,21 +169,21 @@ class Printer {
|
||||
this.word(str);
|
||||
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) {
|
||||
token(str, maybeNewline = false, occurrenceCount = 0) {
|
||||
this.tokenContext = 0;
|
||||
this._maybePrintInnerComments();
|
||||
this._maybePrintInnerComments(str, occurrenceCount);
|
||||
const lastChar = this.getLastChar();
|
||||
const strFirst = str.charCodeAt(0);
|
||||
if (lastChar === 33 && (str === "--" || strFirst === 61) || strFirst === 43 && lastChar === 43 || strFirst === 45 && lastChar === 45 || strFirst === 46 && this._endsWithInteger) {
|
||||
this._space();
|
||||
}
|
||||
this._maybeAddAuxComment();
|
||||
this._append(str, maybeNewline);
|
||||
this._append(str, maybeNewline, occurrenceCount);
|
||||
this._noLineTerminator = false;
|
||||
}
|
||||
tokenChar(char) {
|
||||
this.tokenContext = 0;
|
||||
this._maybePrintInnerComments();
|
||||
this._maybePrintInnerComments(String.fromCharCode(char));
|
||||
const lastChar = this.getLastChar();
|
||||
if (char === 43 && lastChar === 43 || char === 45 && lastChar === 45 || char === 46 && this._endsWithInteger) {
|
||||
this._space();
|
||||
@@ -183,7 +234,7 @@ class Printer {
|
||||
this._buf.source(prop, loc);
|
||||
}
|
||||
sourceWithOffset(prop, loc, columnOffset) {
|
||||
if (!loc) return;
|
||||
if (!loc || this.format.preserveFormat) return;
|
||||
this._catchUp(prop, loc);
|
||||
this._buf.sourceWithOffset(prop, loc, columnOffset);
|
||||
}
|
||||
@@ -199,22 +250,29 @@ class Printer {
|
||||
_newline() {
|
||||
this._queue(10);
|
||||
}
|
||||
_append(str, maybeNewline) {
|
||||
this._maybeAddParen(str);
|
||||
_append(str, maybeNewline, occurrenceCount = 0) {
|
||||
if (this.tokenMap) {
|
||||
const token = this.tokenMap.findMatching(this._currentNode, str, occurrenceCount);
|
||||
if (token) this._catchUpTo(token.loc.start);
|
||||
}
|
||||
this._maybeIndent(str.charCodeAt(0));
|
||||
this._buf.append(str, maybeNewline);
|
||||
this._endsWithWord = false;
|
||||
this._endsWithInteger = false;
|
||||
this._endsWithDiv = false;
|
||||
}
|
||||
_appendChar(char) {
|
||||
this._maybeAddParenChar(char);
|
||||
if (this.tokenMap) {
|
||||
const token = this.tokenMap.findMatching(this._currentNode, String.fromCharCode(char));
|
||||
if (token) this._catchUpTo(token.loc.start);
|
||||
}
|
||||
this._maybeIndent(char);
|
||||
this._buf.appendChar(char);
|
||||
this._endsWithWord = false;
|
||||
this._endsWithInteger = false;
|
||||
this._endsWithDiv = false;
|
||||
}
|
||||
_queue(char) {
|
||||
this._maybeAddParenChar(char);
|
||||
this._maybeIndent(char);
|
||||
this._buf.queue(char);
|
||||
this._endsWithWord = false;
|
||||
@@ -230,47 +288,6 @@ class Printer {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
_maybeAddParenChar(char) {
|
||||
const parenPushNewlineState = this._parenPushNewlineState;
|
||||
if (!parenPushNewlineState) return;
|
||||
if (char === 32) {
|
||||
return;
|
||||
}
|
||||
if (char !== 10) {
|
||||
this._parenPushNewlineState = null;
|
||||
return;
|
||||
}
|
||||
this.tokenChar(40);
|
||||
this.indent();
|
||||
parenPushNewlineState.printed = true;
|
||||
}
|
||||
_maybeAddParen(str) {
|
||||
const parenPushNewlineState = this._parenPushNewlineState;
|
||||
if (!parenPushNewlineState) return;
|
||||
const len = str.length;
|
||||
let i;
|
||||
for (i = 0; i < len && str.charCodeAt(i) === 32; i++) continue;
|
||||
if (i === len) {
|
||||
return;
|
||||
}
|
||||
const cha = str.charCodeAt(i);
|
||||
if (cha !== 10) {
|
||||
if (cha !== 47 || i + 1 === len) {
|
||||
this._parenPushNewlineState = null;
|
||||
return;
|
||||
}
|
||||
const chaPost = str.charCodeAt(i + 1);
|
||||
if (chaPost === 42) {
|
||||
return;
|
||||
} else if (chaPost !== 47) {
|
||||
this._parenPushNewlineState = null;
|
||||
return;
|
||||
}
|
||||
}
|
||||
this.tokenChar(40);
|
||||
this.indent();
|
||||
parenPushNewlineState.printed = true;
|
||||
}
|
||||
catchUp(line) {
|
||||
if (!this.format.retainLines) return;
|
||||
const count = line - this._buf.getCurrentLine();
|
||||
@@ -279,38 +296,45 @@ class Printer {
|
||||
}
|
||||
}
|
||||
_catchUp(prop, loc) {
|
||||
var _loc$prop;
|
||||
if (!this.format.retainLines) return;
|
||||
const line = loc == null || (_loc$prop = loc[prop]) == null ? void 0 : _loc$prop.line;
|
||||
if (line != null) {
|
||||
const count = line - this._buf.getCurrentLine();
|
||||
for (let i = 0; i < count; i++) {
|
||||
this._newline();
|
||||
const {
|
||||
format
|
||||
} = this;
|
||||
if (!format.preserveFormat) {
|
||||
if (format.retainLines && loc != null && loc[prop]) {
|
||||
this.catchUp(loc[prop].line);
|
||||
}
|
||||
return;
|
||||
}
|
||||
const pos = loc == null ? void 0 : loc[prop];
|
||||
if (pos != null) this._catchUpTo(pos);
|
||||
}
|
||||
_catchUpTo({
|
||||
line,
|
||||
column,
|
||||
index
|
||||
}) {
|
||||
const count = line - this._buf.getCurrentLine();
|
||||
if (count > 0 && this._noLineTerminator) {
|
||||
return;
|
||||
}
|
||||
for (let i = 0; i < count; i++) {
|
||||
this._newline();
|
||||
}
|
||||
const spacesCount = count > 0 ? column : column - this._buf.getCurrentColumn();
|
||||
if (spacesCount > 0) {
|
||||
const spaces = this._originalCode ? this._originalCode.slice(index - spacesCount, index).replace(/[^\t\x0B\f \xA0\u1680\u2000-\u200A\u202F\u205F\u3000\uFEFF]/gu, " ") : " ".repeat(spacesCount);
|
||||
this._append(spaces, false);
|
||||
}
|
||||
}
|
||||
_getIndent() {
|
||||
return this._indentRepeat * this._indent;
|
||||
}
|
||||
printTerminatorless(node, parent, isLabel) {
|
||||
if (isLabel) {
|
||||
this._noLineTerminator = true;
|
||||
this.print(node, parent);
|
||||
} else {
|
||||
const terminatorState = {
|
||||
printed: false
|
||||
};
|
||||
this._parenPushNewlineState = terminatorState;
|
||||
this.print(node, parent);
|
||||
if (terminatorState.printed) {
|
||||
this.dedent();
|
||||
this.newline();
|
||||
this.tokenChar(41);
|
||||
}
|
||||
}
|
||||
printTerminatorless(node) {
|
||||
this._noLineTerminator = true;
|
||||
this.print(node);
|
||||
}
|
||||
print(node, parent, noLineTerminatorAfter, trailingCommentsLineOffset, forceParens) {
|
||||
var _node$extra, _node$leadingComments;
|
||||
print(node, noLineTerminatorAfter, trailingCommentsLineOffset) {
|
||||
var _node$extra, _node$leadingComments, _node$leadingComments2;
|
||||
if (!node) return;
|
||||
this._endsWithInnerRaw = false;
|
||||
const nodeType = node.type;
|
||||
@@ -323,13 +347,13 @@ class Printer {
|
||||
if (printMethod === undefined) {
|
||||
throw new ReferenceError(`unknown node of type ${JSON.stringify(nodeType)} with constructor ${JSON.stringify(node.constructor.name)}`);
|
||||
}
|
||||
const oldNode = this._currentNode;
|
||||
const parent = this._currentNode;
|
||||
this._currentNode = node;
|
||||
const oldInAux = this._insideAux;
|
||||
this._insideAux = node.loc == null;
|
||||
this._maybeAddAuxComment(this._insideAux && !oldInAux);
|
||||
const parenthesized = (_node$extra = node.extra) == null ? void 0 : _node$extra.parenthesized;
|
||||
let shouldPrintParens = forceParens || parenthesized && format.retainFunctionParens && nodeType === "FunctionExpression" || needsParens(node, parent, this.tokenContext, this.inForStatementInit);
|
||||
let shouldPrintParens = parenthesized && format.preserveFormat || parenthesized && format.retainFunctionParens && nodeType === "FunctionExpression" || needsParens(node, parent, this.tokenContext, this.inForStatementInit, format.preserveFormat ? this._boundGetRawIdentifier : undefined);
|
||||
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) {
|
||||
@@ -346,11 +370,35 @@ class Printer {
|
||||
shouldPrintParens = true;
|
||||
}
|
||||
}
|
||||
let exitInForStatementInit;
|
||||
let indentParenthesized = false;
|
||||
if (!shouldPrintParens && this._noLineTerminator && ((_node$leadingComments2 = node.leadingComments) != null && _node$leadingComments2.some(commentIsNewline) || this.format.retainLines && node.loc && node.loc.start.line > this._buf.getCurrentLine())) {
|
||||
shouldPrintParens = true;
|
||||
indentParenthesized = true;
|
||||
}
|
||||
let oldNoLineTerminatorAfterNode;
|
||||
let oldInForStatementInitWasTrue;
|
||||
if (!shouldPrintParens) {
|
||||
noLineTerminatorAfter || (noLineTerminatorAfter = parent && this._noLineTerminatorAfterNode === parent && n.isLastChild(parent, node));
|
||||
if (noLineTerminatorAfter) {
|
||||
var _node$trailingComment;
|
||||
if ((_node$trailingComment = node.trailingComments) != null && _node$trailingComment.some(commentIsNewline)) {
|
||||
if (isExpression(node)) shouldPrintParens = true;
|
||||
} else {
|
||||
oldNoLineTerminatorAfterNode = this._noLineTerminatorAfterNode;
|
||||
this._noLineTerminatorAfterNode = node;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (shouldPrintParens) {
|
||||
this.tokenChar(40);
|
||||
if (indentParenthesized) this.indent();
|
||||
this._endsWithInnerRaw = false;
|
||||
exitInForStatementInit = this.enterForStatementInit(false);
|
||||
if (this.inForStatementInit) {
|
||||
oldInForStatementInitWasTrue = true;
|
||||
this.inForStatementInit = false;
|
||||
}
|
||||
oldNoLineTerminatorAfterNode = this._noLineTerminatorAfterNode;
|
||||
this._noLineTerminatorAfterNode = null;
|
||||
}
|
||||
this._lastCommentLine = 0;
|
||||
this._printLeadingComments(node, parent);
|
||||
@@ -358,18 +406,25 @@ class Printer {
|
||||
this.exactSource(loc, printMethod.bind(this, node, parent));
|
||||
if (shouldPrintParens) {
|
||||
this._printTrailingComments(node, parent);
|
||||
if (indentParenthesized) {
|
||||
this.dedent();
|
||||
this.newline();
|
||||
}
|
||||
this.tokenChar(41);
|
||||
this._noLineTerminator = noLineTerminatorAfter;
|
||||
exitInForStatementInit();
|
||||
if (oldInForStatementInitWasTrue) this.inForStatementInit = true;
|
||||
} else if (noLineTerminatorAfter && !this._noLineTerminator) {
|
||||
this._noLineTerminator = true;
|
||||
this._printTrailingComments(node, parent);
|
||||
} else {
|
||||
this._printTrailingComments(node, parent, trailingCommentsLineOffset);
|
||||
}
|
||||
this._currentNode = oldNode;
|
||||
this._currentNode = parent;
|
||||
format.concise = oldConcise;
|
||||
this._insideAux = oldInAux;
|
||||
if (oldNoLineTerminatorAfterNode !== undefined) {
|
||||
this._noLineTerminatorAfterNode = oldNoLineTerminatorAfterNode;
|
||||
}
|
||||
this._endsWithInnerRaw = false;
|
||||
}
|
||||
_maybeAddAuxComment(enteredPositionlessNode) {
|
||||
@@ -404,7 +459,7 @@ class Printer {
|
||||
return extra.raw;
|
||||
}
|
||||
}
|
||||
printJoin(nodes, parent, opts = {}) {
|
||||
printJoin(nodes, opts = {}) {
|
||||
if (!(nodes != null && nodes.length)) return;
|
||||
let {
|
||||
indent
|
||||
@@ -427,12 +482,14 @@ class Printer {
|
||||
const node = nodes[i];
|
||||
if (!node) continue;
|
||||
if (opts.statement) this._printNewline(i === 0, newlineOpts);
|
||||
this.print(node, parent, undefined, opts.trailingCommentsLineOffset || 0);
|
||||
this.print(node, undefined, opts.trailingCommentsLineOffset || 0);
|
||||
opts.iterator == null || opts.iterator(node, i);
|
||||
if (i < len - 1) separator == null || separator();
|
||||
if (separator != null) {
|
||||
if (i < len - 1) separator(i, false);else if (opts.printTrailingSeparator) separator(i, true);
|
||||
}
|
||||
if (opts.statement) {
|
||||
var _node$trailingComment;
|
||||
if (!((_node$trailingComment = node.trailingComments) != null && _node$trailingComment.length)) {
|
||||
var _node$trailingComment2;
|
||||
if (!((_node$trailingComment2 = node.trailingComments) != null && _node$trailingComment2.length)) {
|
||||
this._lastCommentLine = 0;
|
||||
}
|
||||
if (i + 1 === len) {
|
||||
@@ -447,10 +504,10 @@ class Printer {
|
||||
}
|
||||
if (indent) this.dedent();
|
||||
}
|
||||
printAndIndentOnComments(node, parent) {
|
||||
printAndIndentOnComments(node) {
|
||||
const indent = node.leadingComments && node.leadingComments.length > 0;
|
||||
if (indent) this.indent();
|
||||
this.print(node, parent);
|
||||
this.print(node);
|
||||
if (indent) this.dedent();
|
||||
}
|
||||
printBlock(parent) {
|
||||
@@ -458,7 +515,7 @@ class Printer {
|
||||
if (node.type !== "EmptyStatement") {
|
||||
this.space();
|
||||
}
|
||||
this.print(node, parent);
|
||||
this.print(node);
|
||||
}
|
||||
_printTrailingComments(node, parent, lineOffset) {
|
||||
const {
|
||||
@@ -477,12 +534,15 @@ class Printer {
|
||||
if (!(comments != null && comments.length)) return;
|
||||
this._printComments(0, comments, node, parent);
|
||||
}
|
||||
_maybePrintInnerComments() {
|
||||
if (this._endsWithInnerRaw) this.printInnerComments();
|
||||
_maybePrintInnerComments(nextTokenStr, nextTokenOccurrenceCount) {
|
||||
if (this._endsWithInnerRaw) {
|
||||
var _this$tokenMap;
|
||||
this.printInnerComments((_this$tokenMap = this.tokenMap) == null ? void 0 : _this$tokenMap.findMatching(this._currentNode, nextTokenStr, nextTokenOccurrenceCount));
|
||||
}
|
||||
this._endsWithInnerRaw = true;
|
||||
this._indentInnerComments = true;
|
||||
}
|
||||
printInnerComments() {
|
||||
printInnerComments(nextToken) {
|
||||
const node = this._currentNode;
|
||||
const comments = node.innerComments;
|
||||
if (!(comments != null && comments.length)) return;
|
||||
@@ -490,7 +550,7 @@ class Printer {
|
||||
const indent = this._indentInnerComments;
|
||||
const printedCommentsCount = this._printedComments.size;
|
||||
if (indent) this.indent();
|
||||
this._printComments(1, comments, node);
|
||||
this._printComments(1, comments, node, undefined, undefined, nextToken);
|
||||
if (hasSpace && printedCommentsCount !== this._printedComments.size) {
|
||||
this.space();
|
||||
}
|
||||
@@ -499,17 +559,23 @@ class Printer {
|
||||
noIndentInnerCommentsHere() {
|
||||
this._indentInnerComments = false;
|
||||
}
|
||||
printSequence(nodes, parent, opts = {}) {
|
||||
printSequence(nodes, opts = {}) {
|
||||
var _opts$indent;
|
||||
opts.statement = true;
|
||||
(_opts$indent = opts.indent) != null ? _opts$indent : opts.indent = false;
|
||||
this.printJoin(nodes, parent, opts);
|
||||
this.printJoin(nodes, opts);
|
||||
}
|
||||
printList(items, parent, opts = {}) {
|
||||
printList(items, opts = {}) {
|
||||
if (opts.separator == null) {
|
||||
opts.separator = commaSeparator;
|
||||
}
|
||||
this.printJoin(items, parent, opts);
|
||||
this.printJoin(items, opts);
|
||||
}
|
||||
shouldPrintTrailingComma(listEnd) {
|
||||
if (!this.tokenMap) return null;
|
||||
const listEndIndex = this.tokenMap.findLastIndex(this._currentNode, token => this.tokenMap.matchesOriginal(token, listEnd));
|
||||
if (listEndIndex <= 0) return null;
|
||||
return this.tokenMap.matchesOriginal(this._tokens[listEndIndex - 1], ",");
|
||||
}
|
||||
_printNewline(newLine, opts) {
|
||||
const format = this.format;
|
||||
@@ -534,12 +600,18 @@ class Printer {
|
||||
this.newline(1);
|
||||
}
|
||||
}
|
||||
_shouldPrintComment(comment) {
|
||||
_shouldPrintComment(comment, nextToken) {
|
||||
if (comment.ignore) return 0;
|
||||
if (this._printedComments.has(comment)) return 0;
|
||||
if (this._noLineTerminator && HAS_NEWLINE_OR_BlOCK_COMMENT_END.test(comment.value)) {
|
||||
return 2;
|
||||
}
|
||||
if (nextToken && this.tokenMap) {
|
||||
const commentTok = this.tokenMap.find(this._currentNode, token => token.value === comment.value);
|
||||
if (commentTok && commentTok.start > nextToken.start) {
|
||||
return 2;
|
||||
}
|
||||
}
|
||||
this._printedComments.add(comment);
|
||||
if (!this.format.shouldPrintComment(comment.value)) {
|
||||
return 0;
|
||||
@@ -554,19 +626,11 @@ class Printer {
|
||||
this.newline(1);
|
||||
}
|
||||
const lastCharCode = this.getLastChar();
|
||||
if (lastCharCode !== 91 && lastCharCode !== 123) {
|
||||
if (lastCharCode !== 91 && lastCharCode !== 123 && lastCharCode !== 40) {
|
||||
this.space();
|
||||
}
|
||||
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;
|
||||
@@ -590,7 +654,7 @@ class Printer {
|
||||
} else {
|
||||
val = `/*${comment.value}*/`;
|
||||
}
|
||||
if (this.endsWith(47)) this._space();
|
||||
if (this._endsWithDiv) this._space();
|
||||
this.source("start", comment.loc);
|
||||
this._append(val, isBlockComment);
|
||||
if (!isBlockComment && !noLineTerminator) {
|
||||
@@ -600,7 +664,7 @@ class Printer {
|
||||
this.newline(1);
|
||||
}
|
||||
}
|
||||
_printComments(type, comments, node, parent, lineOffset = 0) {
|
||||
_printComments(type, comments, node, parent, lineOffset = 0, nextToken) {
|
||||
const nodeLoc = node.loc;
|
||||
const len = comments.length;
|
||||
let hasLoc = !!nodeLoc;
|
||||
@@ -611,7 +675,7 @@ class Printer {
|
||||
const maybeNewline = this._noLineTerminator ? function () {} : this.newline.bind(this);
|
||||
for (let i = 0; i < len; i++) {
|
||||
const comment = comments[i];
|
||||
const shouldPrint = this._shouldPrintComment(comment);
|
||||
const shouldPrint = this._shouldPrintComment(comment, nextToken);
|
||||
if (shouldPrint === 2) {
|
||||
hasLoc = false;
|
||||
break;
|
||||
@@ -684,9 +748,9 @@ Object.assign(Printer.prototype, generatorFunctions);
|
||||
Printer.prototype.Noop = function Noop() {};
|
||||
}
|
||||
var _default = exports.default = Printer;
|
||||
function commaSeparator() {
|
||||
this.tokenChar(44);
|
||||
this.space();
|
||||
function commaSeparator(occurrenceCount, last) {
|
||||
this.token(",", false, occurrenceCount);
|
||||
if (!last) this.space();
|
||||
}
|
||||
|
||||
//# sourceMappingURL=printer.js.map
|
||||
|
||||
Reference in New Issue
Block a user