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.js CHANGED
@@ -79,6 +79,18 @@
79
79
  DOC_TYPE_BREAK_PARENT
80
80
  ]);
81
81
 
82
+ // scripts/build/shims/at.js
83
+ var at = (isOptionalObject, object, index) => {
84
+ if (isOptionalObject && (object === void 0 || object === null)) {
85
+ return;
86
+ }
87
+ if (Array.isArray(object) || typeof object === "string") {
88
+ return object[index < 0 ? object.length + index : index];
89
+ }
90
+ return object.at(index);
91
+ };
92
+ var at_default = at;
93
+
82
94
  // src/document/utils/get-doc-type.js
83
95
  function getDocType(doc) {
84
96
  if (typeof doc === "string") {
@@ -189,219 +201,6 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
189
201
  }
190
202
  var traverse_doc_default = traverseDoc;
191
203
 
192
- // src/document/utils/assert-doc.js
193
- var noop = () => {
194
- };
195
- var assertDoc = true ? noop : function(doc) {
196
- traverse_doc_default(doc, (doc2) => {
197
- if (checked.has(doc2)) {
198
- return false;
199
- }
200
- if (typeof doc2 !== "string") {
201
- checked.add(doc2);
202
- }
203
- });
204
- };
205
- var assertDocArray = true ? noop : function(docs, optional = false) {
206
- if (optional && !docs) {
207
- return;
208
- }
209
- if (!Array.isArray(docs)) {
210
- throw new TypeError("Unexpected doc array.");
211
- }
212
- for (const doc of docs) {
213
- assertDoc(doc);
214
- }
215
- };
216
-
217
- // src/document/builders.js
218
- function indent(contents) {
219
- assertDoc(contents);
220
- return { type: DOC_TYPE_INDENT, contents };
221
- }
222
- function align(widthOrString, contents) {
223
- assertDoc(contents);
224
- return { type: DOC_TYPE_ALIGN, contents, n: widthOrString };
225
- }
226
- function group(contents, opts = {}) {
227
- assertDoc(contents);
228
- assertDocArray(
229
- opts.expandedStates,
230
- /* optional */
231
- true
232
- );
233
- return {
234
- type: DOC_TYPE_GROUP,
235
- id: opts.id,
236
- contents,
237
- break: Boolean(opts.shouldBreak),
238
- expandedStates: opts.expandedStates
239
- };
240
- }
241
- function dedentToRoot(contents) {
242
- return align(Number.NEGATIVE_INFINITY, contents);
243
- }
244
- function markAsRoot(contents) {
245
- return align({ type: "root" }, contents);
246
- }
247
- function dedent(contents) {
248
- return align(-1, contents);
249
- }
250
- function conditionalGroup(states, opts) {
251
- return group(states[0], { ...opts, expandedStates: states });
252
- }
253
- function fill(parts) {
254
- assertDocArray(parts);
255
- return { type: DOC_TYPE_FILL, parts };
256
- }
257
- function ifBreak(breakContents, flatContents = "", opts = {}) {
258
- assertDoc(breakContents);
259
- if (flatContents !== "") {
260
- assertDoc(flatContents);
261
- }
262
- return {
263
- type: DOC_TYPE_IF_BREAK,
264
- breakContents,
265
- flatContents,
266
- groupId: opts.groupId
267
- };
268
- }
269
- function indentIfBreak(contents, opts) {
270
- assertDoc(contents);
271
- return {
272
- type: DOC_TYPE_INDENT_IF_BREAK,
273
- contents,
274
- groupId: opts.groupId,
275
- negate: opts.negate
276
- };
277
- }
278
- function lineSuffix(contents) {
279
- assertDoc(contents);
280
- return { type: DOC_TYPE_LINE_SUFFIX, contents };
281
- }
282
- var lineSuffixBoundary = { type: DOC_TYPE_LINE_SUFFIX_BOUNDARY };
283
- var breakParent = { type: DOC_TYPE_BREAK_PARENT };
284
- var trim = { type: DOC_TYPE_TRIM };
285
- var hardlineWithoutBreakParent = { type: DOC_TYPE_LINE, hard: true };
286
- var literallineWithoutBreakParent = {
287
- type: DOC_TYPE_LINE,
288
- hard: true,
289
- literal: true
290
- };
291
- var line = { type: DOC_TYPE_LINE };
292
- var softline = { type: DOC_TYPE_LINE, soft: true };
293
- var hardline = [hardlineWithoutBreakParent, breakParent];
294
- var literalline = [literallineWithoutBreakParent, breakParent];
295
- var cursor = { type: DOC_TYPE_CURSOR };
296
- function join(separator, docs) {
297
- assertDoc(separator);
298
- assertDocArray(docs);
299
- const parts = [];
300
- for (let i = 0; i < docs.length; i++) {
301
- if (i !== 0) {
302
- parts.push(separator);
303
- }
304
- parts.push(docs[i]);
305
- }
306
- return parts;
307
- }
308
- function addAlignmentToDoc(doc, size, tabWidth) {
309
- assertDoc(doc);
310
- let aligned = doc;
311
- if (size > 0) {
312
- for (let i = 0; i < Math.floor(size / tabWidth); ++i) {
313
- aligned = indent(aligned);
314
- }
315
- aligned = align(size % tabWidth, aligned);
316
- aligned = align(Number.NEGATIVE_INFINITY, aligned);
317
- }
318
- return aligned;
319
- }
320
- function label(label2, contents) {
321
- assertDoc(contents);
322
- return label2 ? { type: DOC_TYPE_LABEL, label: label2, contents } : contents;
323
- }
324
-
325
- // scripts/build/shims/at.js
326
- var at = (isOptionalObject, object, index) => {
327
- if (isOptionalObject && (object === void 0 || object === null)) {
328
- return;
329
- }
330
- if (Array.isArray(object) || typeof object === "string") {
331
- return object[index < 0 ? object.length + index : index];
332
- }
333
- return object.at(index);
334
- };
335
- var at_default = at;
336
-
337
- // scripts/build/shims/string-replace-all.js
338
- var stringReplaceAll = (isOptionalObject, original, pattern, replacement) => {
339
- if (isOptionalObject && (original === void 0 || original === null)) {
340
- return;
341
- }
342
- if (original.replaceAll) {
343
- return original.replaceAll(pattern, replacement);
344
- }
345
- if (pattern.global) {
346
- return original.replace(pattern, replacement);
347
- }
348
- return original.split(pattern).join(replacement);
349
- };
350
- var string_replace_all_default = stringReplaceAll;
351
-
352
- // src/common/end-of-line.js
353
- function convertEndOfLineToChars(value) {
354
- switch (value) {
355
- case "cr":
356
- return "\r";
357
- case "crlf":
358
- return "\r\n";
359
- default:
360
- return "\n";
361
- }
362
- }
363
-
364
- // node_modules/emoji-regex/index.mjs
365
- var emoji_regex_default = () => {
366
- 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;
367
- };
368
-
369
- // node_modules/get-east-asian-width/lookup.js
370
- function isFullWidth(x) {
371
- return x === 12288 || x >= 65281 && x <= 65376 || x >= 65504 && x <= 65510;
372
- }
373
- function isWide(x) {
374
- 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;
375
- }
376
-
377
- // node_modules/get-east-asian-width/index.js
378
- var _isNarrowWidth = (codePoint) => !(isFullWidth(codePoint) || isWide(codePoint));
379
-
380
- // src/utils/get-string-width.js
381
- var notAsciiRegex = /[^\x20-\x7F]/u;
382
- function getStringWidth(text) {
383
- if (!text) {
384
- return 0;
385
- }
386
- if (!notAsciiRegex.test(text)) {
387
- return text.length;
388
- }
389
- text = text.replace(emoji_regex_default(), " ");
390
- let width = 0;
391
- for (const character of text) {
392
- const codePoint = character.codePointAt(0);
393
- if (codePoint <= 31 || codePoint >= 127 && codePoint <= 159) {
394
- continue;
395
- }
396
- if (codePoint >= 768 && codePoint <= 879) {
397
- continue;
398
- }
399
- width += _isNarrowWidth(codePoint) ? 1 : 2;
400
- }
401
- return width;
402
- }
403
- var get_string_width_default = getStringWidth;
404
-
405
204
  // src/document/utils.js
406
205
  function mapDoc(doc, cb) {
407
206
  if (typeof doc === "string") {
@@ -422,10 +221,7 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
422
221
  case DOC_TYPE_ARRAY:
423
222
  return cb(doc2.map(rec));
424
223
  case DOC_TYPE_FILL:
425
- return cb({
426
- ...doc2,
427
- parts: doc2.parts.map(rec)
428
- });
224
+ return cb({ ...doc2, parts: doc2.parts.map(rec) });
429
225
  case DOC_TYPE_IF_BREAK:
430
226
  return cb({
431
227
  ...doc2,
@@ -433,31 +229,21 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
433
229
  flatContents: rec(doc2.flatContents)
434
230
  });
435
231
  case DOC_TYPE_GROUP: {
436
- let {
437
- expandedStates,
438
- contents
439
- } = doc2;
232
+ let { expandedStates, contents } = doc2;
440
233
  if (expandedStates) {
441
234
  expandedStates = expandedStates.map(rec);
442
235
  contents = expandedStates[0];
443
236
  } else {
444
237
  contents = rec(contents);
445
238
  }
446
- return cb({
447
- ...doc2,
448
- contents,
449
- expandedStates
450
- });
239
+ return cb({ ...doc2, contents, expandedStates });
451
240
  }
452
241
  case DOC_TYPE_ALIGN:
453
242
  case DOC_TYPE_INDENT:
454
243
  case DOC_TYPE_INDENT_IF_BREAK:
455
244
  case DOC_TYPE_LABEL:
456
245
  case DOC_TYPE_LINE_SUFFIX:
457
- return cb({
458
- ...doc2,
459
- contents: rec(doc2.contents)
460
- });
246
+ return cb({ ...doc2, contents: rec(doc2.contents) });
461
247
  case DOC_TYPE_STRING:
462
248
  case DOC_TYPE_CURSOR:
463
249
  case DOC_TYPE_TRIM:
@@ -591,10 +377,7 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
591
377
  case DOC_TYPE_LINE_SUFFIX:
592
378
  case DOC_TYPE_LABEL: {
593
379
  const contents = stripTrailingHardlineFromDoc(doc.contents);
594
- return {
595
- ...doc,
596
- contents
597
- };
380
+ return { ...doc, contents };
598
381
  }
599
382
  case DOC_TYPE_IF_BREAK:
600
383
  return {
@@ -603,10 +386,7 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
603
386
  flatContents: stripTrailingHardlineFromDoc(doc.flatContents)
604
387
  };
605
388
  case DOC_TYPE_FILL:
606
- return {
607
- ...doc,
608
- parts: stripTrailingHardlineFromParts(doc.parts)
609
- };
389
+ return { ...doc, parts: stripTrailingHardlineFromParts(doc.parts) };
610
390
  case DOC_TYPE_ARRAY:
611
391
  return stripTrailingHardlineFromParts(doc);
612
392
  case DOC_TYPE_STRING:
@@ -698,7 +478,10 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
698
478
  return mapDoc(doc, (currentDoc) => cleanDocFn(currentDoc));
699
479
  }
700
480
  function replaceEndOfLine(doc, replacement = literalline) {
701
- return mapDoc(doc, (currentDoc) => typeof currentDoc === "string" ? join(replacement, currentDoc.split("\n")) : currentDoc);
481
+ return mapDoc(
482
+ doc,
483
+ (currentDoc) => typeof currentDoc === "string" ? join(replacement, currentDoc.split("\n")) : currentDoc
484
+ );
702
485
  }
703
486
  function canBreakFn(doc) {
704
487
  if (doc.type === DOC_TYPE_LINE) {
@@ -709,46 +492,257 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
709
492
  return findInDoc(doc, canBreakFn, false);
710
493
  }
711
494
 
495
+ // src/document/utils/assert-doc.js
496
+ var noop = () => {
497
+ };
498
+ var assertDoc = true ? noop : function(doc) {
499
+ traverse_doc_default(doc, (doc2) => {
500
+ if (checked.has(doc2)) {
501
+ return false;
502
+ }
503
+ if (typeof doc2 !== "string") {
504
+ checked.add(doc2);
505
+ }
506
+ });
507
+ };
508
+ var assertDocArray = true ? noop : function(docs, optional = false) {
509
+ if (optional && !docs) {
510
+ return;
511
+ }
512
+ if (!Array.isArray(docs)) {
513
+ throw new TypeError("Unexpected doc array.");
514
+ }
515
+ for (const doc of docs) {
516
+ assertDoc(doc);
517
+ }
518
+ };
519
+ var assertDocFillParts = true ? noop : (
520
+ /**
521
+ * @param {Doc[]} parts
522
+ */
523
+ function(parts) {
524
+ assertDocArray(parts);
525
+ if (parts.length > 1 && isEmptyDoc(at_default(
526
+ /* isOptionalObject */
527
+ false,
528
+ parts,
529
+ -1
530
+ ))) {
531
+ parts = parts.slice(0, -1);
532
+ }
533
+ for (const [i, doc] of parts.entries()) {
534
+ if (i % 2 === 1 && !isValidSeparator(doc)) {
535
+ const type = get_doc_type_default(doc);
536
+ throw new Error(
537
+ `Unexpected non-line-break doc at ${i}. Doc type is ${type}.`
538
+ );
539
+ }
540
+ }
541
+ }
542
+ );
543
+
544
+ // src/document/builders.js
545
+ function indent(contents) {
546
+ assertDoc(contents);
547
+ return { type: DOC_TYPE_INDENT, contents };
548
+ }
549
+ function align(widthOrString, contents) {
550
+ assertDoc(contents);
551
+ return { type: DOC_TYPE_ALIGN, contents, n: widthOrString };
552
+ }
553
+ function group(contents, opts = {}) {
554
+ assertDoc(contents);
555
+ assertDocArray(
556
+ opts.expandedStates,
557
+ /* optional */
558
+ true
559
+ );
560
+ return {
561
+ type: DOC_TYPE_GROUP,
562
+ id: opts.id,
563
+ contents,
564
+ break: Boolean(opts.shouldBreak),
565
+ expandedStates: opts.expandedStates
566
+ };
567
+ }
568
+ function dedentToRoot(contents) {
569
+ return align(Number.NEGATIVE_INFINITY, contents);
570
+ }
571
+ function markAsRoot(contents) {
572
+ return align({ type: "root" }, contents);
573
+ }
574
+ function dedent(contents) {
575
+ return align(-1, contents);
576
+ }
577
+ function conditionalGroup(states, opts) {
578
+ return group(states[0], { ...opts, expandedStates: states });
579
+ }
580
+ function fill(parts) {
581
+ assertDocFillParts(parts);
582
+ return { type: DOC_TYPE_FILL, parts };
583
+ }
584
+ function ifBreak(breakContents, flatContents = "", opts = {}) {
585
+ assertDoc(breakContents);
586
+ if (flatContents !== "") {
587
+ assertDoc(flatContents);
588
+ }
589
+ return {
590
+ type: DOC_TYPE_IF_BREAK,
591
+ breakContents,
592
+ flatContents,
593
+ groupId: opts.groupId
594
+ };
595
+ }
596
+ function indentIfBreak(contents, opts) {
597
+ assertDoc(contents);
598
+ return {
599
+ type: DOC_TYPE_INDENT_IF_BREAK,
600
+ contents,
601
+ groupId: opts.groupId,
602
+ negate: opts.negate
603
+ };
604
+ }
605
+ function lineSuffix(contents) {
606
+ assertDoc(contents);
607
+ return { type: DOC_TYPE_LINE_SUFFIX, contents };
608
+ }
609
+ var lineSuffixBoundary = { type: DOC_TYPE_LINE_SUFFIX_BOUNDARY };
610
+ var breakParent = { type: DOC_TYPE_BREAK_PARENT };
611
+ var trim = { type: DOC_TYPE_TRIM };
612
+ var hardlineWithoutBreakParent = { type: DOC_TYPE_LINE, hard: true };
613
+ var literallineWithoutBreakParent = {
614
+ type: DOC_TYPE_LINE,
615
+ hard: true,
616
+ literal: true
617
+ };
618
+ var line = { type: DOC_TYPE_LINE };
619
+ var softline = { type: DOC_TYPE_LINE, soft: true };
620
+ var hardline = [hardlineWithoutBreakParent, breakParent];
621
+ var literalline = [literallineWithoutBreakParent, breakParent];
622
+ var cursor = { type: DOC_TYPE_CURSOR };
623
+ function join(separator, docs) {
624
+ assertDoc(separator);
625
+ assertDocArray(docs);
626
+ const parts = [];
627
+ for (let i = 0; i < docs.length; i++) {
628
+ if (i !== 0) {
629
+ parts.push(separator);
630
+ }
631
+ parts.push(docs[i]);
632
+ }
633
+ return parts;
634
+ }
635
+ function addAlignmentToDoc(doc, size, tabWidth) {
636
+ assertDoc(doc);
637
+ let aligned = doc;
638
+ if (size > 0) {
639
+ for (let i = 0; i < Math.floor(size / tabWidth); ++i) {
640
+ aligned = indent(aligned);
641
+ }
642
+ aligned = align(size % tabWidth, aligned);
643
+ aligned = align(Number.NEGATIVE_INFINITY, aligned);
644
+ }
645
+ return aligned;
646
+ }
647
+ function label(label2, contents) {
648
+ assertDoc(contents);
649
+ return label2 ? { type: DOC_TYPE_LABEL, label: label2, contents } : contents;
650
+ }
651
+
652
+ // scripts/build/shims/string-replace-all.js
653
+ var stringReplaceAll = (isOptionalObject, original, pattern, replacement) => {
654
+ if (isOptionalObject && (original === void 0 || original === null)) {
655
+ return;
656
+ }
657
+ if (original.replaceAll) {
658
+ return original.replaceAll(pattern, replacement);
659
+ }
660
+ if (pattern.global) {
661
+ return original.replace(pattern, replacement);
662
+ }
663
+ return original.split(pattern).join(replacement);
664
+ };
665
+ var string_replace_all_default = stringReplaceAll;
666
+
667
+ // src/common/end-of-line.js
668
+ function convertEndOfLineToChars(value) {
669
+ switch (value) {
670
+ case "cr":
671
+ return "\r";
672
+ case "crlf":
673
+ return "\r\n";
674
+ default:
675
+ return "\n";
676
+ }
677
+ }
678
+
679
+ // node_modules/emoji-regex/index.mjs
680
+ var emoji_regex_default = () => {
681
+ 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;
682
+ };
683
+
684
+ // node_modules/get-east-asian-width/lookup.js
685
+ function isFullWidth(x) {
686
+ return x === 12288 || x >= 65281 && x <= 65376 || x >= 65504 && x <= 65510;
687
+ }
688
+ function isWide(x) {
689
+ 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;
690
+ }
691
+
692
+ // node_modules/get-east-asian-width/index.js
693
+ var _isNarrowWidth = (codePoint) => !(isFullWidth(codePoint) || isWide(codePoint));
694
+
695
+ // src/utils/get-string-width.js
696
+ var notAsciiRegex = /[^\x20-\x7F]/u;
697
+ function getStringWidth(text) {
698
+ if (!text) {
699
+ return 0;
700
+ }
701
+ if (!notAsciiRegex.test(text)) {
702
+ return text.length;
703
+ }
704
+ text = text.replace(emoji_regex_default(), " ");
705
+ let width = 0;
706
+ for (const character of text) {
707
+ const codePoint = character.codePointAt(0);
708
+ if (codePoint <= 31 || codePoint >= 127 && codePoint <= 159) {
709
+ continue;
710
+ }
711
+ if (codePoint >= 768 && codePoint <= 879) {
712
+ continue;
713
+ }
714
+ width += _isNarrowWidth(codePoint) ? 1 : 2;
715
+ }
716
+ return width;
717
+ }
718
+ var get_string_width_default = getStringWidth;
719
+
712
720
  // src/document/printer.js
713
721
  var MODE_BREAK = Symbol("MODE_BREAK");
714
722
  var MODE_FLAT = Symbol("MODE_FLAT");
715
723
  var CURSOR_PLACEHOLDER = Symbol("cursor");
716
724
  var DOC_FILL_PRINTED_LENGTH = Symbol("DOC_FILL_PRINTED_LENGTH");
717
725
  function rootIndent() {
718
- return {
719
- value: "",
720
- length: 0,
721
- queue: []
722
- };
726
+ return { value: "", length: 0, queue: [] };
723
727
  }
724
728
  function makeIndent(ind, options) {
725
- return generateInd(ind, {
726
- type: "indent"
727
- }, options);
729
+ return generateInd(ind, { type: "indent" }, options);
728
730
  }
729
731
  function makeAlign(indent2, widthOrDoc, options) {
730
732
  if (widthOrDoc === Number.NEGATIVE_INFINITY) {
731
733
  return indent2.root || rootIndent();
732
734
  }
733
735
  if (widthOrDoc < 0) {
734
- return generateInd(indent2, {
735
- type: "dedent"
736
- }, options);
736
+ return generateInd(indent2, { type: "dedent" }, options);
737
737
  }
738
738
  if (!widthOrDoc) {
739
739
  return indent2;
740
740
  }
741
741
  if (widthOrDoc.type === "root") {
742
- return {
743
- ...indent2,
744
- root: indent2
745
- };
742
+ return { ...indent2, root: indent2 };
746
743
  }
747
744
  const alignType = typeof widthOrDoc === "string" ? "stringAlign" : "numberAlign";
748
- return generateInd(indent2, {
749
- type: alignType,
750
- n: widthOrDoc
751
- }, options);
745
+ return generateInd(indent2, { type: alignType, n: widthOrDoc }, options);
752
746
  }
753
747
  function generateInd(ind, newPart, options) {
754
748
  const queue = newPart.type === "dedent" ? ind.queue.slice(0, -1) : [...ind.queue, newPart];
@@ -780,12 +774,7 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
780
774
  }
781
775
  }
782
776
  flushSpaces();
783
- return {
784
- ...ind,
785
- value,
786
- length,
787
- queue
788
- };
777
+ return { ...ind, value, length, queue };
789
778
  function addTabs(count) {
790
779
  value += " ".repeat(count);
791
780
  length += options.tabWidth * count;
@@ -864,10 +853,7 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
864
853
  cmds.push(restCommands[--restIdx]);
865
854
  continue;
866
855
  }
867
- const {
868
- mode,
869
- doc
870
- } = cmds.pop();
856
+ const { mode, doc } = cmds.pop();
871
857
  const docType = get_doc_type_default(doc);
872
858
  switch (docType) {
873
859
  case DOC_TYPE_STRING:
@@ -877,11 +863,9 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
877
863
  case DOC_TYPE_ARRAY:
878
864
  case DOC_TYPE_FILL: {
879
865
  const parts = docType === DOC_TYPE_ARRAY ? doc : doc.parts;
880
- for (let i = parts.length - 1; i >= 0; i--) {
881
- cmds.push({
882
- mode,
883
- doc: parts[i]
884
- });
866
+ const end = doc[DOC_FILL_PRINTED_LENGTH] ?? 0;
867
+ for (let i = parts.length - 1; i >= end; i--) {
868
+ cmds.push({ mode, doc: parts[i] });
885
869
  }
886
870
  break;
887
871
  }
@@ -889,10 +873,7 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
889
873
  case DOC_TYPE_ALIGN:
890
874
  case DOC_TYPE_INDENT_IF_BREAK:
891
875
  case DOC_TYPE_LABEL:
892
- cmds.push({
893
- mode,
894
- doc: doc.contents
895
- });
876
+ cmds.push({ mode, doc: doc.contents });
896
877
  break;
897
878
  case DOC_TYPE_TRIM:
898
879
  width += trim2(out);
@@ -908,20 +889,14 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
908
889
  doc.expandedStates,
909
890
  -1
910
891
  ) : doc.contents;
911
- cmds.push({
912
- mode: groupMode,
913
- doc: contents
914
- });
892
+ cmds.push({ mode: groupMode, doc: contents });
915
893
  break;
916
894
  }
917
895
  case DOC_TYPE_IF_BREAK: {
918
896
  const groupMode = doc.groupId ? groupModeMap[doc.groupId] || MODE_FLAT : mode;
919
897
  const contents = groupMode === MODE_BREAK ? doc.breakContents : doc.flatContents;
920
898
  if (contents) {
921
- cmds.push({
922
- mode,
923
- doc: contents
924
- });
899
+ cmds.push({ mode, doc: contents });
925
900
  }
926
901
  break;
927
902
  }
@@ -951,22 +926,14 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
951
926
  const width = options.printWidth;
952
927
  const newLine = convertEndOfLineToChars(options.endOfLine);
953
928
  let pos = 0;
954
- const cmds = [{
955
- ind: rootIndent(),
956
- mode: MODE_BREAK,
957
- doc
958
- }];
929
+ const cmds = [{ ind: rootIndent(), mode: MODE_BREAK, doc }];
959
930
  const out = [];
960
931
  let shouldRemeasure = false;
961
932
  const lineSuffix2 = [];
962
933
  let printedCursorCount = 0;
963
934
  propagateBreaks(doc);
964
935
  while (cmds.length > 0) {
965
- const {
966
- ind,
967
- mode,
968
- doc: doc2
969
- } = cmds.pop();
936
+ const { ind, mode, doc: doc2 } = cmds.pop();
970
937
  switch (get_doc_type_default(doc2)) {
971
938
  case DOC_TYPE_STRING: {
972
939
  const formatted = newLine !== "\n" ? string_replace_all_default(
@@ -984,11 +951,7 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
984
951
  }
985
952
  case DOC_TYPE_ARRAY:
986
953
  for (let i = doc2.length - 1; i >= 0; i--) {
987
- cmds.push({
988
- ind,
989
- mode,
990
- doc: doc2[i]
991
- });
954
+ cmds.push({ ind, mode, doc: doc2[i] });
992
955
  }
993
956
  break;
994
957
  case DOC_TYPE_CURSOR:
@@ -999,11 +962,7 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
999
962
  printedCursorCount++;
1000
963
  break;
1001
964
  case DOC_TYPE_INDENT:
1002
- cmds.push({
1003
- ind: makeIndent(ind, options),
1004
- mode,
1005
- doc: doc2.contents
1006
- });
965
+ cmds.push({ ind: makeIndent(ind, options), mode, doc: doc2.contents });
1007
966
  break;
1008
967
  case DOC_TYPE_ALIGN:
1009
968
  cmds.push({
@@ -1026,13 +985,10 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
1026
985
  });
1027
986
  break;
1028
987
  }
988
+ // fallthrough
1029
989
  case MODE_BREAK: {
1030
990
  shouldRemeasure = false;
1031
- const next = {
1032
- ind,
1033
- mode: MODE_FLAT,
1034
- doc: doc2.contents
1035
- };
991
+ const next = { ind, mode: MODE_FLAT, doc: doc2.contents };
1036
992
  const rem = width - pos;
1037
993
  const hasLineSuffix = lineSuffix2.length > 0;
1038
994
  if (!doc2.break && fits(next, cmds, rem, hasLineSuffix, groupModeMap)) {
@@ -1046,28 +1002,16 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
1046
1002
  -1
1047
1003
  );
1048
1004
  if (doc2.break) {
1049
- cmds.push({
1050
- ind,
1051
- mode: MODE_BREAK,
1052
- doc: mostExpanded
1053
- });
1005
+ cmds.push({ ind, mode: MODE_BREAK, doc: mostExpanded });
1054
1006
  break;
1055
1007
  } else {
1056
1008
  for (let i = 1; i < doc2.expandedStates.length + 1; i++) {
1057
1009
  if (i >= doc2.expandedStates.length) {
1058
- cmds.push({
1059
- ind,
1060
- mode: MODE_BREAK,
1061
- doc: mostExpanded
1062
- });
1010
+ cmds.push({ ind, mode: MODE_BREAK, doc: mostExpanded });
1063
1011
  break;
1064
1012
  } else {
1065
1013
  const state = doc2.expandedStates[i];
1066
- const cmd = {
1067
- ind,
1068
- mode: MODE_FLAT,
1069
- doc: state
1070
- };
1014
+ const cmd = { ind, mode: MODE_FLAT, doc: state };
1071
1015
  if (fits(cmd, cmds, rem, hasLineSuffix, groupModeMap)) {
1072
1016
  cmds.push(cmd);
1073
1017
  break;
@@ -1076,11 +1020,7 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
1076
1020
  }
1077
1021
  }
1078
1022
  } else {
1079
- cmds.push({
1080
- ind,
1081
- mode: MODE_BREAK,
1082
- doc: doc2.contents
1083
- });
1023
+ cmds.push({ ind, mode: MODE_BREAK, doc: doc2.contents });
1084
1024
  }
1085
1025
  }
1086
1026
  break;
@@ -1095,29 +1035,46 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
1095
1035
  ).mode;
1096
1036
  }
1097
1037
  break;
1038
+ // Fills each line with as much code as possible before moving to a new
1039
+ // line with the same indentation.
1040
+ //
1041
+ // Expects doc.parts to be an array of alternating content and
1042
+ // whitespace. The whitespace contains the linebreaks.
1043
+ //
1044
+ // For example:
1045
+ // ["I", line, "love", line, "monkeys"]
1046
+ // or
1047
+ // [{ type: group, ... }, softline, { type: group, ... }]
1048
+ //
1049
+ // It uses this parts structure to handle three main layout cases:
1050
+ // * The first two content items fit on the same line without
1051
+ // breaking
1052
+ // -> output the first content item and the whitespace "flat".
1053
+ // * Only the first content item fits on the line without breaking
1054
+ // -> output the first content item "flat" and the whitespace with
1055
+ // "break".
1056
+ // * Neither content item fits on the line without breaking
1057
+ // -> output the first content item and the whitespace with "break".
1098
1058
  case DOC_TYPE_FILL: {
1099
1059
  const rem = width - pos;
1100
1060
  const offset = doc2[DOC_FILL_PRINTED_LENGTH] ?? 0;
1101
- const {
1102
- parts
1103
- } = doc2;
1061
+ const { parts } = doc2;
1104
1062
  const length = parts.length - offset;
1105
1063
  if (length === 0) {
1106
1064
  break;
1107
1065
  }
1108
1066
  const content = parts[offset + 0];
1109
1067
  const whitespace = parts[offset + 1];
1110
- const contentFlatCmd = {
1111
- ind,
1112
- mode: MODE_FLAT,
1113
- doc: content
1114
- };
1115
- const contentBreakCmd = {
1116
- ind,
1117
- mode: MODE_BREAK,
1118
- doc: content
1119
- };
1120
- const contentFits = fits(contentFlatCmd, [], rem, lineSuffix2.length > 0, groupModeMap, true);
1068
+ const contentFlatCmd = { ind, mode: MODE_FLAT, doc: content };
1069
+ const contentBreakCmd = { ind, mode: MODE_BREAK, doc: content };
1070
+ const contentFits = fits(
1071
+ contentFlatCmd,
1072
+ [],
1073
+ rem,
1074
+ lineSuffix2.length > 0,
1075
+ groupModeMap,
1076
+ true
1077
+ );
1121
1078
  if (length === 1) {
1122
1079
  if (contentFits) {
1123
1080
  cmds.push(contentFlatCmd);
@@ -1126,16 +1083,8 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
1126
1083
  }
1127
1084
  break;
1128
1085
  }
1129
- const whitespaceFlatCmd = {
1130
- ind,
1131
- mode: MODE_FLAT,
1132
- doc: whitespace
1133
- };
1134
- const whitespaceBreakCmd = {
1135
- ind,
1136
- mode: MODE_BREAK,
1137
- doc: whitespace
1138
- };
1086
+ const whitespaceFlatCmd = { ind, mode: MODE_FLAT, doc: whitespace };
1087
+ const whitespaceBreakCmd = { ind, mode: MODE_BREAK, doc: whitespace };
1139
1088
  if (length === 2) {
1140
1089
  if (contentFits) {
1141
1090
  cmds.push(whitespaceFlatCmd, contentFlatCmd);
@@ -1148,17 +1097,21 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
1148
1097
  const remainingCmd = {
1149
1098
  ind,
1150
1099
  mode,
1151
- doc: {
1152
- ...doc2,
1153
- [DOC_FILL_PRINTED_LENGTH]: offset + 2
1154
- }
1100
+ doc: { ...doc2, [DOC_FILL_PRINTED_LENGTH]: offset + 2 }
1155
1101
  };
1156
1102
  const firstAndSecondContentFlatCmd = {
1157
1103
  ind,
1158
1104
  mode: MODE_FLAT,
1159
1105
  doc: [content, whitespace, secondContent]
1160
1106
  };
1161
- const firstAndSecondContentFits = fits(firstAndSecondContentFlatCmd, [], rem, lineSuffix2.length > 0, groupModeMap, true);
1107
+ const firstAndSecondContentFits = fits(
1108
+ firstAndSecondContentFlatCmd,
1109
+ [],
1110
+ rem,
1111
+ lineSuffix2.length > 0,
1112
+ groupModeMap,
1113
+ true
1114
+ );
1162
1115
  if (firstAndSecondContentFits) {
1163
1116
  cmds.push(remainingCmd, whitespaceFlatCmd, contentFlatCmd);
1164
1117
  } else if (contentFits) {
@@ -1174,39 +1127,23 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
1174
1127
  if (groupMode === MODE_BREAK) {
1175
1128
  const breakContents = doc2.type === DOC_TYPE_IF_BREAK ? doc2.breakContents : doc2.negate ? doc2.contents : indent(doc2.contents);
1176
1129
  if (breakContents) {
1177
- cmds.push({
1178
- ind,
1179
- mode,
1180
- doc: breakContents
1181
- });
1130
+ cmds.push({ ind, mode, doc: breakContents });
1182
1131
  }
1183
1132
  }
1184
1133
  if (groupMode === MODE_FLAT) {
1185
1134
  const flatContents = doc2.type === DOC_TYPE_IF_BREAK ? doc2.flatContents : doc2.negate ? indent(doc2.contents) : doc2.contents;
1186
1135
  if (flatContents) {
1187
- cmds.push({
1188
- ind,
1189
- mode,
1190
- doc: flatContents
1191
- });
1136
+ cmds.push({ ind, mode, doc: flatContents });
1192
1137
  }
1193
1138
  }
1194
1139
  break;
1195
1140
  }
1196
1141
  case DOC_TYPE_LINE_SUFFIX:
1197
- lineSuffix2.push({
1198
- ind,
1199
- mode,
1200
- doc: doc2.contents
1201
- });
1142
+ lineSuffix2.push({ ind, mode, doc: doc2.contents });
1202
1143
  break;
1203
1144
  case DOC_TYPE_LINE_SUFFIX_BOUNDARY:
1204
1145
  if (lineSuffix2.length > 0) {
1205
- cmds.push({
1206
- ind,
1207
- mode,
1208
- doc: hardlineWithoutBreakParent
1209
- });
1146
+ cmds.push({ ind, mode, doc: hardlineWithoutBreakParent });
1210
1147
  }
1211
1148
  break;
1212
1149
  case DOC_TYPE_LINE:
@@ -1221,13 +1158,10 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
1221
1158
  } else {
1222
1159
  shouldRemeasure = true;
1223
1160
  }
1161
+ // fallthrough
1224
1162
  case MODE_BREAK:
1225
1163
  if (lineSuffix2.length > 0) {
1226
- cmds.push({
1227
- ind,
1228
- mode,
1229
- doc: doc2
1230
- }, ...lineSuffix2.reverse());
1164
+ cmds.push({ ind, mode, doc: doc2 }, ...lineSuffix2.reverse());
1231
1165
  lineSuffix2.length = 0;
1232
1166
  break;
1233
1167
  }
@@ -1248,11 +1182,7 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
1248
1182
  }
1249
1183
  break;
1250
1184
  case DOC_TYPE_LABEL:
1251
- cmds.push({
1252
- ind,
1253
- mode,
1254
- doc: doc2.contents
1255
- });
1185
+ cmds.push({ ind, mode, doc: doc2.contents });
1256
1186
  break;
1257
1187
  case DOC_TYPE_BREAK_PARENT:
1258
1188
  break;
@@ -1266,7 +1196,15 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
1266
1196
  }
1267
1197
  const cursorPlaceholderIndex = out.indexOf(CURSOR_PLACEHOLDER);
1268
1198
  if (cursorPlaceholderIndex !== -1) {
1269
- const otherCursorPlaceholderIndex = out.indexOf(CURSOR_PLACEHOLDER, cursorPlaceholderIndex + 1);
1199
+ const otherCursorPlaceholderIndex = out.indexOf(
1200
+ CURSOR_PLACEHOLDER,
1201
+ cursorPlaceholderIndex + 1
1202
+ );
1203
+ if (otherCursorPlaceholderIndex === -1) {
1204
+ return {
1205
+ formatted: out.filter((char) => char !== CURSOR_PLACEHOLDER).join("")
1206
+ };
1207
+ }
1270
1208
  const beforeCursor = out.slice(0, cursorPlaceholderIndex).join("");
1271
1209
  const aroundCursor = out.slice(cursorPlaceholderIndex + 1, otherCursorPlaceholderIndex).join("");
1272
1210
  const afterCursor = out.slice(otherCursorPlaceholderIndex + 1).join("");
@@ -1276,9 +1214,7 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
1276
1214
  cursorNodeText: aroundCursor
1277
1215
  };
1278
1216
  }
1279
- return {
1280
- formatted: out.join("")
1281
- };
1217
+ return { formatted: out.join("") };
1282
1218
  }
1283
1219
 
1284
1220
  // src/document/public.js