@shopify/cli
Version:
A CLI tool to build for the Shopify platform
848 lines (846 loc) • 8.14 MB
JavaScript
import {
setNextDeprecationDate
} from "./chunk-CP3BRHWK.js";
import {
ensureAuthenticatedAdmin,
ensureAuthenticatedBusinessPlatform,
logout
} from "./chunk-YF7CDH6L.js";
import {
base_command_default
} from "./chunk-3TBLURBG.js";
import {
fanoutHooks,
requestIdsCollection
} from "./chunk-QJQK26XP.js";
import {
businessPlatformFqdn,
normalizeStoreFqdn,
partnersFqdn
} from "./chunk-FRQN52H3.js";
import {
ClientError,
GraphQLClient,
GraphQLClientError,
abortSignalFromRequestBehaviour,
buildHeaders,
httpsAgent,
nonRandomUUID,
requestMode,
resolveRequestDocument,
retryAwareRequest,
sanitizeURL,
sanitizedHeadersOutput
} from "./chunk-Q76H7OUL.js";
import {
CLI_KIT_VERSION
} from "./chunk-Z2AIGIVT.js";
import {
cacheRetrieveOrRepopulate,
findUpAndReadPackageJson,
getPackageManager,
installNodeModules,
packageManagerFromUserAgent,
readAndParsePackageJson,
timeIntervalToMilliseconds,
writePackageJSON
} from "./chunk-KDFL67TE.js";
import {
AbortError,
BugError,
addPublicMetadata,
ansi_escapes_default,
camelize,
capitalize,
copyFile,
currentProcessIsGlobal,
fileExists,
findPathUp,
formatPackageManagerCommand,
glob,
hasGit,
hyphenate,
isDirectory,
isTerminalInteractive,
linesToColumns,
mkdir,
outputContent,
outputDebug,
outputInfo,
outputToken,
readFile,
removeFile,
renderConfirmationPrompt,
renderFatalError,
renderInfo,
renderSelectPrompt,
renderSuccess,
renderTasks,
renderTextPrompt,
renderWarning,
rmdir,
runWithTimer,
source_default,
stringifyMessage,
writeFile
} from "./chunk-4NC2NVYY.js";
import {
basename,
cwd,
dirname,
extname,
joinPath,
relativePath,
relativizePath,
resolvePath
} from "./chunk-EG6MBBEN.js";
import {
require_lib
} from "./chunk-3FBDJEGD.js";
import {
require_src
} from "./chunk-UMUTXITN.js";
import {
require_source_map_support
} from "./chunk-G5R6YD27.js";
import {
__commonJS,
__require,
__toESM,
init_cjs_shims
} from "./chunk-PKR7KJ6P.js";
// ../../node_modules/.pnpm/prettier@2.8.8/node_modules/prettier/package.json
var require_package = __commonJS({
"../../node_modules/.pnpm/prettier@2.8.8/node_modules/prettier/package.json"(exports2, module2) {
module2.exports = {
name: "prettier",
version: "2.8.8",
description: "Prettier is an opinionated code formatter",
bin: "./bin-prettier.js",
repository: "prettier/prettier",
funding: "https://github.com/prettier/prettier?sponsor=1",
homepage: "https://prettier.io",
author: "James Long",
license: "MIT",
main: "./index.js",
browser: "./standalone.js",
unpkg: "./standalone.js",
engines: {
node: ">=10.13.0"
},
files: [
"*.js",
"esm/*.mjs"
]
};
}
});
// ../../node_modules/.pnpm/prettier@2.8.8/node_modules/prettier/doc.js
var require_doc = __commonJS({
"../../node_modules/.pnpm/prettier@2.8.8/node_modules/prettier/doc.js"(exports2, module2) {
init_cjs_shims();
(function(factory) {
if (typeof exports2 == "object" && typeof module2 == "object")
module2.exports = factory();
else if (typeof define == "function" && define.amd)
define(factory);
else {
var root = typeof globalThis < "u" ? globalThis : typeof global < "u" ? global : typeof self < "u" ? self : this || {};
root.doc = factory();
}
})(function() {
"use strict";
var __getOwnPropNames2 = Object.getOwnPropertyNames, __commonJS3 = (cb, mod) => function() {
return mod || (0, cb[__getOwnPropNames2(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
}, require_doc_js_umd = __commonJS3({
"dist/_doc.js.umd.js"(exports3, module3) {
var __create = Object.create, __defProp2 = Object.defineProperty, __getOwnPropDesc2 = Object.getOwnPropertyDescriptor, __getOwnPropNames22 = Object.getOwnPropertyNames, __getProtoOf = Object.getPrototypeOf, __hasOwnProp2 = Object.prototype.hasOwnProperty, __esm2 = (fn, res) => function() {
return fn && (res = (0, fn[__getOwnPropNames22(fn)[0]])(fn = 0)), res;
}, __commonJS22 = (cb, mod) => function() {
return mod || (0, cb[__getOwnPropNames22(cb)[0]])((mod = {
exports: {}
}).exports, mod), mod.exports;
}, __export2 = (target, all) => {
for (var name in all)
__defProp2(target, name, {
get: all[name],
enumerable: !0
});
}, __copyProps2 = (to, from, except, desc) => {
if (from && typeof from == "object" || typeof from == "function")
for (let key of __getOwnPropNames22(from))
!__hasOwnProp2.call(to, key) && key !== except && __defProp2(to, key, {
get: () => from[key],
enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable
});
return to;
}, __toESM2 = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps2(isNodeMode || !mod || !mod.__esModule ? __defProp2(target, "default", {
value: mod,
enumerable: !0
}) : target, mod)), __toCommonJS2 = (mod) => __copyProps2(__defProp2({}, "__esModule", {
value: !0
}), mod), init_define_process = __esm2({
"<define:process>"() {
}
}), require_doc_builders = __commonJS22({
"src/document/doc-builders.js"(exports22, module22) {
"use strict";
init_define_process();
function concat(parts) {
return {
type: "concat",
parts
};
}
function indent(contents) {
return {
type: "indent",
contents
};
}
function align(widthOrString, contents) {
return {
type: "align",
contents,
n: widthOrString
};
}
function group(contents) {
let opts = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
return {
type: "group",
id: opts.id,
contents,
break: !!opts.shouldBreak,
expandedStates: opts.expandedStates
};
}
function dedentToRoot(contents) {
return align(Number.NEGATIVE_INFINITY, contents);
}
function markAsRoot(contents) {
return align({
type: "root"
}, contents);
}
function dedent(contents) {
return align(-1, contents);
}
function conditionalGroup(states, opts) {
return group(states[0], Object.assign(Object.assign({}, opts), {}, {
expandedStates: states
}));
}
function fill(parts) {
return {
type: "fill",
parts
};
}
function ifBreak(breakContents, flatContents) {
let opts = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
return {
type: "if-break",
breakContents,
flatContents,
groupId: opts.groupId
};
}
function indentIfBreak(contents, opts) {
return {
type: "indent-if-break",
contents,
groupId: opts.groupId,
negate: opts.negate
};
}
function lineSuffix(contents) {
return {
type: "line-suffix",
contents
};
}
var lineSuffixBoundary = {
type: "line-suffix-boundary"
}, breakParent = {
type: "break-parent"
}, trim = {
type: "trim"
}, hardlineWithoutBreakParent = {
type: "line",
hard: !0
}, literallineWithoutBreakParent = {
type: "line",
hard: !0,
literal: !0
}, line = {
type: "line"
}, softline = {
type: "line",
soft: !0
}, hardline = concat([hardlineWithoutBreakParent, breakParent]), literalline = concat([literallineWithoutBreakParent, breakParent]), cursor = {
type: "cursor",
placeholder: Symbol("cursor")
};
function join(sep, arr) {
let res = [];
for (let i = 0; i < arr.length; i++)
i !== 0 && res.push(sep), res.push(arr[i]);
return concat(res);
}
function addAlignmentToDoc(doc, size, tabWidth) {
let aligned = doc;
if (size > 0) {
for (let i = 0; i < Math.floor(size / tabWidth); ++i)
aligned = indent(aligned);
aligned = align(size % tabWidth, aligned), aligned = align(Number.NEGATIVE_INFINITY, aligned);
}
return aligned;
}
function label(label2, contents) {
return {
type: "label",
label: label2,
contents
};
}
module22.exports = {
concat,
join,
line,
softline,
hardline,
literalline,
group,
conditionalGroup,
fill,
lineSuffix,
lineSuffixBoundary,
cursor,
breakParent,
ifBreak,
trim,
indent,
indentIfBreak,
align,
addAlignmentToDoc,
markAsRoot,
dedentToRoot,
dedent,
hardlineWithoutBreakParent,
literallineWithoutBreakParent,
label
};
}
}), require_end_of_line = __commonJS22({
"src/common/end-of-line.js"(exports22, module22) {
"use strict";
init_define_process();
function guessEndOfLine(text) {
let index = text.indexOf("\r");
return index >= 0 ? text.charAt(index + 1) === `
` ? "crlf" : "cr" : "lf";
}
function convertEndOfLineToChars(value) {
switch (value) {
case "cr":
return "\r";
case "crlf":
return `\r
`;
default:
return `
`;
}
}
function countEndOfLineChars(text, eol) {
let regex;
switch (eol) {
case `
`:
regex = /\n/g;
break;
case "\r":
regex = /\r/g;
break;
case `\r
`:
regex = /\r\n/g;
break;
default:
throw new Error(`Unexpected "eol" ${JSON.stringify(eol)}.`);
}
let endOfLines = text.match(regex);
return endOfLines ? endOfLines.length : 0;
}
function normalizeEndOfLine(text) {
return text.replace(/\r\n?/g, `
`);
}
module22.exports = {
guessEndOfLine,
convertEndOfLineToChars,
countEndOfLineChars,
normalizeEndOfLine
};
}
}), require_get_last = __commonJS22({
"src/utils/get-last.js"(exports22, module22) {
"use strict";
init_define_process();
var getLast = (arr) => arr[arr.length - 1];
module22.exports = getLast;
}
});
function ansiRegex() {
let {
onlyFirst = !1
} = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, pattern = ["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)", "(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");
return new RegExp(pattern, onlyFirst ? void 0 : "g");
}
var init_ansi_regex = __esm2({
"node_modules/strip-ansi/node_modules/ansi-regex/index.js"() {
init_define_process();
}
});
function stripAnsi(string) {
if (typeof string != "string")
throw new TypeError(`Expected a \`string\`, got \`${typeof string}\``);
return string.replace(ansiRegex(), "");
}
var init_strip_ansi = __esm2({
"node_modules/strip-ansi/index.js"() {
init_define_process(), init_ansi_regex();
}
});
function isFullwidthCodePoint(codePoint) {
return Number.isInteger(codePoint) ? codePoint >= 4352 && (codePoint <= 4447 || codePoint === 9001 || codePoint === 9002 || 11904 <= codePoint && codePoint <= 12871 && codePoint !== 12351 || 12880 <= codePoint && codePoint <= 19903 || 19968 <= codePoint && codePoint <= 42182 || 43360 <= codePoint && codePoint <= 43388 || 44032 <= codePoint && codePoint <= 55203 || 63744 <= codePoint && codePoint <= 64255 || 65040 <= codePoint && codePoint <= 65049 || 65072 <= codePoint && codePoint <= 65131 || 65281 <= codePoint && codePoint <= 65376 || 65504 <= codePoint && codePoint <= 65510 || 110592 <= codePoint && codePoint <= 110593 || 127488 <= codePoint && codePoint <= 127569 || 131072 <= codePoint && codePoint <= 262141) : !1;
}
var init_is_fullwidth_code_point = __esm2({
"node_modules/is-fullwidth-code-point/index.js"() {
init_define_process();
}
}), require_emoji_regex = __commonJS22({
"node_modules/emoji-regex/index.js"(exports22, module22) {
"use strict";
init_define_process(), module22.exports = function() {
return /\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|(?:\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFC-\uDFFF])|\uD83D\uDC68(?:\uD83C\uDFFB(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|[\u2695\u2696\u2708]\uFE0F|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))?|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])\uFE0F|\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC)?|(?:\uD83D\uDC69(?:\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC69(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83E\uDDD1(?:\u200D(?:\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDE36\u200D\uD83C\uDF2B|\uD83C\uDFF3\uFE0F\u200D\u26A7|\uD83D\uDC3B\u200D\u2744|(?:(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\uD83C\uDFF4\u200D\u2620|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])\u200D[\u2640\u2642]|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u3030\u303D\u3297\u3299]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]|\uD83D[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3])\uFE0F|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDE35\u200D\uD83D\uDCAB|\uD83D\uDE2E\u200D\uD83D\uDCA8|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83E\uDDD1(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83D\uDC69(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC08\u200D\u2B1B|\u2764\uFE0F\u200D(?:\uD83D\uDD25|\uD83E\uDE79)|\uD83D\uDC41\uFE0F|\uD83C\uDFF3\uFE0F|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|[#\*0-9]\uFE0F\u20E3|\u2764\uFE0F|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF4|(?:[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270C\u270D]|\uD83D[\uDD74\uDD90])(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC08\uDC15\uDC3B\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE2E\uDE35\uDE36\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5]|\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD]|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0D\uDD0E\uDD10-\uDD17\uDD1D\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78\uDD7A-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCB\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6]|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDED7\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDD77\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g;
};
}
}), string_width_exports = {};
__export2(string_width_exports, {
default: () => stringWidth
});
function stringWidth(string) {
if (typeof string != "string" || string.length === 0 || (string = stripAnsi(string), string.length === 0))
return 0;
string = string.replace((0, import_emoji_regex.default)(), " ");
let width = 0;
for (let index = 0; index < string.length; index++) {
let codePoint = string.codePointAt(index);
codePoint <= 31 || codePoint >= 127 && codePoint <= 159 || codePoint >= 768 && codePoint <= 879 || (codePoint > 65535 && index++, width += isFullwidthCodePoint(codePoint) ? 2 : 1);
}
return width;
}
var import_emoji_regex, init_string_width = __esm2({
"node_modules/string-width/index.js"() {
init_define_process(), init_strip_ansi(), init_is_fullwidth_code_point(), import_emoji_regex = __toESM2(require_emoji_regex());
}
}), require_get_string_width = __commonJS22({
"src/utils/get-string-width.js"(exports22, module22) {
"use strict";
init_define_process();
var stringWidth2 = (init_string_width(), __toCommonJS2(string_width_exports)).default, notAsciiRegex = /[^\x20-\x7F]/;
function getStringWidth(text) {
return text ? notAsciiRegex.test(text) ? stringWidth2(text) : text.length : 0;
}
module22.exports = getStringWidth;
}
}), require_doc_utils = __commonJS22({
"src/document/doc-utils.js"(exports22, module22) {
"use strict";
init_define_process();
var getLast = require_get_last(), {
literalline,
join
} = require_doc_builders(), isConcat = (doc) => Array.isArray(doc) || doc && doc.type === "concat", getDocParts = (doc) => {
if (Array.isArray(doc))
return doc;
if (doc.type !== "concat" && doc.type !== "fill")
throw new Error("Expect doc type to be `concat` or `fill`.");
return doc.parts;
}, traverseDocOnExitStackMarker = {};
function traverseDoc(doc, onEnter, onExit, shouldTraverseConditionalGroups) {
let docsStack = [doc];
for (; docsStack.length > 0; ) {
let doc2 = docsStack.pop();
if (doc2 === traverseDocOnExitStackMarker) {
onExit(docsStack.pop());
continue;
}
if (onExit && docsStack.push(doc2, traverseDocOnExitStackMarker), !onEnter || onEnter(doc2) !== !1)
if (isConcat(doc2) || doc2.type === "fill") {
let parts = getDocParts(doc2);
for (let ic = parts.length, i = ic - 1; i >= 0; --i)
docsStack.push(parts[i]);
} else if (doc2.type === "if-break")
doc2.flatContents && docsStack.push(doc2.flatContents), doc2.breakContents && docsStack.push(doc2.breakContents);
else if (doc2.type === "group" && doc2.expandedStates)
if (shouldTraverseConditionalGroups)
for (let ic = doc2.expandedStates.length, i = ic - 1; i >= 0; --i)
docsStack.push(doc2.expandedStates[i]);
else
docsStack.push(doc2.contents);
else doc2.contents && docsStack.push(doc2.contents);
}
}
function mapDoc(doc, cb) {
let mapped = /* @__PURE__ */ new Map();
return rec(doc);
function rec(doc2) {
if (mapped.has(doc2))
return mapped.get(doc2);
let result = process2(doc2);
return mapped.set(doc2, result), result;
}
function process2(doc2) {
if (Array.isArray(doc2))
return cb(doc2.map(rec));
if (doc2.type === "concat" || doc2.type === "fill") {
let parts = doc2.parts.map(rec);
return cb(Object.assign(Object.assign({}, doc2), {}, {
parts
}));
}
if (doc2.type === "if-break") {
let breakContents = doc2.breakContents && rec(doc2.breakContents), flatContents = doc2.flatContents && rec(doc2.flatContents);
return cb(Object.assign(Object.assign({}, doc2), {}, {
breakContents,
flatContents
}));
}
if (doc2.type === "group" && doc2.expandedStates) {
let expandedStates = doc2.expandedStates.map(rec), contents = expandedStates[0];
return cb(Object.assign(Object.assign({}, doc2), {}, {
contents,
expandedStates
}));
}
if (doc2.contents) {
let contents = rec(doc2.contents);
return cb(Object.assign(Object.assign({}, doc2), {}, {
contents
}));
}
return cb(doc2);
}
}
function findInDoc(doc, fn, defaultValue) {
let result = defaultValue, hasStopped = !1;
function findInDocOnEnterFn(doc2) {
let maybeResult = fn(doc2);
if (maybeResult !== void 0 && (hasStopped = !0, result = maybeResult), hasStopped)
return !1;
}
return traverseDoc(doc, findInDocOnEnterFn), result;
}
function willBreakFn(doc) {
if (doc.type === "group" && doc.break || doc.type === "line" && doc.hard || doc.type === "break-parent")
return !0;
}
function willBreak(doc) {
return findInDoc(doc, willBreakFn, !1);
}
function breakParentGroup(groupStack) {
if (groupStack.length > 0) {
let parentGroup = getLast(groupStack);
!parentGroup.expandedStates && !parentGroup.break && (parentGroup.break = "propagated");
}
return null;
}
function propagateBreaks(doc) {
let alreadyVisitedSet = /* @__PURE__ */ new Set(), groupStack = [];
function propagateBreaksOnEnterFn(doc2) {
if (doc2.type === "break-parent" && breakParentGroup(groupStack), doc2.type === "group") {
if (groupStack.push(doc2), alreadyVisitedSet.has(doc2))
return !1;
alreadyVisitedSet.add(doc2);
}
}
function propagateBreaksOnExitFn(doc2) {
doc2.type === "group" && groupStack.pop().break && breakParentGroup(groupStack);
}
traverseDoc(doc, propagateBreaksOnEnterFn, propagateBreaksOnExitFn, !0);
}
function removeLinesFn(doc) {
return doc.type === "line" && !doc.hard ? doc.soft ? "" : " " : doc.type === "if-break" ? doc.flatContents || "" : doc;
}
function removeLines(doc) {
return mapDoc(doc, removeLinesFn);
}
var isHardline = (doc, nextDoc) => doc && doc.type === "line" && doc.hard && nextDoc && nextDoc.type === "break-parent";
function stripDocTrailingHardlineFromDoc(doc) {
if (!doc)
return doc;
if (isConcat(doc) || doc.type === "fill") {
let parts = getDocParts(doc);
for (; parts.length > 1 && isHardline(...parts.slice(-2)); )
parts.length -= 2;
if (parts.length > 0) {
let lastPart = stripDocTrailingHardlineFromDoc(getLast(parts));
parts[parts.length - 1] = lastPart;
}
return Array.isArray(doc) ? parts : Object.assign(Object.assign({}, doc), {}, {
parts
});
}
switch (doc.type) {
case "align":
case "indent":
case "indent-if-break":
case "group":
case "line-suffix":
case "label": {
let contents = stripDocTrailingHardlineFromDoc(doc.contents);
return Object.assign(Object.assign({}, doc), {}, {
contents
});
}
case "if-break": {
let breakContents = stripDocTrailingHardlineFromDoc(doc.breakContents), flatContents = stripDocTrailingHardlineFromDoc(doc.flatContents);
return Object.assign(Object.assign({}, doc), {}, {
breakContents,
flatContents
});
}
}
return doc;
}
function stripTrailingHardline(doc) {
return stripDocTrailingHardlineFromDoc(cleanDoc(doc));
}
function cleanDocFn(doc) {
switch (doc.type) {
case "fill":
if (doc.parts.every((part) => part === ""))
return "";
break;
case "group":
if (!doc.contents && !doc.id && !doc.break && !doc.expandedStates)
return "";
if (doc.contents.type === "group" && doc.contents.id === doc.id && doc.contents.break === doc.break && doc.contents.expandedStates === doc.expandedStates)
return doc.contents;
break;
case "align":
case "indent":
case "indent-if-break":
case "line-suffix":
if (!doc.contents)
return "";
break;
case "if-break":
if (!doc.flatContents && !doc.breakContents)
return "";
break;
}
if (!isConcat(doc))
return doc;
let parts = [];
for (let part of getDocParts(doc)) {
if (!part)
continue;
let [currentPart, ...restParts] = isConcat(part) ? getDocParts(part) : [part];
typeof currentPart == "string" && typeof getLast(parts) == "string" ? parts[parts.length - 1] += currentPart : parts.push(currentPart), parts.push(...restParts);
}
return parts.length === 0 ? "" : parts.length === 1 ? parts[0] : Array.isArray(doc) ? parts : Object.assign(Object.assign({}, doc), {}, {
parts
});
}
function cleanDoc(doc) {
return mapDoc(doc, (currentDoc) => cleanDocFn(currentDoc));
}
function normalizeParts(parts) {
let newParts = [], restParts = parts.filter(Boolean);
for (; restParts.length > 0; ) {
let part = restParts.shift();
if (part) {
if (isConcat(part)) {
restParts.unshift(...getDocParts(part));
continue;
}
if (newParts.length > 0 && typeof getLast(newParts) == "string" && typeof part == "string") {
newParts[newParts.length - 1] += part;
continue;
}
newParts.push(part);
}
}
return newParts;
}
function normalizeDoc(doc) {
return mapDoc(doc, (currentDoc) => Array.isArray(currentDoc) ? normalizeParts(currentDoc) : currentDoc.parts ? Object.assign(Object.assign({}, currentDoc), {}, {
parts: normalizeParts(currentDoc.parts)
}) : currentDoc);
}
function replaceEndOfLine(doc) {
return mapDoc(doc, (currentDoc) => typeof currentDoc == "string" && currentDoc.includes(`
`) ? replaceTextEndOfLine(currentDoc) : currentDoc);
}
function replaceTextEndOfLine(text) {
let replacement = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : literalline;
return join(replacement, text.split(`
`)).parts;
}
function canBreakFn(doc) {
if (doc.type === "line")
return !0;
}
function canBreak(doc) {
return findInDoc(doc, canBreakFn, !1);
}
module22.exports = {
isConcat,
getDocParts,
willBreak,
traverseDoc,
findInDoc,
mapDoc,
propagateBreaks,
removeLines,
stripTrailingHardline,
normalizeParts,
normalizeDoc,
cleanDoc,
replaceTextEndOfLine,
replaceEndOfLine,
canBreak
};
}
}), require_doc_printer = __commonJS22({
"src/document/doc-printer.js"(exports22, module22) {
"use strict";
init_define_process();
var {
convertEndOfLineToChars
} = require_end_of_line(), getLast = require_get_last(), getStringWidth = require_get_string_width(), {
fill,
cursor,
indent
} = require_doc_builders(), {
isConcat,
getDocParts
} = require_doc_utils(), groupModeMap, MODE_BREAK = 1, MODE_FLAT = 2;
function rootIndent() {
return {
value: "",
length: 0,
queue: []
};
}
function makeIndent(ind, options2) {
return generateInd(ind, {
type: "indent"
}, options2);
}
function makeAlign(indent2, widthOrDoc, options2) {
return widthOrDoc === Number.NEGATIVE_INFINITY ? indent2.root || rootIndent() : widthOrDoc < 0 ? generateInd(indent2, {
type: "dedent"
}, options2) : widthOrDoc ? widthOrDoc.type === "root" ? Object.assign(Object.assign({}, indent2), {}, {
root: indent2
}) : generateInd(indent2, {
type: typeof widthOrDoc == "string" ? "stringAlign" : "numberAlign",
n: widthOrDoc
}, options2) : indent2;
}
function generateInd(ind, newPart, options2) {
let queue = newPart.type === "dedent" ? ind.queue.slice(0, -1) : [...ind.queue, newPart], value = "", length = 0, lastTabs = 0, lastSpaces = 0;
for (let part of queue)
switch (part.type) {
case "indent":
flush(), options2.useTabs ? addTabs(1) : addSpaces(options2.tabWidth);
break;
case "stringAlign":
flush(), value += part.n, length += part.n.length;
break;
case "numberAlign":
lastTabs += 1, lastSpaces += part.n;
break;
default:
throw new Error(`Unexpected type '${part.type}'`);
}
return flushSpaces(), Object.assign(Object.assign({}, ind), {}, {
value,
length,
queue
});
function addTabs(count) {
value += " ".repeat(count), length += options2.tabWidth * count;
}
function addSpaces(count) {
value += " ".repeat(count), length += count;
}
function flush() {
options2.useTabs ? flushTabs() : flushSpaces();
}
function flushTabs() {
lastTabs > 0 && addTabs(lastTabs), resetLast();
}
function flushSpaces() {
lastSpaces > 0 && addSpaces(lastSpaces), resetLast();
}
function resetLast() {
lastTabs = 0, lastSpaces = 0;
}
}
function trim(out) {
if (out.length === 0)
return 0;
let trimCount = 0;
for (; out.length > 0 && typeof getLast(out) == "string" && /^[\t ]*$/.test(getLast(out)); )
trimCount += out.pop().length;
if (out.length > 0 && typeof getLast(out) == "string") {
let trimmed2 = getLast(out).replace(/[\t ]*$/, "");
trimCount += getLast(out).length - trimmed2.length, out[out.length - 1] = trimmed2;
}
return trimCount;
}
function fits(next, restCommands, width, hasLineSuffix, mustBeFlat) {
let restIdx = restCommands.length, cmds = [next], out = [];
for (; width >= 0; ) {
if (cmds.length === 0) {
if (restIdx === 0)
return !0;
cmds.push(restCommands[--restIdx]);
continue;
}
let {
mode,
doc
} = cmds.pop();
if (typeof doc == "string")
out.push(doc), width -= getStringWidth(doc);
else if (isConcat(doc) || doc.type === "fill") {
let parts = getDocParts(doc);
for (let i = parts.length - 1; i >= 0; i--)
cmds.push({
mode,
doc: parts[i]
});
} else
switch (doc.type) {
case "indent":
case "align":
case "indent-if-break":
case "label":
cmds.push({
mode,
doc: doc.contents
});
break;
case "trim":
width += trim(out);
break;
case "group": {
if (mustBeFlat && doc.break)
return !1;
let groupMode = doc.brea