UNPKG

@shopify/cli

Version:

A CLI tool to build for the Shopify platform

848 lines (846 loc) • 8.14 MB
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