prettier 4.0.0-alpha.10 → 4.0.0-alpha.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/doc.mjs CHANGED
@@ -44,6 +44,18 @@ var VALID_OBJECT_DOC_TYPES = /* @__PURE__ */ new Set([
44
44
  DOC_TYPE_BREAK_PARENT
45
45
  ]);
46
46
 
47
+ // scripts/build/shims/at.js
48
+ var at = (isOptionalObject, object, index) => {
49
+ if (isOptionalObject && (object === void 0 || object === null)) {
50
+ return;
51
+ }
52
+ if (Array.isArray(object) || typeof object === "string") {
53
+ return object[index < 0 ? object.length + index : index];
54
+ }
55
+ return object.at(index);
56
+ };
57
+ var at_default = at;
58
+
47
59
  // src/document/utils/get-doc-type.js
48
60
  function getDocType(doc) {
49
61
  if (typeof doc === "string") {
@@ -154,219 +166,6 @@ function traverseDoc(doc, onEnter, onExit, shouldTraverseConditionalGroups) {
154
166
  }
155
167
  var traverse_doc_default = traverseDoc;
156
168
 
157
- // src/document/utils/assert-doc.js
158
- var noop = () => {
159
- };
160
- var assertDoc = true ? noop : function(doc) {
161
- traverse_doc_default(doc, (doc2) => {
162
- if (checked.has(doc2)) {
163
- return false;
164
- }
165
- if (typeof doc2 !== "string") {
166
- checked.add(doc2);
167
- }
168
- });
169
- };
170
- var assertDocArray = true ? noop : function(docs, optional = false) {
171
- if (optional && !docs) {
172
- return;
173
- }
174
- if (!Array.isArray(docs)) {
175
- throw new TypeError("Unexpected doc array.");
176
- }
177
- for (const doc of docs) {
178
- assertDoc(doc);
179
- }
180
- };
181
-
182
- // src/document/builders.js
183
- function indent(contents) {
184
- assertDoc(contents);
185
- return { type: DOC_TYPE_INDENT, contents };
186
- }
187
- function align(widthOrString, contents) {
188
- assertDoc(contents);
189
- return { type: DOC_TYPE_ALIGN, contents, n: widthOrString };
190
- }
191
- function group(contents, opts = {}) {
192
- assertDoc(contents);
193
- assertDocArray(
194
- opts.expandedStates,
195
- /* optional */
196
- true
197
- );
198
- return {
199
- type: DOC_TYPE_GROUP,
200
- id: opts.id,
201
- contents,
202
- break: Boolean(opts.shouldBreak),
203
- expandedStates: opts.expandedStates
204
- };
205
- }
206
- function dedentToRoot(contents) {
207
- return align(Number.NEGATIVE_INFINITY, contents);
208
- }
209
- function markAsRoot(contents) {
210
- return align({ type: "root" }, contents);
211
- }
212
- function dedent(contents) {
213
- return align(-1, contents);
214
- }
215
- function conditionalGroup(states, opts) {
216
- return group(states[0], { ...opts, expandedStates: states });
217
- }
218
- function fill(parts) {
219
- assertDocArray(parts);
220
- return { type: DOC_TYPE_FILL, parts };
221
- }
222
- function ifBreak(breakContents, flatContents = "", opts = {}) {
223
- assertDoc(breakContents);
224
- if (flatContents !== "") {
225
- assertDoc(flatContents);
226
- }
227
- return {
228
- type: DOC_TYPE_IF_BREAK,
229
- breakContents,
230
- flatContents,
231
- groupId: opts.groupId
232
- };
233
- }
234
- function indentIfBreak(contents, opts) {
235
- assertDoc(contents);
236
- return {
237
- type: DOC_TYPE_INDENT_IF_BREAK,
238
- contents,
239
- groupId: opts.groupId,
240
- negate: opts.negate
241
- };
242
- }
243
- function lineSuffix(contents) {
244
- assertDoc(contents);
245
- return { type: DOC_TYPE_LINE_SUFFIX, contents };
246
- }
247
- var lineSuffixBoundary = { type: DOC_TYPE_LINE_SUFFIX_BOUNDARY };
248
- var breakParent = { type: DOC_TYPE_BREAK_PARENT };
249
- var trim = { type: DOC_TYPE_TRIM };
250
- var hardlineWithoutBreakParent = { type: DOC_TYPE_LINE, hard: true };
251
- var literallineWithoutBreakParent = {
252
- type: DOC_TYPE_LINE,
253
- hard: true,
254
- literal: true
255
- };
256
- var line = { type: DOC_TYPE_LINE };
257
- var softline = { type: DOC_TYPE_LINE, soft: true };
258
- var hardline = [hardlineWithoutBreakParent, breakParent];
259
- var literalline = [literallineWithoutBreakParent, breakParent];
260
- var cursor = { type: DOC_TYPE_CURSOR };
261
- function join(separator, docs) {
262
- assertDoc(separator);
263
- assertDocArray(docs);
264
- const parts = [];
265
- for (let i = 0; i < docs.length; i++) {
266
- if (i !== 0) {
267
- parts.push(separator);
268
- }
269
- parts.push(docs[i]);
270
- }
271
- return parts;
272
- }
273
- function addAlignmentToDoc(doc, size, tabWidth) {
274
- assertDoc(doc);
275
- let aligned = doc;
276
- if (size > 0) {
277
- for (let i = 0; i < Math.floor(size / tabWidth); ++i) {
278
- aligned = indent(aligned);
279
- }
280
- aligned = align(size % tabWidth, aligned);
281
- aligned = align(Number.NEGATIVE_INFINITY, aligned);
282
- }
283
- return aligned;
284
- }
285
- function label(label2, contents) {
286
- assertDoc(contents);
287
- return label2 ? { type: DOC_TYPE_LABEL, label: label2, contents } : contents;
288
- }
289
-
290
- // scripts/build/shims/at.js
291
- var at = (isOptionalObject, object, index) => {
292
- if (isOptionalObject && (object === void 0 || object === null)) {
293
- return;
294
- }
295
- if (Array.isArray(object) || typeof object === "string") {
296
- return object[index < 0 ? object.length + index : index];
297
- }
298
- return object.at(index);
299
- };
300
- var at_default = at;
301
-
302
- // scripts/build/shims/string-replace-all.js
303
- var stringReplaceAll = (isOptionalObject, original, pattern, replacement) => {
304
- if (isOptionalObject && (original === void 0 || original === null)) {
305
- return;
306
- }
307
- if (original.replaceAll) {
308
- return original.replaceAll(pattern, replacement);
309
- }
310
- if (pattern.global) {
311
- return original.replace(pattern, replacement);
312
- }
313
- return original.split(pattern).join(replacement);
314
- };
315
- var string_replace_all_default = stringReplaceAll;
316
-
317
- // src/common/end-of-line.js
318
- function convertEndOfLineToChars(value) {
319
- switch (value) {
320
- case "cr":
321
- return "\r";
322
- case "crlf":
323
- return "\r\n";
324
- default:
325
- return "\n";
326
- }
327
- }
328
-
329
- // node_modules/emoji-regex/index.mjs
330
- var emoji_regex_default = () => {
331
- return /[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26D3\uFE0F?(?:\u200D\uD83D\uDCA5)?|\u26F9(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF43\uDF45-\uDF4A\uDF4C-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDF44(?:\u200D\uD83D\uDFEB)?|\uDF4B(?:\u200D\uD83D\uDFE9)?|\uDFC3(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\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?|[\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](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4\uDEB5](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\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-\uDE41\uDE43\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC08(?:\u200D\u2B1B)?|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC26(?:\u200D(?:\u2B1B|\uD83D\uDD25))?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE])))?))?|\uDC6F(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDD75(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?|\uDE42(?:\u200D[\u2194\u2195]\uFE0F?)?|\uDEB6(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE89\uDE8F-\uDEC2\uDEC6\uDECE-\uDEDC\uDEDF-\uDEE9]|\uDD3C(?:\u200D[\u2640\u2642]\uFE0F?|\uD83C[\uDFFB-\uDFFF])?|\uDDCE(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1|\uDDD1\u200D\uD83E\uDDD2(?:\u200D\uD83E\uDDD2)?|\uDDD2(?:\u200D\uD83E\uDDD2)?))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g;
332
- };
333
-
334
- // node_modules/get-east-asian-width/lookup.js
335
- function isFullWidth(x) {
336
- return x === 12288 || x >= 65281 && x <= 65376 || x >= 65504 && x <= 65510;
337
- }
338
- function isWide(x) {
339
- return x >= 4352 && x <= 4447 || x === 8986 || x === 8987 || x === 9001 || x === 9002 || x >= 9193 && x <= 9196 || x === 9200 || x === 9203 || x === 9725 || x === 9726 || x === 9748 || x === 9749 || x >= 9800 && x <= 9811 || x === 9855 || x === 9875 || x === 9889 || x === 9898 || x === 9899 || x === 9917 || x === 9918 || x === 9924 || x === 9925 || x === 9934 || x === 9940 || x === 9962 || x === 9970 || x === 9971 || x === 9973 || x === 9978 || x === 9981 || x === 9989 || x === 9994 || x === 9995 || x === 10024 || x === 10060 || x === 10062 || x >= 10067 && x <= 10069 || x === 10071 || x >= 10133 && x <= 10135 || x === 10160 || x === 10175 || x === 11035 || x === 11036 || x === 11088 || x === 11093 || x >= 11904 && x <= 11929 || x >= 11931 && x <= 12019 || x >= 12032 && x <= 12245 || x >= 12272 && x <= 12287 || x >= 12289 && x <= 12350 || x >= 12353 && x <= 12438 || x >= 12441 && x <= 12543 || x >= 12549 && x <= 12591 || x >= 12593 && x <= 12686 || x >= 12688 && x <= 12771 || x >= 12783 && x <= 12830 || x >= 12832 && x <= 12871 || x >= 12880 && x <= 19903 || x >= 19968 && x <= 42124 || x >= 42128 && x <= 42182 || x >= 43360 && x <= 43388 || x >= 44032 && x <= 55203 || x >= 63744 && x <= 64255 || x >= 65040 && x <= 65049 || x >= 65072 && x <= 65106 || x >= 65108 && x <= 65126 || x >= 65128 && x <= 65131 || x >= 94176 && x <= 94180 || x === 94192 || x === 94193 || x >= 94208 && x <= 100343 || x >= 100352 && x <= 101589 || x >= 101632 && x <= 101640 || x >= 110576 && x <= 110579 || x >= 110581 && x <= 110587 || x === 110589 || x === 110590 || x >= 110592 && x <= 110882 || x === 110898 || x >= 110928 && x <= 110930 || x === 110933 || x >= 110948 && x <= 110951 || x >= 110960 && x <= 111355 || x === 126980 || x === 127183 || x === 127374 || x >= 127377 && x <= 127386 || x >= 127488 && x <= 127490 || x >= 127504 && x <= 127547 || x >= 127552 && x <= 127560 || x === 127568 || x === 127569 || x >= 127584 && x <= 127589 || x >= 127744 && x <= 127776 || x >= 127789 && x <= 127797 || x >= 127799 && x <= 127868 || x >= 127870 && x <= 127891 || x >= 127904 && x <= 127946 || x >= 127951 && x <= 127955 || x >= 127968 && x <= 127984 || x === 127988 || x >= 127992 && x <= 128062 || x === 128064 || x >= 128066 && x <= 128252 || x >= 128255 && x <= 128317 || x >= 128331 && x <= 128334 || x >= 128336 && x <= 128359 || x === 128378 || x === 128405 || x === 128406 || x === 128420 || x >= 128507 && x <= 128591 || x >= 128640 && x <= 128709 || x === 128716 || x >= 128720 && x <= 128722 || x >= 128725 && x <= 128727 || x >= 128732 && x <= 128735 || x === 128747 || x === 128748 || x >= 128756 && x <= 128764 || x >= 128992 && x <= 129003 || x === 129008 || x >= 129292 && x <= 129338 || x >= 129340 && x <= 129349 || x >= 129351 && x <= 129535 || x >= 129648 && x <= 129660 || x >= 129664 && x <= 129672 || x >= 129680 && x <= 129725 || x >= 129727 && x <= 129733 || x >= 129742 && x <= 129755 || x >= 129760 && x <= 129768 || x >= 129776 && x <= 129784 || x >= 131072 && x <= 196605 || x >= 196608 && x <= 262141;
340
- }
341
-
342
- // node_modules/get-east-asian-width/index.js
343
- var _isNarrowWidth = (codePoint) => !(isFullWidth(codePoint) || isWide(codePoint));
344
-
345
- // src/utils/get-string-width.js
346
- var notAsciiRegex = /[^\x20-\x7F]/u;
347
- function getStringWidth(text) {
348
- if (!text) {
349
- return 0;
350
- }
351
- if (!notAsciiRegex.test(text)) {
352
- return text.length;
353
- }
354
- text = text.replace(emoji_regex_default(), " ");
355
- let width = 0;
356
- for (const character of text) {
357
- const codePoint = character.codePointAt(0);
358
- if (codePoint <= 31 || codePoint >= 127 && codePoint <= 159) {
359
- continue;
360
- }
361
- if (codePoint >= 768 && codePoint <= 879) {
362
- continue;
363
- }
364
- width += _isNarrowWidth(codePoint) ? 1 : 2;
365
- }
366
- return width;
367
- }
368
- var get_string_width_default = getStringWidth;
369
-
370
169
  // src/document/utils.js
371
170
  function mapDoc(doc, cb) {
372
171
  if (typeof doc === "string") {
@@ -387,10 +186,7 @@ function mapDoc(doc, cb) {
387
186
  case DOC_TYPE_ARRAY:
388
187
  return cb(doc2.map(rec));
389
188
  case DOC_TYPE_FILL:
390
- return cb({
391
- ...doc2,
392
- parts: doc2.parts.map(rec)
393
- });
189
+ return cb({ ...doc2, parts: doc2.parts.map(rec) });
394
190
  case DOC_TYPE_IF_BREAK:
395
191
  return cb({
396
192
  ...doc2,
@@ -398,31 +194,21 @@ function mapDoc(doc, cb) {
398
194
  flatContents: rec(doc2.flatContents)
399
195
  });
400
196
  case DOC_TYPE_GROUP: {
401
- let {
402
- expandedStates,
403
- contents
404
- } = doc2;
197
+ let { expandedStates, contents } = doc2;
405
198
  if (expandedStates) {
406
199
  expandedStates = expandedStates.map(rec);
407
200
  contents = expandedStates[0];
408
201
  } else {
409
202
  contents = rec(contents);
410
203
  }
411
- return cb({
412
- ...doc2,
413
- contents,
414
- expandedStates
415
- });
204
+ return cb({ ...doc2, contents, expandedStates });
416
205
  }
417
206
  case DOC_TYPE_ALIGN:
418
207
  case DOC_TYPE_INDENT:
419
208
  case DOC_TYPE_INDENT_IF_BREAK:
420
209
  case DOC_TYPE_LABEL:
421
210
  case DOC_TYPE_LINE_SUFFIX:
422
- return cb({
423
- ...doc2,
424
- contents: rec(doc2.contents)
425
- });
211
+ return cb({ ...doc2, contents: rec(doc2.contents) });
426
212
  case DOC_TYPE_STRING:
427
213
  case DOC_TYPE_CURSOR:
428
214
  case DOC_TYPE_TRIM:
@@ -556,10 +342,7 @@ function stripTrailingHardlineFromDoc(doc) {
556
342
  case DOC_TYPE_LINE_SUFFIX:
557
343
  case DOC_TYPE_LABEL: {
558
344
  const contents = stripTrailingHardlineFromDoc(doc.contents);
559
- return {
560
- ...doc,
561
- contents
562
- };
345
+ return { ...doc, contents };
563
346
  }
564
347
  case DOC_TYPE_IF_BREAK:
565
348
  return {
@@ -568,10 +351,7 @@ function stripTrailingHardlineFromDoc(doc) {
568
351
  flatContents: stripTrailingHardlineFromDoc(doc.flatContents)
569
352
  };
570
353
  case DOC_TYPE_FILL:
571
- return {
572
- ...doc,
573
- parts: stripTrailingHardlineFromParts(doc.parts)
574
- };
354
+ return { ...doc, parts: stripTrailingHardlineFromParts(doc.parts) };
575
355
  case DOC_TYPE_ARRAY:
576
356
  return stripTrailingHardlineFromParts(doc);
577
357
  case DOC_TYPE_STRING:
@@ -663,7 +443,10 @@ function cleanDoc(doc) {
663
443
  return mapDoc(doc, (currentDoc) => cleanDocFn(currentDoc));
664
444
  }
665
445
  function replaceEndOfLine(doc, replacement = literalline) {
666
- return mapDoc(doc, (currentDoc) => typeof currentDoc === "string" ? join(replacement, currentDoc.split("\n")) : currentDoc);
446
+ return mapDoc(
447
+ doc,
448
+ (currentDoc) => typeof currentDoc === "string" ? join(replacement, currentDoc.split("\n")) : currentDoc
449
+ );
667
450
  }
668
451
  function canBreakFn(doc) {
669
452
  if (doc.type === DOC_TYPE_LINE) {
@@ -674,46 +457,257 @@ function canBreak(doc) {
674
457
  return findInDoc(doc, canBreakFn, false);
675
458
  }
676
459
 
460
+ // src/document/utils/assert-doc.js
461
+ var noop = () => {
462
+ };
463
+ var assertDoc = true ? noop : function(doc) {
464
+ traverse_doc_default(doc, (doc2) => {
465
+ if (checked.has(doc2)) {
466
+ return false;
467
+ }
468
+ if (typeof doc2 !== "string") {
469
+ checked.add(doc2);
470
+ }
471
+ });
472
+ };
473
+ var assertDocArray = true ? noop : function(docs, optional = false) {
474
+ if (optional && !docs) {
475
+ return;
476
+ }
477
+ if (!Array.isArray(docs)) {
478
+ throw new TypeError("Unexpected doc array.");
479
+ }
480
+ for (const doc of docs) {
481
+ assertDoc(doc);
482
+ }
483
+ };
484
+ var assertDocFillParts = true ? noop : (
485
+ /**
486
+ * @param {Doc[]} parts
487
+ */
488
+ function(parts) {
489
+ assertDocArray(parts);
490
+ if (parts.length > 1 && isEmptyDoc(at_default(
491
+ /* isOptionalObject */
492
+ false,
493
+ parts,
494
+ -1
495
+ ))) {
496
+ parts = parts.slice(0, -1);
497
+ }
498
+ for (const [i, doc] of parts.entries()) {
499
+ if (i % 2 === 1 && !isValidSeparator(doc)) {
500
+ const type = get_doc_type_default(doc);
501
+ throw new Error(
502
+ `Unexpected non-line-break doc at ${i}. Doc type is ${type}.`
503
+ );
504
+ }
505
+ }
506
+ }
507
+ );
508
+
509
+ // src/document/builders.js
510
+ function indent(contents) {
511
+ assertDoc(contents);
512
+ return { type: DOC_TYPE_INDENT, contents };
513
+ }
514
+ function align(widthOrString, contents) {
515
+ assertDoc(contents);
516
+ return { type: DOC_TYPE_ALIGN, contents, n: widthOrString };
517
+ }
518
+ function group(contents, opts = {}) {
519
+ assertDoc(contents);
520
+ assertDocArray(
521
+ opts.expandedStates,
522
+ /* optional */
523
+ true
524
+ );
525
+ return {
526
+ type: DOC_TYPE_GROUP,
527
+ id: opts.id,
528
+ contents,
529
+ break: Boolean(opts.shouldBreak),
530
+ expandedStates: opts.expandedStates
531
+ };
532
+ }
533
+ function dedentToRoot(contents) {
534
+ return align(Number.NEGATIVE_INFINITY, contents);
535
+ }
536
+ function markAsRoot(contents) {
537
+ return align({ type: "root" }, contents);
538
+ }
539
+ function dedent(contents) {
540
+ return align(-1, contents);
541
+ }
542
+ function conditionalGroup(states, opts) {
543
+ return group(states[0], { ...opts, expandedStates: states });
544
+ }
545
+ function fill(parts) {
546
+ assertDocFillParts(parts);
547
+ return { type: DOC_TYPE_FILL, parts };
548
+ }
549
+ function ifBreak(breakContents, flatContents = "", opts = {}) {
550
+ assertDoc(breakContents);
551
+ if (flatContents !== "") {
552
+ assertDoc(flatContents);
553
+ }
554
+ return {
555
+ type: DOC_TYPE_IF_BREAK,
556
+ breakContents,
557
+ flatContents,
558
+ groupId: opts.groupId
559
+ };
560
+ }
561
+ function indentIfBreak(contents, opts) {
562
+ assertDoc(contents);
563
+ return {
564
+ type: DOC_TYPE_INDENT_IF_BREAK,
565
+ contents,
566
+ groupId: opts.groupId,
567
+ negate: opts.negate
568
+ };
569
+ }
570
+ function lineSuffix(contents) {
571
+ assertDoc(contents);
572
+ return { type: DOC_TYPE_LINE_SUFFIX, contents };
573
+ }
574
+ var lineSuffixBoundary = { type: DOC_TYPE_LINE_SUFFIX_BOUNDARY };
575
+ var breakParent = { type: DOC_TYPE_BREAK_PARENT };
576
+ var trim = { type: DOC_TYPE_TRIM };
577
+ var hardlineWithoutBreakParent = { type: DOC_TYPE_LINE, hard: true };
578
+ var literallineWithoutBreakParent = {
579
+ type: DOC_TYPE_LINE,
580
+ hard: true,
581
+ literal: true
582
+ };
583
+ var line = { type: DOC_TYPE_LINE };
584
+ var softline = { type: DOC_TYPE_LINE, soft: true };
585
+ var hardline = [hardlineWithoutBreakParent, breakParent];
586
+ var literalline = [literallineWithoutBreakParent, breakParent];
587
+ var cursor = { type: DOC_TYPE_CURSOR };
588
+ function join(separator, docs) {
589
+ assertDoc(separator);
590
+ assertDocArray(docs);
591
+ const parts = [];
592
+ for (let i = 0; i < docs.length; i++) {
593
+ if (i !== 0) {
594
+ parts.push(separator);
595
+ }
596
+ parts.push(docs[i]);
597
+ }
598
+ return parts;
599
+ }
600
+ function addAlignmentToDoc(doc, size, tabWidth) {
601
+ assertDoc(doc);
602
+ let aligned = doc;
603
+ if (size > 0) {
604
+ for (let i = 0; i < Math.floor(size / tabWidth); ++i) {
605
+ aligned = indent(aligned);
606
+ }
607
+ aligned = align(size % tabWidth, aligned);
608
+ aligned = align(Number.NEGATIVE_INFINITY, aligned);
609
+ }
610
+ return aligned;
611
+ }
612
+ function label(label2, contents) {
613
+ assertDoc(contents);
614
+ return label2 ? { type: DOC_TYPE_LABEL, label: label2, contents } : contents;
615
+ }
616
+
617
+ // scripts/build/shims/string-replace-all.js
618
+ var stringReplaceAll = (isOptionalObject, original, pattern, replacement) => {
619
+ if (isOptionalObject && (original === void 0 || original === null)) {
620
+ return;
621
+ }
622
+ if (original.replaceAll) {
623
+ return original.replaceAll(pattern, replacement);
624
+ }
625
+ if (pattern.global) {
626
+ return original.replace(pattern, replacement);
627
+ }
628
+ return original.split(pattern).join(replacement);
629
+ };
630
+ var string_replace_all_default = stringReplaceAll;
631
+
632
+ // src/common/end-of-line.js
633
+ function convertEndOfLineToChars(value) {
634
+ switch (value) {
635
+ case "cr":
636
+ return "\r";
637
+ case "crlf":
638
+ return "\r\n";
639
+ default:
640
+ return "\n";
641
+ }
642
+ }
643
+
644
+ // node_modules/emoji-regex/index.mjs
645
+ var emoji_regex_default = () => {
646
+ return /[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26D3\uFE0F?(?:\u200D\uD83D\uDCA5)?|\u26F9(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF43\uDF45-\uDF4A\uDF4C-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDF44(?:\u200D\uD83D\uDFEB)?|\uDF4B(?:\u200D\uD83D\uDFE9)?|\uDFC3(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\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?|[\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](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4\uDEB5](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\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-\uDE41\uDE43\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC08(?:\u200D\u2B1B)?|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC26(?:\u200D(?:\u2B1B|\uD83D\uDD25))?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE])))?))?|\uDC6F(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDD75(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?|\uDE42(?:\u200D[\u2194\u2195]\uFE0F?)?|\uDEB6(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE89\uDE8F-\uDEC2\uDEC6\uDECE-\uDEDC\uDEDF-\uDEE9]|\uDD3C(?:\u200D[\u2640\u2642]\uFE0F?|\uD83C[\uDFFB-\uDFFF])?|\uDDCE(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1|\uDDD1\u200D\uD83E\uDDD2(?:\u200D\uD83E\uDDD2)?|\uDDD2(?:\u200D\uD83E\uDDD2)?))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g;
647
+ };
648
+
649
+ // node_modules/get-east-asian-width/lookup.js
650
+ function isFullWidth(x) {
651
+ return x === 12288 || x >= 65281 && x <= 65376 || x >= 65504 && x <= 65510;
652
+ }
653
+ function isWide(x) {
654
+ return x >= 4352 && x <= 4447 || x === 8986 || x === 8987 || x === 9001 || x === 9002 || x >= 9193 && x <= 9196 || x === 9200 || x === 9203 || x === 9725 || x === 9726 || x === 9748 || x === 9749 || x >= 9776 && x <= 9783 || x >= 9800 && x <= 9811 || x === 9855 || x >= 9866 && x <= 9871 || x === 9875 || x === 9889 || x === 9898 || x === 9899 || x === 9917 || x === 9918 || x === 9924 || x === 9925 || x === 9934 || x === 9940 || x === 9962 || x === 9970 || x === 9971 || x === 9973 || x === 9978 || x === 9981 || x === 9989 || x === 9994 || x === 9995 || x === 10024 || x === 10060 || x === 10062 || x >= 10067 && x <= 10069 || x === 10071 || x >= 10133 && x <= 10135 || x === 10160 || x === 10175 || x === 11035 || x === 11036 || x === 11088 || x === 11093 || x >= 11904 && x <= 11929 || x >= 11931 && x <= 12019 || x >= 12032 && x <= 12245 || x >= 12272 && x <= 12287 || x >= 12289 && x <= 12350 || x >= 12353 && x <= 12438 || x >= 12441 && x <= 12543 || x >= 12549 && x <= 12591 || x >= 12593 && x <= 12686 || x >= 12688 && x <= 12773 || x >= 12783 && x <= 12830 || x >= 12832 && x <= 12871 || x >= 12880 && x <= 42124 || x >= 42128 && x <= 42182 || x >= 43360 && x <= 43388 || x >= 44032 && x <= 55203 || x >= 63744 && x <= 64255 || x >= 65040 && x <= 65049 || x >= 65072 && x <= 65106 || x >= 65108 && x <= 65126 || x >= 65128 && x <= 65131 || x >= 94176 && x <= 94180 || x === 94192 || x === 94193 || x >= 94208 && x <= 100343 || x >= 100352 && x <= 101589 || x >= 101631 && x <= 101640 || x >= 110576 && x <= 110579 || x >= 110581 && x <= 110587 || x === 110589 || x === 110590 || x >= 110592 && x <= 110882 || x === 110898 || x >= 110928 && x <= 110930 || x === 110933 || x >= 110948 && x <= 110951 || x >= 110960 && x <= 111355 || x >= 119552 && x <= 119638 || x >= 119648 && x <= 119670 || x === 126980 || x === 127183 || x === 127374 || x >= 127377 && x <= 127386 || x >= 127488 && x <= 127490 || x >= 127504 && x <= 127547 || x >= 127552 && x <= 127560 || x === 127568 || x === 127569 || x >= 127584 && x <= 127589 || x >= 127744 && x <= 127776 || x >= 127789 && x <= 127797 || x >= 127799 && x <= 127868 || x >= 127870 && x <= 127891 || x >= 127904 && x <= 127946 || x >= 127951 && x <= 127955 || x >= 127968 && x <= 127984 || x === 127988 || x >= 127992 && x <= 128062 || x === 128064 || x >= 128066 && x <= 128252 || x >= 128255 && x <= 128317 || x >= 128331 && x <= 128334 || x >= 128336 && x <= 128359 || x === 128378 || x === 128405 || x === 128406 || x === 128420 || x >= 128507 && x <= 128591 || x >= 128640 && x <= 128709 || x === 128716 || x >= 128720 && x <= 128722 || x >= 128725 && x <= 128727 || x >= 128732 && x <= 128735 || x === 128747 || x === 128748 || x >= 128756 && x <= 128764 || x >= 128992 && x <= 129003 || x === 129008 || x >= 129292 && x <= 129338 || x >= 129340 && x <= 129349 || x >= 129351 && x <= 129535 || x >= 129648 && x <= 129660 || x >= 129664 && x <= 129673 || x >= 129679 && x <= 129734 || x >= 129742 && x <= 129756 || x >= 129759 && x <= 129769 || x >= 129776 && x <= 129784 || x >= 131072 && x <= 196605 || x >= 196608 && x <= 262141;
655
+ }
656
+
657
+ // node_modules/get-east-asian-width/index.js
658
+ var _isNarrowWidth = (codePoint) => !(isFullWidth(codePoint) || isWide(codePoint));
659
+
660
+ // src/utils/get-string-width.js
661
+ var notAsciiRegex = /[^\x20-\x7F]/u;
662
+ function getStringWidth(text) {
663
+ if (!text) {
664
+ return 0;
665
+ }
666
+ if (!notAsciiRegex.test(text)) {
667
+ return text.length;
668
+ }
669
+ text = text.replace(emoji_regex_default(), " ");
670
+ let width = 0;
671
+ for (const character of text) {
672
+ const codePoint = character.codePointAt(0);
673
+ if (codePoint <= 31 || codePoint >= 127 && codePoint <= 159) {
674
+ continue;
675
+ }
676
+ if (codePoint >= 768 && codePoint <= 879) {
677
+ continue;
678
+ }
679
+ width += _isNarrowWidth(codePoint) ? 1 : 2;
680
+ }
681
+ return width;
682
+ }
683
+ var get_string_width_default = getStringWidth;
684
+
677
685
  // src/document/printer.js
678
686
  var MODE_BREAK = Symbol("MODE_BREAK");
679
687
  var MODE_FLAT = Symbol("MODE_FLAT");
680
688
  var CURSOR_PLACEHOLDER = Symbol("cursor");
681
689
  var DOC_FILL_PRINTED_LENGTH = Symbol("DOC_FILL_PRINTED_LENGTH");
682
690
  function rootIndent() {
683
- return {
684
- value: "",
685
- length: 0,
686
- queue: []
687
- };
691
+ return { value: "", length: 0, queue: [] };
688
692
  }
689
693
  function makeIndent(ind, options) {
690
- return generateInd(ind, {
691
- type: "indent"
692
- }, options);
694
+ return generateInd(ind, { type: "indent" }, options);
693
695
  }
694
696
  function makeAlign(indent2, widthOrDoc, options) {
695
697
  if (widthOrDoc === Number.NEGATIVE_INFINITY) {
696
698
  return indent2.root || rootIndent();
697
699
  }
698
700
  if (widthOrDoc < 0) {
699
- return generateInd(indent2, {
700
- type: "dedent"
701
- }, options);
701
+ return generateInd(indent2, { type: "dedent" }, options);
702
702
  }
703
703
  if (!widthOrDoc) {
704
704
  return indent2;
705
705
  }
706
706
  if (widthOrDoc.type === "root") {
707
- return {
708
- ...indent2,
709
- root: indent2
710
- };
707
+ return { ...indent2, root: indent2 };
711
708
  }
712
709
  const alignType = typeof widthOrDoc === "string" ? "stringAlign" : "numberAlign";
713
- return generateInd(indent2, {
714
- type: alignType,
715
- n: widthOrDoc
716
- }, options);
710
+ return generateInd(indent2, { type: alignType, n: widthOrDoc }, options);
717
711
  }
718
712
  function generateInd(ind, newPart, options) {
719
713
  const queue = newPart.type === "dedent" ? ind.queue.slice(0, -1) : [...ind.queue, newPart];
@@ -745,12 +739,7 @@ function generateInd(ind, newPart, options) {
745
739
  }
746
740
  }
747
741
  flushSpaces();
748
- return {
749
- ...ind,
750
- value,
751
- length,
752
- queue
753
- };
742
+ return { ...ind, value, length, queue };
754
743
  function addTabs(count) {
755
744
  value += " ".repeat(count);
756
745
  length += options.tabWidth * count;
@@ -829,10 +818,7 @@ function fits(next, restCommands, width, hasLineSuffix, groupModeMap, mustBeFlat
829
818
  cmds.push(restCommands[--restIdx]);
830
819
  continue;
831
820
  }
832
- const {
833
- mode,
834
- doc
835
- } = cmds.pop();
821
+ const { mode, doc } = cmds.pop();
836
822
  const docType = get_doc_type_default(doc);
837
823
  switch (docType) {
838
824
  case DOC_TYPE_STRING:
@@ -842,11 +828,9 @@ function fits(next, restCommands, width, hasLineSuffix, groupModeMap, mustBeFlat
842
828
  case DOC_TYPE_ARRAY:
843
829
  case DOC_TYPE_FILL: {
844
830
  const parts = docType === DOC_TYPE_ARRAY ? doc : doc.parts;
845
- for (let i = parts.length - 1; i >= 0; i--) {
846
- cmds.push({
847
- mode,
848
- doc: parts[i]
849
- });
831
+ const end = doc[DOC_FILL_PRINTED_LENGTH] ?? 0;
832
+ for (let i = parts.length - 1; i >= end; i--) {
833
+ cmds.push({ mode, doc: parts[i] });
850
834
  }
851
835
  break;
852
836
  }
@@ -854,10 +838,7 @@ function fits(next, restCommands, width, hasLineSuffix, groupModeMap, mustBeFlat
854
838
  case DOC_TYPE_ALIGN:
855
839
  case DOC_TYPE_INDENT_IF_BREAK:
856
840
  case DOC_TYPE_LABEL:
857
- cmds.push({
858
- mode,
859
- doc: doc.contents
860
- });
841
+ cmds.push({ mode, doc: doc.contents });
861
842
  break;
862
843
  case DOC_TYPE_TRIM:
863
844
  width += trim2(out);
@@ -873,20 +854,14 @@ function fits(next, restCommands, width, hasLineSuffix, groupModeMap, mustBeFlat
873
854
  doc.expandedStates,
874
855
  -1
875
856
  ) : doc.contents;
876
- cmds.push({
877
- mode: groupMode,
878
- doc: contents
879
- });
857
+ cmds.push({ mode: groupMode, doc: contents });
880
858
  break;
881
859
  }
882
860
  case DOC_TYPE_IF_BREAK: {
883
861
  const groupMode = doc.groupId ? groupModeMap[doc.groupId] || MODE_FLAT : mode;
884
862
  const contents = groupMode === MODE_BREAK ? doc.breakContents : doc.flatContents;
885
863
  if (contents) {
886
- cmds.push({
887
- mode,
888
- doc: contents
889
- });
864
+ cmds.push({ mode, doc: contents });
890
865
  }
891
866
  break;
892
867
  }
@@ -916,22 +891,14 @@ function printDocToString(doc, options) {
916
891
  const width = options.printWidth;
917
892
  const newLine = convertEndOfLineToChars(options.endOfLine);
918
893
  let pos = 0;
919
- const cmds = [{
920
- ind: rootIndent(),
921
- mode: MODE_BREAK,
922
- doc
923
- }];
894
+ const cmds = [{ ind: rootIndent(), mode: MODE_BREAK, doc }];
924
895
  const out = [];
925
896
  let shouldRemeasure = false;
926
897
  const lineSuffix2 = [];
927
898
  let printedCursorCount = 0;
928
899
  propagateBreaks(doc);
929
900
  while (cmds.length > 0) {
930
- const {
931
- ind,
932
- mode,
933
- doc: doc2
934
- } = cmds.pop();
901
+ const { ind, mode, doc: doc2 } = cmds.pop();
935
902
  switch (get_doc_type_default(doc2)) {
936
903
  case DOC_TYPE_STRING: {
937
904
  const formatted = newLine !== "\n" ? string_replace_all_default(
@@ -949,11 +916,7 @@ function printDocToString(doc, options) {
949
916
  }
950
917
  case DOC_TYPE_ARRAY:
951
918
  for (let i = doc2.length - 1; i >= 0; i--) {
952
- cmds.push({
953
- ind,
954
- mode,
955
- doc: doc2[i]
956
- });
919
+ cmds.push({ ind, mode, doc: doc2[i] });
957
920
  }
958
921
  break;
959
922
  case DOC_TYPE_CURSOR:
@@ -964,11 +927,7 @@ function printDocToString(doc, options) {
964
927
  printedCursorCount++;
965
928
  break;
966
929
  case DOC_TYPE_INDENT:
967
- cmds.push({
968
- ind: makeIndent(ind, options),
969
- mode,
970
- doc: doc2.contents
971
- });
930
+ cmds.push({ ind: makeIndent(ind, options), mode, doc: doc2.contents });
972
931
  break;
973
932
  case DOC_TYPE_ALIGN:
974
933
  cmds.push({
@@ -991,13 +950,10 @@ function printDocToString(doc, options) {
991
950
  });
992
951
  break;
993
952
  }
953
+ // fallthrough
994
954
  case MODE_BREAK: {
995
955
  shouldRemeasure = false;
996
- const next = {
997
- ind,
998
- mode: MODE_FLAT,
999
- doc: doc2.contents
1000
- };
956
+ const next = { ind, mode: MODE_FLAT, doc: doc2.contents };
1001
957
  const rem = width - pos;
1002
958
  const hasLineSuffix = lineSuffix2.length > 0;
1003
959
  if (!doc2.break && fits(next, cmds, rem, hasLineSuffix, groupModeMap)) {
@@ -1011,28 +967,16 @@ function printDocToString(doc, options) {
1011
967
  -1
1012
968
  );
1013
969
  if (doc2.break) {
1014
- cmds.push({
1015
- ind,
1016
- mode: MODE_BREAK,
1017
- doc: mostExpanded
1018
- });
970
+ cmds.push({ ind, mode: MODE_BREAK, doc: mostExpanded });
1019
971
  break;
1020
972
  } else {
1021
973
  for (let i = 1; i < doc2.expandedStates.length + 1; i++) {
1022
974
  if (i >= doc2.expandedStates.length) {
1023
- cmds.push({
1024
- ind,
1025
- mode: MODE_BREAK,
1026
- doc: mostExpanded
1027
- });
975
+ cmds.push({ ind, mode: MODE_BREAK, doc: mostExpanded });
1028
976
  break;
1029
977
  } else {
1030
978
  const state = doc2.expandedStates[i];
1031
- const cmd = {
1032
- ind,
1033
- mode: MODE_FLAT,
1034
- doc: state
1035
- };
979
+ const cmd = { ind, mode: MODE_FLAT, doc: state };
1036
980
  if (fits(cmd, cmds, rem, hasLineSuffix, groupModeMap)) {
1037
981
  cmds.push(cmd);
1038
982
  break;
@@ -1041,11 +985,7 @@ function printDocToString(doc, options) {
1041
985
  }
1042
986
  }
1043
987
  } else {
1044
- cmds.push({
1045
- ind,
1046
- mode: MODE_BREAK,
1047
- doc: doc2.contents
1048
- });
988
+ cmds.push({ ind, mode: MODE_BREAK, doc: doc2.contents });
1049
989
  }
1050
990
  }
1051
991
  break;
@@ -1060,29 +1000,46 @@ function printDocToString(doc, options) {
1060
1000
  ).mode;
1061
1001
  }
1062
1002
  break;
1003
+ // Fills each line with as much code as possible before moving to a new
1004
+ // line with the same indentation.
1005
+ //
1006
+ // Expects doc.parts to be an array of alternating content and
1007
+ // whitespace. The whitespace contains the linebreaks.
1008
+ //
1009
+ // For example:
1010
+ // ["I", line, "love", line, "monkeys"]
1011
+ // or
1012
+ // [{ type: group, ... }, softline, { type: group, ... }]
1013
+ //
1014
+ // It uses this parts structure to handle three main layout cases:
1015
+ // * The first two content items fit on the same line without
1016
+ // breaking
1017
+ // -> output the first content item and the whitespace "flat".
1018
+ // * Only the first content item fits on the line without breaking
1019
+ // -> output the first content item "flat" and the whitespace with
1020
+ // "break".
1021
+ // * Neither content item fits on the line without breaking
1022
+ // -> output the first content item and the whitespace with "break".
1063
1023
  case DOC_TYPE_FILL: {
1064
1024
  const rem = width - pos;
1065
1025
  const offset = doc2[DOC_FILL_PRINTED_LENGTH] ?? 0;
1066
- const {
1067
- parts
1068
- } = doc2;
1026
+ const { parts } = doc2;
1069
1027
  const length = parts.length - offset;
1070
1028
  if (length === 0) {
1071
1029
  break;
1072
1030
  }
1073
1031
  const content = parts[offset + 0];
1074
1032
  const whitespace = parts[offset + 1];
1075
- const contentFlatCmd = {
1076
- ind,
1077
- mode: MODE_FLAT,
1078
- doc: content
1079
- };
1080
- const contentBreakCmd = {
1081
- ind,
1082
- mode: MODE_BREAK,
1083
- doc: content
1084
- };
1085
- const contentFits = fits(contentFlatCmd, [], rem, lineSuffix2.length > 0, groupModeMap, true);
1033
+ const contentFlatCmd = { ind, mode: MODE_FLAT, doc: content };
1034
+ const contentBreakCmd = { ind, mode: MODE_BREAK, doc: content };
1035
+ const contentFits = fits(
1036
+ contentFlatCmd,
1037
+ [],
1038
+ rem,
1039
+ lineSuffix2.length > 0,
1040
+ groupModeMap,
1041
+ true
1042
+ );
1086
1043
  if (length === 1) {
1087
1044
  if (contentFits) {
1088
1045
  cmds.push(contentFlatCmd);
@@ -1091,16 +1048,8 @@ function printDocToString(doc, options) {
1091
1048
  }
1092
1049
  break;
1093
1050
  }
1094
- const whitespaceFlatCmd = {
1095
- ind,
1096
- mode: MODE_FLAT,
1097
- doc: whitespace
1098
- };
1099
- const whitespaceBreakCmd = {
1100
- ind,
1101
- mode: MODE_BREAK,
1102
- doc: whitespace
1103
- };
1051
+ const whitespaceFlatCmd = { ind, mode: MODE_FLAT, doc: whitespace };
1052
+ const whitespaceBreakCmd = { ind, mode: MODE_BREAK, doc: whitespace };
1104
1053
  if (length === 2) {
1105
1054
  if (contentFits) {
1106
1055
  cmds.push(whitespaceFlatCmd, contentFlatCmd);
@@ -1113,17 +1062,21 @@ function printDocToString(doc, options) {
1113
1062
  const remainingCmd = {
1114
1063
  ind,
1115
1064
  mode,
1116
- doc: {
1117
- ...doc2,
1118
- [DOC_FILL_PRINTED_LENGTH]: offset + 2
1119
- }
1065
+ doc: { ...doc2, [DOC_FILL_PRINTED_LENGTH]: offset + 2 }
1120
1066
  };
1121
1067
  const firstAndSecondContentFlatCmd = {
1122
1068
  ind,
1123
1069
  mode: MODE_FLAT,
1124
1070
  doc: [content, whitespace, secondContent]
1125
1071
  };
1126
- const firstAndSecondContentFits = fits(firstAndSecondContentFlatCmd, [], rem, lineSuffix2.length > 0, groupModeMap, true);
1072
+ const firstAndSecondContentFits = fits(
1073
+ firstAndSecondContentFlatCmd,
1074
+ [],
1075
+ rem,
1076
+ lineSuffix2.length > 0,
1077
+ groupModeMap,
1078
+ true
1079
+ );
1127
1080
  if (firstAndSecondContentFits) {
1128
1081
  cmds.push(remainingCmd, whitespaceFlatCmd, contentFlatCmd);
1129
1082
  } else if (contentFits) {
@@ -1139,39 +1092,23 @@ function printDocToString(doc, options) {
1139
1092
  if (groupMode === MODE_BREAK) {
1140
1093
  const breakContents = doc2.type === DOC_TYPE_IF_BREAK ? doc2.breakContents : doc2.negate ? doc2.contents : indent(doc2.contents);
1141
1094
  if (breakContents) {
1142
- cmds.push({
1143
- ind,
1144
- mode,
1145
- doc: breakContents
1146
- });
1095
+ cmds.push({ ind, mode, doc: breakContents });
1147
1096
  }
1148
1097
  }
1149
1098
  if (groupMode === MODE_FLAT) {
1150
1099
  const flatContents = doc2.type === DOC_TYPE_IF_BREAK ? doc2.flatContents : doc2.negate ? indent(doc2.contents) : doc2.contents;
1151
1100
  if (flatContents) {
1152
- cmds.push({
1153
- ind,
1154
- mode,
1155
- doc: flatContents
1156
- });
1101
+ cmds.push({ ind, mode, doc: flatContents });
1157
1102
  }
1158
1103
  }
1159
1104
  break;
1160
1105
  }
1161
1106
  case DOC_TYPE_LINE_SUFFIX:
1162
- lineSuffix2.push({
1163
- ind,
1164
- mode,
1165
- doc: doc2.contents
1166
- });
1107
+ lineSuffix2.push({ ind, mode, doc: doc2.contents });
1167
1108
  break;
1168
1109
  case DOC_TYPE_LINE_SUFFIX_BOUNDARY:
1169
1110
  if (lineSuffix2.length > 0) {
1170
- cmds.push({
1171
- ind,
1172
- mode,
1173
- doc: hardlineWithoutBreakParent
1174
- });
1111
+ cmds.push({ ind, mode, doc: hardlineWithoutBreakParent });
1175
1112
  }
1176
1113
  break;
1177
1114
  case DOC_TYPE_LINE:
@@ -1186,13 +1123,10 @@ function printDocToString(doc, options) {
1186
1123
  } else {
1187
1124
  shouldRemeasure = true;
1188
1125
  }
1126
+ // fallthrough
1189
1127
  case MODE_BREAK:
1190
1128
  if (lineSuffix2.length > 0) {
1191
- cmds.push({
1192
- ind,
1193
- mode,
1194
- doc: doc2
1195
- }, ...lineSuffix2.reverse());
1129
+ cmds.push({ ind, mode, doc: doc2 }, ...lineSuffix2.reverse());
1196
1130
  lineSuffix2.length = 0;
1197
1131
  break;
1198
1132
  }
@@ -1213,11 +1147,7 @@ function printDocToString(doc, options) {
1213
1147
  }
1214
1148
  break;
1215
1149
  case DOC_TYPE_LABEL:
1216
- cmds.push({
1217
- ind,
1218
- mode,
1219
- doc: doc2.contents
1220
- });
1150
+ cmds.push({ ind, mode, doc: doc2.contents });
1221
1151
  break;
1222
1152
  case DOC_TYPE_BREAK_PARENT:
1223
1153
  break;
@@ -1231,7 +1161,15 @@ function printDocToString(doc, options) {
1231
1161
  }
1232
1162
  const cursorPlaceholderIndex = out.indexOf(CURSOR_PLACEHOLDER);
1233
1163
  if (cursorPlaceholderIndex !== -1) {
1234
- const otherCursorPlaceholderIndex = out.indexOf(CURSOR_PLACEHOLDER, cursorPlaceholderIndex + 1);
1164
+ const otherCursorPlaceholderIndex = out.indexOf(
1165
+ CURSOR_PLACEHOLDER,
1166
+ cursorPlaceholderIndex + 1
1167
+ );
1168
+ if (otherCursorPlaceholderIndex === -1) {
1169
+ return {
1170
+ formatted: out.filter((char) => char !== CURSOR_PLACEHOLDER).join("")
1171
+ };
1172
+ }
1235
1173
  const beforeCursor = out.slice(0, cursorPlaceholderIndex).join("");
1236
1174
  const aroundCursor = out.slice(cursorPlaceholderIndex + 1, otherCursorPlaceholderIndex).join("");
1237
1175
  const afterCursor = out.slice(otherCursorPlaceholderIndex + 1).join("");
@@ -1241,9 +1179,7 @@ function printDocToString(doc, options) {
1241
1179
  cursorNodeText: aroundCursor
1242
1180
  };
1243
1181
  }
1244
- return {
1245
- formatted: out.join("")
1246
- };
1182
+ return { formatted: out.join("") };
1247
1183
  }
1248
1184
 
1249
1185
  // src/document/public.js