prettier 3.6.1 → 3.7.0

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
@@ -47,22 +47,93 @@
47
47
  utils: () => utils
48
48
  });
49
49
 
50
- // src/document/constants.js
51
- var DOC_TYPE_STRING = "string";
52
- var DOC_TYPE_ARRAY = "array";
53
- var DOC_TYPE_CURSOR = "cursor";
54
- var DOC_TYPE_INDENT = "indent";
55
- var DOC_TYPE_ALIGN = "align";
56
- var DOC_TYPE_TRIM = "trim";
57
- var DOC_TYPE_GROUP = "group";
58
- var DOC_TYPE_FILL = "fill";
59
- var DOC_TYPE_IF_BREAK = "if-break";
60
- var DOC_TYPE_INDENT_IF_BREAK = "indent-if-break";
61
- var DOC_TYPE_LINE_SUFFIX = "line-suffix";
62
- var DOC_TYPE_LINE_SUFFIX_BOUNDARY = "line-suffix-boundary";
63
- var DOC_TYPE_LINE = "line";
64
- var DOC_TYPE_LABEL = "label";
65
- var DOC_TYPE_BREAK_PARENT = "break-parent";
50
+ // scripts/build/shims/shared.js
51
+ var OPTIONAL_OBJECT = 1;
52
+ var createMethodShim = (methodName, getImplementation) => (flags, object, ...arguments_) => {
53
+ if (flags | OPTIONAL_OBJECT && (object === void 0 || object === null)) {
54
+ return;
55
+ }
56
+ const implementation = getImplementation.call(object) ?? object[methodName];
57
+ return implementation.apply(object, arguments_);
58
+ };
59
+
60
+ // scripts/build/shims/method-at.js
61
+ function stringOrArrayAt(index) {
62
+ return this[index < 0 ? this.length + index : index];
63
+ }
64
+ var at = createMethodShim("at", function() {
65
+ if (Array.isArray(this) || typeof this === "string") {
66
+ return stringOrArrayAt;
67
+ }
68
+ });
69
+ var method_at_default = at;
70
+
71
+ // src/utils/noop.js
72
+ var noop = () => {
73
+ };
74
+ var noop_default = noop;
75
+
76
+ // src/document/builders/types.js
77
+ var DOC_TYPE_STRING = (
78
+ /** @type {const} */
79
+ "string"
80
+ );
81
+ var DOC_TYPE_ARRAY = (
82
+ /** @type {const} */
83
+ "array"
84
+ );
85
+ var DOC_TYPE_CURSOR = (
86
+ /** @type {const} */
87
+ "cursor"
88
+ );
89
+ var DOC_TYPE_INDENT = (
90
+ /** @type {const} */
91
+ "indent"
92
+ );
93
+ var DOC_TYPE_ALIGN = (
94
+ /** @type {const} */
95
+ "align"
96
+ );
97
+ var DOC_TYPE_TRIM = (
98
+ /** @type {const} */
99
+ "trim"
100
+ );
101
+ var DOC_TYPE_GROUP = (
102
+ /** @type {const} */
103
+ "group"
104
+ );
105
+ var DOC_TYPE_FILL = (
106
+ /** @type {const} */
107
+ "fill"
108
+ );
109
+ var DOC_TYPE_IF_BREAK = (
110
+ /** @type {const} */
111
+ "if-break"
112
+ );
113
+ var DOC_TYPE_INDENT_IF_BREAK = (
114
+ /** @type {const} */
115
+ "indent-if-break"
116
+ );
117
+ var DOC_TYPE_LINE_SUFFIX = (
118
+ /** @type {const} */
119
+ "line-suffix"
120
+ );
121
+ var DOC_TYPE_LINE_SUFFIX_BOUNDARY = (
122
+ /** @type {const} */
123
+ "line-suffix-boundary"
124
+ );
125
+ var DOC_TYPE_LINE = (
126
+ /** @type {const} */
127
+ "line"
128
+ );
129
+ var DOC_TYPE_LABEL = (
130
+ /** @type {const} */
131
+ "label"
132
+ );
133
+ var DOC_TYPE_BREAK_PARENT = (
134
+ /** @type {const} */
135
+ "break-parent"
136
+ );
66
137
  var VALID_OBJECT_DOC_TYPES = /* @__PURE__ */ new Set([
67
138
  DOC_TYPE_CURSOR,
68
139
  DOC_TYPE_INDENT,
@@ -79,18 +150,6 @@
79
150
  DOC_TYPE_BREAK_PARENT
80
151
  ]);
81
152
 
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
-
94
153
  // node_modules/trim-newlines/index.js
95
154
  function trimNewlinesEnd(string) {
96
155
  let end = string.length;
@@ -100,7 +159,7 @@
100
159
  return end < string.length ? string.slice(0, end) : string;
101
160
  }
102
161
 
103
- // src/document/utils/get-doc-type.js
162
+ // src/document/utilities/get-doc-type.js
104
163
  function getDocType(doc) {
105
164
  if (typeof doc === "string") {
106
165
  return DOC_TYPE_STRING;
@@ -118,7 +177,7 @@
118
177
  }
119
178
  var get_doc_type_default = getDocType;
120
179
 
121
- // src/document/invalid-doc-error.js
180
+ // src/document/utilities/invalid-doc-error.js
122
181
  var disjunctionListFormat = (list) => new Intl.ListFormat("en-US", { type: "disjunction" }).format(list);
123
182
  function getDocErrorMessage(doc) {
124
183
  const type = doc === null ? "null" : typeof doc;
@@ -148,7 +207,7 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
148
207
  };
149
208
  var invalid_doc_error_default = InvalidDocError;
150
209
 
151
- // src/document/utils/traverse-doc.js
210
+ // src/document/utilities/traverse-doc.js
152
211
  var traverseDocOnExitStackMarker = {};
153
212
  function traverseDoc(doc, onEnter, onExit, shouldTraverseConditionalGroups) {
154
213
  const docsStack = [doc];
@@ -165,7 +224,7 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
165
224
  if (!docType) {
166
225
  throw new invalid_doc_error_default(doc2);
167
226
  }
168
- if ((onEnter == null ? void 0 : onEnter(doc2)) === false) {
227
+ if (onEnter?.(doc2) === false) {
169
228
  continue;
170
229
  }
171
230
  switch (docType) {
@@ -210,7 +269,7 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
210
269
  }
211
270
  var traverse_doc_default = traverseDoc;
212
271
 
213
- // src/document/utils.js
272
+ // src/document/utilities/index.js
214
273
  function mapDoc(doc, cb) {
215
274
  if (typeof doc === "string") {
216
275
  return cb(doc);
@@ -230,7 +289,10 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
230
289
  case DOC_TYPE_ARRAY:
231
290
  return cb(doc2.map(rec));
232
291
  case DOC_TYPE_FILL:
233
- return cb({ ...doc2, parts: doc2.parts.map(rec) });
292
+ return cb({
293
+ ...doc2,
294
+ parts: doc2.parts.map(rec)
295
+ });
234
296
  case DOC_TYPE_IF_BREAK:
235
297
  return cb({
236
298
  ...doc2,
@@ -238,21 +300,31 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
238
300
  flatContents: rec(doc2.flatContents)
239
301
  });
240
302
  case DOC_TYPE_GROUP: {
241
- let { expandedStates, contents } = doc2;
303
+ let {
304
+ expandedStates,
305
+ contents
306
+ } = doc2;
242
307
  if (expandedStates) {
243
308
  expandedStates = expandedStates.map(rec);
244
309
  contents = expandedStates[0];
245
310
  } else {
246
311
  contents = rec(contents);
247
312
  }
248
- return cb({ ...doc2, contents, expandedStates });
313
+ return cb({
314
+ ...doc2,
315
+ contents,
316
+ expandedStates
317
+ });
249
318
  }
250
319
  case DOC_TYPE_ALIGN:
251
320
  case DOC_TYPE_INDENT:
252
321
  case DOC_TYPE_INDENT_IF_BREAK:
253
322
  case DOC_TYPE_LABEL:
254
323
  case DOC_TYPE_LINE_SUFFIX:
255
- return cb({ ...doc2, contents: rec(doc2.contents) });
324
+ return cb({
325
+ ...doc2,
326
+ contents: rec(doc2.contents)
327
+ });
256
328
  case DOC_TYPE_STRING:
257
329
  case DOC_TYPE_CURSOR:
258
330
  case DOC_TYPE_TRIM:
@@ -297,9 +369,9 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
297
369
  }
298
370
  function breakParentGroup(groupStack) {
299
371
  if (groupStack.length > 0) {
300
- const parentGroup = at_default(
301
- /* isOptionalObject */
302
- false,
372
+ const parentGroup = method_at_default(
373
+ /* OPTIONAL_OBJECT: false */
374
+ 0,
303
375
  groupStack,
304
376
  -1
305
377
  );
@@ -354,23 +426,23 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
354
426
  }
355
427
  function stripTrailingHardlineFromParts(parts) {
356
428
  parts = [...parts];
357
- while (parts.length >= 2 && at_default(
358
- /* isOptionalObject */
359
- false,
429
+ while (parts.length >= 2 && method_at_default(
430
+ /* OPTIONAL_OBJECT: false */
431
+ 0,
360
432
  parts,
361
433
  -2
362
- ).type === DOC_TYPE_LINE && at_default(
363
- /* isOptionalObject */
364
- false,
434
+ ).type === DOC_TYPE_LINE && method_at_default(
435
+ /* OPTIONAL_OBJECT: false */
436
+ 0,
365
437
  parts,
366
438
  -1
367
439
  ).type === DOC_TYPE_BREAK_PARENT) {
368
440
  parts.length -= 2;
369
441
  }
370
442
  if (parts.length > 0) {
371
- const lastPart = stripTrailingHardlineFromDoc(at_default(
372
- /* isOptionalObject */
373
- false,
443
+ const lastPart = stripTrailingHardlineFromDoc(method_at_default(
444
+ /* OPTIONAL_OBJECT: false */
445
+ 0,
374
446
  parts,
375
447
  -1
376
448
  ));
@@ -386,7 +458,10 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
386
458
  case DOC_TYPE_LINE_SUFFIX:
387
459
  case DOC_TYPE_LABEL: {
388
460
  const contents = stripTrailingHardlineFromDoc(doc.contents);
389
- return { ...doc, contents };
461
+ return {
462
+ ...doc,
463
+ contents
464
+ };
390
465
  }
391
466
  case DOC_TYPE_IF_BREAK:
392
467
  return {
@@ -395,7 +470,10 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
395
470
  flatContents: stripTrailingHardlineFromDoc(doc.flatContents)
396
471
  };
397
472
  case DOC_TYPE_FILL:
398
- return { ...doc, parts: stripTrailingHardlineFromParts(doc.parts) };
473
+ return {
474
+ ...doc,
475
+ parts: stripTrailingHardlineFromParts(doc.parts)
476
+ };
399
477
  case DOC_TYPE_ARRAY:
400
478
  return stripTrailingHardlineFromParts(doc);
401
479
  case DOC_TYPE_STRING:
@@ -450,9 +528,9 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
450
528
  continue;
451
529
  }
452
530
  const [currentPart, ...restParts] = Array.isArray(part) ? part : [part];
453
- if (typeof currentPart === "string" && typeof at_default(
454
- /* isOptionalObject */
455
- false,
531
+ if (typeof currentPart === "string" && typeof method_at_default(
532
+ /* OPTIONAL_OBJECT: false */
533
+ 0,
456
534
  parts,
457
535
  -1
458
536
  ) === "string") {
@@ -487,10 +565,7 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
487
565
  return mapDoc(doc, (currentDoc) => cleanDocFn(currentDoc));
488
566
  }
489
567
  function replaceEndOfLine(doc, replacement = literalline) {
490
- return mapDoc(
491
- doc,
492
- (currentDoc) => typeof currentDoc === "string" ? join(replacement, currentDoc.split("\n")) : currentDoc
493
- );
568
+ return mapDoc(doc, (currentDoc) => typeof currentDoc === "string" ? join(replacement, currentDoc.split("\n")) : currentDoc);
494
569
  }
495
570
  function canBreakFn(doc) {
496
571
  if (doc.type === DOC_TYPE_LINE) {
@@ -501,39 +576,46 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
501
576
  return findInDoc(doc, canBreakFn, false);
502
577
  }
503
578
 
504
- // src/document/utils/assert-doc.js
505
- var noop = () => {
506
- };
507
- var assertDoc = true ? noop : function(doc) {
508
- traverse_doc_default(doc, (doc2) => {
509
- if (checked.has(doc2)) {
510
- return false;
511
- }
512
- if (typeof doc2 !== "string") {
579
+ // src/document/utilities/assert-doc.js
580
+ var assertDoc = true ? noop_default : (
581
+ /**
582
+ @param {Doc} doc
583
+ */
584
+ function(doc) {
585
+ traverse_doc_default(doc, (doc2) => {
586
+ if (typeof doc2 === "string" || checked.has(doc2)) {
587
+ return false;
588
+ }
513
589
  checked.add(doc2);
514
- }
515
- });
516
- };
517
- var assertDocArray = true ? noop : function(docs, optional = false) {
518
- if (optional && !docs) {
519
- return;
520
- }
521
- if (!Array.isArray(docs)) {
522
- throw new TypeError("Unexpected doc array.");
590
+ });
523
591
  }
524
- for (const doc of docs) {
525
- assertDoc(doc);
592
+ );
593
+ var assertDocArray = true ? noop_default : (
594
+ /**
595
+ @param {readonly Doc[]} docs
596
+ @param {boolean} [optional = false]
597
+ */
598
+ function(docs, optional = false) {
599
+ if (optional && !docs) {
600
+ return;
601
+ }
602
+ if (!Array.isArray(docs)) {
603
+ throw new TypeError("Unexpected doc array.");
604
+ }
605
+ for (const doc of docs) {
606
+ assertDoc(doc);
607
+ }
526
608
  }
527
- };
528
- var assertDocFillParts = true ? noop : (
609
+ );
610
+ var assertDocFillParts = true ? noop_default : (
529
611
  /**
530
- * @param {Doc[]} parts
531
- */
612
+ @param {readonly Doc[]} parts
613
+ */
532
614
  function(parts) {
533
615
  assertDocArray(parts);
534
- if (parts.length > 1 && isEmptyDoc(at_default(
535
- /* isOptionalObject */
536
- false,
616
+ if (parts.length > 1 && isEmptyDoc(method_at_default(
617
+ /* OPTIONAL_OBJECT: false */
618
+ 0,
537
619
  parts,
538
620
  -1
539
621
  ))) {
@@ -542,37 +624,28 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
542
624
  for (const [i, doc] of parts.entries()) {
543
625
  if (i % 2 === 1 && !isValidSeparator(doc)) {
544
626
  const type = get_doc_type_default(doc);
545
- throw new Error(
546
- `Unexpected non-line-break doc at ${i}. Doc type is ${type}.`
547
- );
627
+ throw new Error(`Unexpected non-line-break doc at ${i}. Doc type is ${type}.`);
548
628
  }
549
629
  }
550
630
  }
551
631
  );
632
+ var assertAlignType = true ? noop_default : function(alignType) {
633
+ if (!(typeof alignType === "number" || typeof alignType === "string" || alignType?.type === "root")) {
634
+ throw new TypeError(`Invalid alignType '${alignType}'.`);
635
+ }
636
+ };
552
637
 
553
- // src/document/builders.js
638
+ // src/document/builders/indent.js
554
639
  function indent(contents) {
555
640
  assertDoc(contents);
556
641
  return { type: DOC_TYPE_INDENT, contents };
557
642
  }
558
- function align(widthOrString, contents) {
559
- assertDoc(contents);
560
- return { type: DOC_TYPE_ALIGN, contents, n: widthOrString };
561
- }
562
- function group(contents, opts = {}) {
643
+
644
+ // src/document/builders/align.js
645
+ function align(alignType, contents) {
646
+ assertAlignType(alignType);
563
647
  assertDoc(contents);
564
- assertDocArray(
565
- opts.expandedStates,
566
- /* optional */
567
- true
568
- );
569
- return {
570
- type: DOC_TYPE_GROUP,
571
- id: opts.id,
572
- contents,
573
- break: Boolean(opts.shouldBreak),
574
- expandedStates: opts.expandedStates
575
- };
648
+ return { type: DOC_TYPE_ALIGN, contents, n: alignType };
576
649
  }
577
650
  function dedentToRoot(contents) {
578
651
  return align(Number.NEGATIVE_INFINITY, contents);
@@ -583,14 +656,53 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
583
656
  function dedent(contents) {
584
657
  return align(-1, contents);
585
658
  }
586
- function conditionalGroup(states, opts) {
587
- return group(states[0], { ...opts, expandedStates: states });
659
+ function addAlignmentToDoc(doc, size, tabWidth) {
660
+ assertDoc(doc);
661
+ let aligned = doc;
662
+ if (size > 0) {
663
+ for (let level = 0; level < Math.floor(size / tabWidth); ++level) {
664
+ aligned = indent(aligned);
665
+ }
666
+ aligned = align(size % tabWidth, aligned);
667
+ aligned = align(Number.NEGATIVE_INFINITY, aligned);
668
+ }
669
+ return aligned;
588
670
  }
671
+
672
+ // src/document/builders/break-parent.js
673
+ var breakParent = { type: DOC_TYPE_BREAK_PARENT };
674
+
675
+ // src/document/builders/cursor.js
676
+ var cursor = { type: DOC_TYPE_CURSOR };
677
+
678
+ // src/document/builders/fill.js
589
679
  function fill(parts) {
590
680
  assertDocFillParts(parts);
591
681
  return { type: DOC_TYPE_FILL, parts };
592
682
  }
593
- function ifBreak(breakContents, flatContents = "", opts = {}) {
683
+
684
+ // src/document/builders/group.js
685
+ function group(contents, options = {}) {
686
+ assertDoc(contents);
687
+ assertDocArray(
688
+ options.expandedStates,
689
+ /* optional */
690
+ true
691
+ );
692
+ return {
693
+ type: DOC_TYPE_GROUP,
694
+ id: options.id,
695
+ contents,
696
+ break: Boolean(options.shouldBreak),
697
+ expandedStates: options.expandedStates
698
+ };
699
+ }
700
+ function conditionalGroup(states, options) {
701
+ return group(states[0], { ...options, expandedStates: states });
702
+ }
703
+
704
+ // src/document/builders/if-break.js
705
+ function ifBreak(breakContents, flatContents = "", options = {}) {
594
706
  assertDoc(breakContents);
595
707
  if (flatContents !== "") {
596
708
  assertDoc(flatContents);
@@ -599,36 +711,22 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
599
711
  type: DOC_TYPE_IF_BREAK,
600
712
  breakContents,
601
713
  flatContents,
602
- groupId: opts.groupId
714
+ groupId: options.groupId
603
715
  };
604
716
  }
605
- function indentIfBreak(contents, opts) {
717
+
718
+ // src/document/builders/indent-if-break.js
719
+ function indentIfBreak(contents, options) {
606
720
  assertDoc(contents);
607
721
  return {
608
722
  type: DOC_TYPE_INDENT_IF_BREAK,
609
723
  contents,
610
- groupId: opts.groupId,
611
- negate: opts.negate
724
+ groupId: options.groupId,
725
+ negate: options.negate
612
726
  };
613
727
  }
614
- function lineSuffix(contents) {
615
- assertDoc(contents);
616
- return { type: DOC_TYPE_LINE_SUFFIX, contents };
617
- }
618
- var lineSuffixBoundary = { type: DOC_TYPE_LINE_SUFFIX_BOUNDARY };
619
- var breakParent = { type: DOC_TYPE_BREAK_PARENT };
620
- var trim = { type: DOC_TYPE_TRIM };
621
- var hardlineWithoutBreakParent = { type: DOC_TYPE_LINE, hard: true };
622
- var literallineWithoutBreakParent = {
623
- type: DOC_TYPE_LINE,
624
- hard: true,
625
- literal: true
626
- };
627
- var line = { type: DOC_TYPE_LINE };
628
- var softline = { type: DOC_TYPE_LINE, soft: true };
629
- var hardline = [hardlineWithoutBreakParent, breakParent];
630
- var literalline = [literallineWithoutBreakParent, breakParent];
631
- var cursor = { type: DOC_TYPE_CURSOR };
728
+
729
+ // src/document/builders/join.js
632
730
  function join(separator, docs) {
633
731
  assertDoc(separator);
634
732
  assertDocArray(docs);
@@ -641,37 +739,50 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
641
739
  }
642
740
  return parts;
643
741
  }
644
- function addAlignmentToDoc(doc, size, tabWidth) {
645
- assertDoc(doc);
646
- let aligned = doc;
647
- if (size > 0) {
648
- for (let i = 0; i < Math.floor(size / tabWidth); ++i) {
649
- aligned = indent(aligned);
650
- }
651
- aligned = align(size % tabWidth, aligned);
652
- aligned = align(Number.NEGATIVE_INFINITY, aligned);
653
- }
654
- return aligned;
655
- }
742
+
743
+ // src/document/builders/label.js
656
744
  function label(label2, contents) {
657
745
  assertDoc(contents);
658
746
  return label2 ? { type: DOC_TYPE_LABEL, label: label2, contents } : contents;
659
747
  }
660
748
 
661
- // scripts/build/shims/string-replace-all.js
662
- var stringReplaceAll = (isOptionalObject, original, pattern, replacement) => {
663
- if (isOptionalObject && (original === void 0 || original === null)) {
664
- return;
665
- }
666
- if (original.replaceAll) {
667
- return original.replaceAll(pattern, replacement);
668
- }
749
+ // src/document/builders/line.js
750
+ var line = { type: DOC_TYPE_LINE };
751
+ var softline = { type: DOC_TYPE_LINE, soft: true };
752
+ var hardlineWithoutBreakParent = { type: DOC_TYPE_LINE, hard: true };
753
+ var hardline = [hardlineWithoutBreakParent, breakParent];
754
+ var literallineWithoutBreakParent = {
755
+ type: DOC_TYPE_LINE,
756
+ hard: true,
757
+ literal: true
758
+ };
759
+ var literalline = [literallineWithoutBreakParent, breakParent];
760
+
761
+ // src/document/builders/line-suffix.js
762
+ function lineSuffix(contents) {
763
+ assertDoc(contents);
764
+ return { type: DOC_TYPE_LINE_SUFFIX, contents };
765
+ }
766
+
767
+ // src/document/builders/line-suffix-boundary.js
768
+ var lineSuffixBoundary = { type: DOC_TYPE_LINE_SUFFIX_BOUNDARY };
769
+
770
+ // src/document/builders/trim.js
771
+ var trim = { type: DOC_TYPE_TRIM };
772
+
773
+ // scripts/build/shims/method-replace-all.js
774
+ var stringReplaceAll = String.prototype.replaceAll ?? function(pattern, replacement) {
669
775
  if (pattern.global) {
670
- return original.replace(pattern, replacement);
776
+ return this.replace(pattern, replacement);
671
777
  }
672
- return original.split(pattern).join(replacement);
778
+ return this.split(pattern).join(replacement);
673
779
  };
674
- var string_replace_all_default = stringReplaceAll;
780
+ var replaceAll = createMethodShim("replaceAll", function() {
781
+ if (typeof this === "string") {
782
+ return stringReplaceAll;
783
+ }
784
+ });
785
+ var method_replace_all_default = replaceAll;
675
786
 
676
787
  // src/common/end-of-line.js
677
788
  function convertEndOfLineToChars(value) {
@@ -687,7 +798,7 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
687
798
 
688
799
  // node_modules/emoji-regex/index.mjs
689
800
  var emoji_regex_default = () => {
690
- 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;
801
+ 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-\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-\uDED8\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]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\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]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\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]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\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]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\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]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?))?|\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]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF]|\uDEEF\u200D\uD83D\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]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF]|\uDEEF\u200D\uD83D\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]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uDEEF\u200D\uD83D\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]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF]|\uDEEF\u200D\uD83D\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]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFE])))?))?|\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\uDD3C-\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-\uDE8A\uDE8E-\uDEC2\uDEC6\uDEC8\uDECD-\uDEDC\uDEDF-\uDEEA\uDEEF]|\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\uDE70]|\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]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFC-\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]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\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]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\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]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\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]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE])))?))?|\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;
691
802
  };
692
803
 
693
804
  // node_modules/get-east-asian-width/lookup.js
@@ -695,14 +806,15 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
695
806
  return x === 12288 || x >= 65281 && x <= 65376 || x >= 65504 && x <= 65510;
696
807
  }
697
808
  function isWide(x) {
698
- 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;
809
+ 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 <= 94198 || x >= 94208 && x <= 101589 || x >= 101631 && x <= 101662 || x >= 101760 && x <= 101874 || 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 <= 128728 || 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 <= 129674 || x >= 129678 && x <= 129734 || x === 129736 || x >= 129741 && x <= 129756 || x >= 129759 && x <= 129770 || x >= 129775 && x <= 129784 || x >= 131072 && x <= 196605 || x >= 196608 && x <= 262141;
699
810
  }
700
811
 
701
- // node_modules/get-east-asian-width/index.js
702
- var _isNarrowWidth = (codePoint) => !(isFullWidth(codePoint) || isWide(codePoint));
812
+ // src/utils/narrow-emojis.evaluate.js
813
+ var narrow_emojis_evaluate_default = "\xA9\xAE\u203C\u2049\u2122\u2139\u2194\u2195\u2196\u2197\u2198\u2199\u21A9\u21AA\u2328\u23CF\u23F1\u23F2\u23F8\u23F9\u23FA\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600\u2601\u2602\u2603\u2604\u260E\u2611\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638\u2639\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694\u2695\u2696\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F1\u26F7\u26F8\u26F9\u2702\u2708\u2709\u270C\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u2764\u27A1\u2934\u2935\u2B05\u2B06\u2B07";
703
814
 
704
815
  // src/utils/get-string-width.js
705
816
  var notAsciiRegex = /[^\x20-\x7F]/u;
817
+ var narrowEmojisSet = new Set(narrow_emojis_evaluate_default);
706
818
  function getStringWidth(text) {
707
819
  if (!text) {
708
820
  return 0;
@@ -710,7 +822,10 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
710
822
  if (!notAsciiRegex.test(text)) {
711
823
  return text.length;
712
824
  }
713
- text = text.replace(emoji_regex_default(), " ");
825
+ text = text.replace(
826
+ emoji_regex_default(),
827
+ (match) => narrowEmojisSet.has(match) ? " " : " "
828
+ );
714
829
  let width = 0;
715
830
  for (const character of text) {
716
831
  const codePoint = character.codePointAt(0);
@@ -720,48 +835,39 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
720
835
  if (codePoint >= 768 && codePoint <= 879) {
721
836
  continue;
722
837
  }
723
- width += _isNarrowWidth(codePoint) ? 1 : 2;
838
+ if (codePoint >= 65024 && codePoint <= 65039) {
839
+ continue;
840
+ }
841
+ width += isFullWidth(codePoint) || isWide(codePoint) ? 2 : 1;
724
842
  }
725
843
  return width;
726
844
  }
727
845
  var get_string_width_default = getStringWidth;
728
846
 
729
- // src/document/printer.js
730
- var MODE_BREAK = Symbol("MODE_BREAK");
731
- var MODE_FLAT = Symbol("MODE_FLAT");
732
- var CURSOR_PLACEHOLDER = Symbol("cursor");
733
- var DOC_FILL_PRINTED_LENGTH = Symbol("DOC_FILL_PRINTED_LENGTH");
734
- function rootIndent() {
735
- return { value: "", length: 0, queue: [] };
736
- }
737
- function makeIndent(ind, options) {
738
- return generateInd(ind, { type: "indent" }, options);
739
- }
740
- function makeAlign(indent2, widthOrDoc, options) {
741
- if (widthOrDoc === Number.NEGATIVE_INFINITY) {
742
- return indent2.root || rootIndent();
743
- }
744
- if (widthOrDoc < 0) {
745
- return generateInd(indent2, { type: "dedent" }, options);
847
+ // src/document/printer/indent.js
848
+ var INDENT_COMMAND_TYPE_INDENT = 0;
849
+ var INDENT_COMMAND_TYPE_DEDENT = 1;
850
+ var INDENT_COMMAND_TYPE_WIDTH = 2;
851
+ var INDENT_COMMAND_TYPE_STRING = 3;
852
+ var INDENT_COMMAND_INDENT = { type: INDENT_COMMAND_TYPE_INDENT };
853
+ var INDENT_COMMAND_DEDENT = { type: INDENT_COMMAND_TYPE_DEDENT };
854
+ var ROOT_INDENT = {
855
+ value: "",
856
+ length: 0,
857
+ queue: [],
858
+ get root() {
859
+ return ROOT_INDENT;
746
860
  }
747
- if (!widthOrDoc) {
748
- return indent2;
749
- }
750
- if (widthOrDoc.type === "root") {
751
- return { ...indent2, root: indent2 };
752
- }
753
- const alignType = typeof widthOrDoc === "string" ? "stringAlign" : "numberAlign";
754
- return generateInd(indent2, { type: alignType, n: widthOrDoc }, options);
755
- }
756
- function generateInd(ind, newPart, options) {
757
- const queue = newPart.type === "dedent" ? ind.queue.slice(0, -1) : [...ind.queue, newPart];
861
+ };
862
+ function generateIndent(indent2, command, options) {
863
+ const queue = command.type === INDENT_COMMAND_TYPE_DEDENT ? indent2.queue.slice(0, -1) : [...indent2.queue, command];
758
864
  let value = "";
759
865
  let length = 0;
760
866
  let lastTabs = 0;
761
867
  let lastSpaces = 0;
762
- for (const part of queue) {
763
- switch (part.type) {
764
- case "indent":
868
+ for (const command2 of queue) {
869
+ switch (command2.type) {
870
+ case INDENT_COMMAND_TYPE_INDENT:
765
871
  flush();
766
872
  if (options.useTabs) {
767
873
  addTabs(1);
@@ -769,21 +875,25 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
769
875
  addSpaces(options.tabWidth);
770
876
  }
771
877
  break;
772
- case "stringAlign":
878
+ case INDENT_COMMAND_TYPE_STRING: {
879
+ const { string } = command2;
773
880
  flush();
774
- value += part.n;
775
- length += part.n.length;
881
+ value += string;
882
+ length += string.length;
776
883
  break;
777
- case "numberAlign":
884
+ }
885
+ case INDENT_COMMAND_TYPE_WIDTH: {
886
+ const { width } = command2;
778
887
  lastTabs += 1;
779
- lastSpaces += part.n;
888
+ lastSpaces += width;
780
889
  break;
890
+ }
781
891
  default:
782
- throw new Error(`Unexpected type '${part.type}'`);
892
+ throw new Error(`Unexpected indent comment '${command2.type}'.`);
783
893
  }
784
894
  }
785
895
  flushSpaces();
786
- return { ...ind, value, length, queue };
896
+ return { ...indent2, value, length, queue };
787
897
  function addTabs(count) {
788
898
  value += " ".repeat(count);
789
899
  length += options.tabWidth * count;
@@ -816,65 +926,97 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
816
926
  lastSpaces = 0;
817
927
  }
818
928
  }
819
- function trim2(out) {
820
- let trimCount = 0;
821
- let cursorCount = 0;
822
- let outIndex = out.length;
823
- outer: while (outIndex--) {
824
- const last = out[outIndex];
825
- if (last === CURSOR_PLACEHOLDER) {
826
- cursorCount++;
827
- continue;
828
- }
829
- if (false) {
830
- throw new Error(`Unexpected value in trim: '${typeof last}'`);
831
- }
832
- for (let charIndex = last.length - 1; charIndex >= 0; charIndex--) {
833
- const char = last[charIndex];
834
- if (char === " " || char === " ") {
835
- trimCount++;
836
- } else {
837
- out[outIndex] = last.slice(0, charIndex + 1);
838
- break outer;
839
- }
929
+ function makeAlign(indent2, indentOptions, options) {
930
+ if (!indentOptions) {
931
+ return indent2;
932
+ }
933
+ if (indentOptions.type === "root") {
934
+ return { ...indent2, root: indent2 };
935
+ }
936
+ if (indentOptions === Number.NEGATIVE_INFINITY) {
937
+ return indent2.root;
938
+ }
939
+ let command;
940
+ if (typeof indentOptions === "number") {
941
+ if (indentOptions < 0) {
942
+ command = INDENT_COMMAND_DEDENT;
943
+ } else {
944
+ command = { type: INDENT_COMMAND_TYPE_WIDTH, width: indentOptions };
840
945
  }
946
+ } else {
947
+ command = { type: INDENT_COMMAND_TYPE_STRING, string: indentOptions };
841
948
  }
842
- if (trimCount > 0 || cursorCount > 0) {
843
- out.length = outIndex + 1;
844
- while (cursorCount-- > 0) {
845
- out.push(CURSOR_PLACEHOLDER);
949
+ return generateIndent(indent2, command, options);
950
+ }
951
+ function makeIndent(indent2, options) {
952
+ return generateIndent(indent2, INDENT_COMMAND_INDENT, options);
953
+ }
954
+
955
+ // src/document/printer/trim-indentation.js
956
+ function getTrailingIndentionLength(text) {
957
+ let length = 0;
958
+ for (let index = text.length - 1; index >= 0; index--) {
959
+ const character = text[index];
960
+ if (character === " " || character === " ") {
961
+ length++;
962
+ } else {
963
+ break;
846
964
  }
847
965
  }
848
- return trimCount;
966
+ return length;
849
967
  }
850
- function fits(next, restCommands, width, hasLineSuffix, groupModeMap, mustBeFlat) {
851
- if (width === Number.POSITIVE_INFINITY) {
968
+ function trimIndentation(text) {
969
+ const length = getTrailingIndentionLength(text);
970
+ const trimmed = length === 0 ? text : text.slice(0, text.length - length);
971
+ return { text: trimmed, count: length };
972
+ }
973
+
974
+ // src/document/printer/printer.js
975
+ var MODE_BREAK = Symbol("MODE_BREAK");
976
+ var MODE_FLAT = Symbol("MODE_FLAT");
977
+ var DOC_FILL_PRINTED_LENGTH = Symbol("DOC_FILL_PRINTED_LENGTH");
978
+ function fits(next, restCommands, remainingWidth, hasLineSuffix, groupModeMap, mustBeFlat) {
979
+ if (remainingWidth === Number.POSITIVE_INFINITY) {
852
980
  return true;
853
981
  }
854
- let restIdx = restCommands.length;
855
- const cmds = [next];
856
- const out = [];
857
- while (width >= 0) {
858
- if (cmds.length === 0) {
859
- if (restIdx === 0) {
982
+ let restCommandsIndex = restCommands.length;
983
+ let hasPendingSpace = false;
984
+ const commands = [next];
985
+ let output = "";
986
+ while (remainingWidth >= 0) {
987
+ if (commands.length === 0) {
988
+ if (restCommandsIndex === 0) {
860
989
  return true;
861
990
  }
862
- cmds.push(restCommands[--restIdx]);
991
+ commands.push(restCommands[--restCommandsIndex]);
863
992
  continue;
864
993
  }
865
- const { mode, doc } = cmds.pop();
994
+ const {
995
+ mode,
996
+ doc
997
+ } = commands.pop();
866
998
  const docType = get_doc_type_default(doc);
867
999
  switch (docType) {
868
1000
  case DOC_TYPE_STRING:
869
- out.push(doc);
870
- width -= get_string_width_default(doc);
1001
+ if (doc) {
1002
+ if (hasPendingSpace) {
1003
+ output += " ";
1004
+ remainingWidth -= 1;
1005
+ hasPendingSpace = false;
1006
+ }
1007
+ output += doc;
1008
+ remainingWidth -= get_string_width_default(doc);
1009
+ }
871
1010
  break;
872
1011
  case DOC_TYPE_ARRAY:
873
1012
  case DOC_TYPE_FILL: {
874
1013
  const parts = docType === DOC_TYPE_ARRAY ? doc : doc.parts;
875
1014
  const end = doc[DOC_FILL_PRINTED_LENGTH] ?? 0;
876
- for (let i = parts.length - 1; i >= end; i--) {
877
- cmds.push({ mode, doc: parts[i] });
1015
+ for (let index = parts.length - 1; index >= end; index--) {
1016
+ commands.push({
1017
+ mode,
1018
+ doc: parts[index]
1019
+ });
878
1020
  }
879
1021
  break;
880
1022
  }
@@ -882,30 +1024,45 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
882
1024
  case DOC_TYPE_ALIGN:
883
1025
  case DOC_TYPE_INDENT_IF_BREAK:
884
1026
  case DOC_TYPE_LABEL:
885
- cmds.push({ mode, doc: doc.contents });
1027
+ commands.push({
1028
+ mode,
1029
+ doc: doc.contents
1030
+ });
886
1031
  break;
887
- case DOC_TYPE_TRIM:
888
- width += trim2(out);
1032
+ case DOC_TYPE_TRIM: {
1033
+ const {
1034
+ text,
1035
+ count
1036
+ } = trimIndentation(output);
1037
+ output = text;
1038
+ remainingWidth += count;
889
1039
  break;
1040
+ }
890
1041
  case DOC_TYPE_GROUP: {
891
1042
  if (mustBeFlat && doc.break) {
892
1043
  return false;
893
1044
  }
894
1045
  const groupMode = doc.break ? MODE_BREAK : mode;
895
- const contents = doc.expandedStates && groupMode === MODE_BREAK ? at_default(
896
- /* isOptionalObject */
897
- false,
1046
+ const contents = doc.expandedStates && groupMode === MODE_BREAK ? method_at_default(
1047
+ /* OPTIONAL_OBJECT: false */
1048
+ 0,
898
1049
  doc.expandedStates,
899
1050
  -1
900
1051
  ) : doc.contents;
901
- cmds.push({ mode: groupMode, doc: contents });
1052
+ commands.push({
1053
+ mode: groupMode,
1054
+ doc: contents
1055
+ });
902
1056
  break;
903
1057
  }
904
1058
  case DOC_TYPE_IF_BREAK: {
905
1059
  const groupMode = doc.groupId ? groupModeMap[doc.groupId] || MODE_FLAT : mode;
906
1060
  const contents = groupMode === MODE_BREAK ? doc.breakContents : doc.flatContents;
907
1061
  if (contents) {
908
- cmds.push({ mode, doc: contents });
1062
+ commands.push({
1063
+ mode,
1064
+ doc: contents
1065
+ });
909
1066
  }
910
1067
  break;
911
1068
  }
@@ -914,8 +1071,7 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
914
1071
  return true;
915
1072
  }
916
1073
  if (!doc.soft) {
917
- out.push(" ");
918
- width--;
1074
+ hasPendingSpace = true;
919
1075
  }
920
1076
  break;
921
1077
  case DOC_TYPE_LINE_SUFFIX:
@@ -931,64 +1087,84 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
931
1087
  return false;
932
1088
  }
933
1089
  function printDocToString(doc, options) {
934
- const groupModeMap = {};
1090
+ const groupModeMap = /* @__PURE__ */ Object.create(null);
935
1091
  const width = options.printWidth;
936
1092
  const newLine = convertEndOfLineToChars(options.endOfLine);
937
- let pos = 0;
938
- const cmds = [{ ind: rootIndent(), mode: MODE_BREAK, doc }];
939
- const out = [];
1093
+ let position = 0;
1094
+ const commands = [{
1095
+ indent: ROOT_INDENT,
1096
+ mode: MODE_BREAK,
1097
+ doc
1098
+ }];
1099
+ let out = [];
940
1100
  let shouldRemeasure = false;
941
1101
  const lineSuffix2 = [];
942
- let printedCursorCount = 0;
1102
+ const cursorPositions = [];
943
1103
  propagateBreaks(doc);
944
- while (cmds.length > 0) {
945
- const { ind, mode, doc: doc2 } = cmds.pop();
1104
+ while (commands.length > 0) {
1105
+ const {
1106
+ indent: indent2,
1107
+ mode,
1108
+ doc: doc2
1109
+ } = commands.pop();
946
1110
  switch (get_doc_type_default(doc2)) {
947
1111
  case DOC_TYPE_STRING: {
948
- const formatted = newLine !== "\n" ? string_replace_all_default(
949
- /* isOptionalObject */
950
- false,
1112
+ const formatted2 = newLine !== "\n" ? method_replace_all_default(
1113
+ /* OPTIONAL_OBJECT: false */
1114
+ 0,
951
1115
  doc2,
952
1116
  "\n",
953
1117
  newLine
954
1118
  ) : doc2;
955
- out.push(formatted);
956
- if (cmds.length > 0) {
957
- pos += get_string_width_default(formatted);
1119
+ if (formatted2) {
1120
+ out.push(formatted2);
1121
+ if (commands.length > 0) {
1122
+ position += get_string_width_default(formatted2);
1123
+ }
958
1124
  }
959
1125
  break;
960
1126
  }
961
1127
  case DOC_TYPE_ARRAY:
962
- for (let i = doc2.length - 1; i >= 0; i--) {
963
- cmds.push({ ind, mode, doc: doc2[i] });
1128
+ for (let index = doc2.length - 1; index >= 0; index--) {
1129
+ commands.push({
1130
+ indent: indent2,
1131
+ mode,
1132
+ doc: doc2[index]
1133
+ });
964
1134
  }
965
1135
  break;
966
- case DOC_TYPE_CURSOR:
967
- if (printedCursorCount >= 2) {
1136
+ case DOC_TYPE_CURSOR: {
1137
+ if (cursorPositions.length >= 2) {
968
1138
  throw new Error("There are too many 'cursor' in doc.");
969
1139
  }
970
- out.push(CURSOR_PLACEHOLDER);
971
- printedCursorCount++;
1140
+ const text = out.join("");
1141
+ out = [text];
1142
+ cursorPositions.push(text.length - 1);
972
1143
  break;
1144
+ }
973
1145
  case DOC_TYPE_INDENT:
974
- cmds.push({ ind: makeIndent(ind, options), mode, doc: doc2.contents });
1146
+ commands.push({
1147
+ indent: makeIndent(indent2, options),
1148
+ mode,
1149
+ doc: doc2.contents
1150
+ });
975
1151
  break;
976
1152
  case DOC_TYPE_ALIGN:
977
- cmds.push({
978
- ind: makeAlign(ind, doc2.n, options),
1153
+ commands.push({
1154
+ indent: makeAlign(indent2, doc2.n, options),
979
1155
  mode,
980
1156
  doc: doc2.contents
981
1157
  });
982
1158
  break;
983
1159
  case DOC_TYPE_TRIM:
984
- pos -= trim2(out);
1160
+ trim2();
985
1161
  break;
986
1162
  case DOC_TYPE_GROUP:
987
1163
  switch (mode) {
988
1164
  case MODE_FLAT:
989
1165
  if (!shouldRemeasure) {
990
- cmds.push({
991
- ind,
1166
+ commands.push({
1167
+ indent: indent2,
992
1168
  mode: doc2.break ? MODE_BREAK : MODE_FLAT,
993
1169
  doc: doc2.contents
994
1170
  });
@@ -997,49 +1173,69 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
997
1173
  // fallthrough
998
1174
  case MODE_BREAK: {
999
1175
  shouldRemeasure = false;
1000
- const next = { ind, mode: MODE_FLAT, doc: doc2.contents };
1001
- const rem = width - pos;
1176
+ const next = {
1177
+ indent: indent2,
1178
+ mode: MODE_FLAT,
1179
+ doc: doc2.contents
1180
+ };
1181
+ const remainingWidth = width - position;
1002
1182
  const hasLineSuffix = lineSuffix2.length > 0;
1003
- if (!doc2.break && fits(next, cmds, rem, hasLineSuffix, groupModeMap)) {
1004
- cmds.push(next);
1183
+ if (!doc2.break && fits(next, commands, remainingWidth, hasLineSuffix, groupModeMap)) {
1184
+ commands.push(next);
1005
1185
  } else {
1006
1186
  if (doc2.expandedStates) {
1007
- const mostExpanded = at_default(
1008
- /* isOptionalObject */
1009
- false,
1187
+ const mostExpanded = method_at_default(
1188
+ /* OPTIONAL_OBJECT: false */
1189
+ 0,
1010
1190
  doc2.expandedStates,
1011
1191
  -1
1012
1192
  );
1013
1193
  if (doc2.break) {
1014
- cmds.push({ ind, mode: MODE_BREAK, doc: mostExpanded });
1194
+ commands.push({
1195
+ indent: indent2,
1196
+ mode: MODE_BREAK,
1197
+ doc: mostExpanded
1198
+ });
1015
1199
  break;
1016
1200
  } else {
1017
- for (let i = 1; i < doc2.expandedStates.length + 1; i++) {
1018
- if (i >= doc2.expandedStates.length) {
1019
- cmds.push({ ind, mode: MODE_BREAK, doc: mostExpanded });
1201
+ for (let index = 1; index < doc2.expandedStates.length + 1; index++) {
1202
+ if (index >= doc2.expandedStates.length) {
1203
+ commands.push({
1204
+ indent: indent2,
1205
+ mode: MODE_BREAK,
1206
+ doc: mostExpanded
1207
+ });
1020
1208
  break;
1021
1209
  } else {
1022
- const state = doc2.expandedStates[i];
1023
- const cmd = { ind, mode: MODE_FLAT, doc: state };
1024
- if (fits(cmd, cmds, rem, hasLineSuffix, groupModeMap)) {
1025
- cmds.push(cmd);
1210
+ const state = doc2.expandedStates[index];
1211
+ const cmd = {
1212
+ indent: indent2,
1213
+ mode: MODE_FLAT,
1214
+ doc: state
1215
+ };
1216
+ if (fits(cmd, commands, remainingWidth, hasLineSuffix, groupModeMap)) {
1217
+ commands.push(cmd);
1026
1218
  break;
1027
1219
  }
1028
1220
  }
1029
1221
  }
1030
1222
  }
1031
1223
  } else {
1032
- cmds.push({ ind, mode: MODE_BREAK, doc: doc2.contents });
1224
+ commands.push({
1225
+ indent: indent2,
1226
+ mode: MODE_BREAK,
1227
+ doc: doc2.contents
1228
+ });
1033
1229
  }
1034
1230
  }
1035
1231
  break;
1036
1232
  }
1037
1233
  }
1038
1234
  if (doc2.id) {
1039
- groupModeMap[doc2.id] = at_default(
1040
- /* isOptionalObject */
1041
- false,
1042
- cmds,
1235
+ groupModeMap[doc2.id] = method_at_default(
1236
+ /* OPTIONAL_OBJECT: false */
1237
+ 0,
1238
+ commands,
1043
1239
  -1
1044
1240
  ).mode;
1045
1241
  }
@@ -1065,68 +1261,76 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
1065
1261
  // * Neither content item fits on the line without breaking
1066
1262
  // -> output the first content item and the whitespace with "break".
1067
1263
  case DOC_TYPE_FILL: {
1068
- const rem = width - pos;
1264
+ const remainingWidth = width - position;
1069
1265
  const offset = doc2[DOC_FILL_PRINTED_LENGTH] ?? 0;
1070
- const { parts } = doc2;
1266
+ const {
1267
+ parts
1268
+ } = doc2;
1071
1269
  const length = parts.length - offset;
1072
1270
  if (length === 0) {
1073
1271
  break;
1074
1272
  }
1075
1273
  const content = parts[offset + 0];
1076
1274
  const whitespace = parts[offset + 1];
1077
- const contentFlatCmd = { ind, mode: MODE_FLAT, doc: content };
1078
- const contentBreakCmd = { ind, mode: MODE_BREAK, doc: content };
1079
- const contentFits = fits(
1080
- contentFlatCmd,
1081
- [],
1082
- rem,
1083
- lineSuffix2.length > 0,
1084
- groupModeMap,
1085
- true
1086
- );
1275
+ const contentFlatCommand = {
1276
+ indent: indent2,
1277
+ mode: MODE_FLAT,
1278
+ doc: content
1279
+ };
1280
+ const contentBreakCommand = {
1281
+ indent: indent2,
1282
+ mode: MODE_BREAK,
1283
+ doc: content
1284
+ };
1285
+ const contentFits = fits(contentFlatCommand, [], remainingWidth, lineSuffix2.length > 0, groupModeMap, true);
1087
1286
  if (length === 1) {
1088
1287
  if (contentFits) {
1089
- cmds.push(contentFlatCmd);
1288
+ commands.push(contentFlatCommand);
1090
1289
  } else {
1091
- cmds.push(contentBreakCmd);
1290
+ commands.push(contentBreakCommand);
1092
1291
  }
1093
1292
  break;
1094
1293
  }
1095
- const whitespaceFlatCmd = { ind, mode: MODE_FLAT, doc: whitespace };
1096
- const whitespaceBreakCmd = { ind, mode: MODE_BREAK, doc: whitespace };
1294
+ const whitespaceFlatCommand = {
1295
+ indent: indent2,
1296
+ mode: MODE_FLAT,
1297
+ doc: whitespace
1298
+ };
1299
+ const whitespaceBreakCommand = {
1300
+ indent: indent2,
1301
+ mode: MODE_BREAK,
1302
+ doc: whitespace
1303
+ };
1097
1304
  if (length === 2) {
1098
1305
  if (contentFits) {
1099
- cmds.push(whitespaceFlatCmd, contentFlatCmd);
1306
+ commands.push(whitespaceFlatCommand, contentFlatCommand);
1100
1307
  } else {
1101
- cmds.push(whitespaceBreakCmd, contentBreakCmd);
1308
+ commands.push(whitespaceBreakCommand, contentBreakCommand);
1102
1309
  }
1103
1310
  break;
1104
1311
  }
1105
1312
  const secondContent = parts[offset + 2];
1106
- const remainingCmd = {
1107
- ind,
1313
+ const remainingCommand = {
1314
+ indent: indent2,
1108
1315
  mode,
1109
- doc: { ...doc2, [DOC_FILL_PRINTED_LENGTH]: offset + 2 }
1316
+ doc: {
1317
+ ...doc2,
1318
+ [DOC_FILL_PRINTED_LENGTH]: offset + 2
1319
+ }
1110
1320
  };
1111
- const firstAndSecondContentFlatCmd = {
1112
- ind,
1321
+ const firstAndSecondContentFlatCommand = {
1322
+ indent: indent2,
1113
1323
  mode: MODE_FLAT,
1114
1324
  doc: [content, whitespace, secondContent]
1115
1325
  };
1116
- const firstAndSecondContentFits = fits(
1117
- firstAndSecondContentFlatCmd,
1118
- [],
1119
- rem,
1120
- lineSuffix2.length > 0,
1121
- groupModeMap,
1122
- true
1123
- );
1326
+ const firstAndSecondContentFits = fits(firstAndSecondContentFlatCommand, [], remainingWidth, lineSuffix2.length > 0, groupModeMap, true);
1327
+ commands.push(remainingCommand);
1124
1328
  if (firstAndSecondContentFits) {
1125
- cmds.push(remainingCmd, whitespaceFlatCmd, contentFlatCmd);
1329
+ commands.push(whitespaceFlatCommand, contentFlatCommand);
1126
1330
  } else if (contentFits) {
1127
- cmds.push(remainingCmd, whitespaceBreakCmd, contentFlatCmd);
1331
+ commands.push(whitespaceBreakCommand, contentFlatCommand);
1128
1332
  } else {
1129
- cmds.push(remainingCmd, whitespaceBreakCmd, contentBreakCmd);
1333
+ commands.push(whitespaceBreakCommand, contentBreakCommand);
1130
1334
  }
1131
1335
  break;
1132
1336
  }
@@ -1136,23 +1340,39 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
1136
1340
  if (groupMode === MODE_BREAK) {
1137
1341
  const breakContents = doc2.type === DOC_TYPE_IF_BREAK ? doc2.breakContents : doc2.negate ? doc2.contents : indent(doc2.contents);
1138
1342
  if (breakContents) {
1139
- cmds.push({ ind, mode, doc: breakContents });
1343
+ commands.push({
1344
+ indent: indent2,
1345
+ mode,
1346
+ doc: breakContents
1347
+ });
1140
1348
  }
1141
1349
  }
1142
1350
  if (groupMode === MODE_FLAT) {
1143
1351
  const flatContents = doc2.type === DOC_TYPE_IF_BREAK ? doc2.flatContents : doc2.negate ? indent(doc2.contents) : doc2.contents;
1144
1352
  if (flatContents) {
1145
- cmds.push({ ind, mode, doc: flatContents });
1353
+ commands.push({
1354
+ indent: indent2,
1355
+ mode,
1356
+ doc: flatContents
1357
+ });
1146
1358
  }
1147
1359
  }
1148
1360
  break;
1149
1361
  }
1150
1362
  case DOC_TYPE_LINE_SUFFIX:
1151
- lineSuffix2.push({ ind, mode, doc: doc2.contents });
1363
+ lineSuffix2.push({
1364
+ indent: indent2,
1365
+ mode,
1366
+ doc: doc2.contents
1367
+ });
1152
1368
  break;
1153
1369
  case DOC_TYPE_LINE_SUFFIX_BOUNDARY:
1154
1370
  if (lineSuffix2.length > 0) {
1155
- cmds.push({ ind, mode, doc: hardlineWithoutBreakParent });
1371
+ commands.push({
1372
+ indent: indent2,
1373
+ mode,
1374
+ doc: hardlineWithoutBreakParent
1375
+ });
1156
1376
  }
1157
1377
  break;
1158
1378
  case DOC_TYPE_LINE:
@@ -1161,7 +1381,7 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
1161
1381
  if (!doc2.hard) {
1162
1382
  if (!doc2.soft) {
1163
1383
  out.push(" ");
1164
- pos += 1;
1384
+ position += 1;
1165
1385
  }
1166
1386
  break;
1167
1387
  } else {
@@ -1170,60 +1390,76 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
1170
1390
  // fallthrough
1171
1391
  case MODE_BREAK:
1172
1392
  if (lineSuffix2.length > 0) {
1173
- cmds.push({ ind, mode, doc: doc2 }, ...lineSuffix2.reverse());
1393
+ commands.push({
1394
+ indent: indent2,
1395
+ mode,
1396
+ doc: doc2
1397
+ }, ...lineSuffix2.reverse());
1174
1398
  lineSuffix2.length = 0;
1175
1399
  break;
1176
1400
  }
1177
1401
  if (doc2.literal) {
1178
- if (ind.root) {
1179
- out.push(newLine, ind.root.value);
1180
- pos = ind.root.length;
1181
- } else {
1182
- out.push(newLine);
1183
- pos = 0;
1402
+ out.push(newLine);
1403
+ position = 0;
1404
+ if (indent2.root) {
1405
+ if (indent2.root.value) {
1406
+ out.push(indent2.root.value);
1407
+ }
1408
+ position = indent2.root.length;
1184
1409
  }
1185
1410
  } else {
1186
- pos -= trim2(out);
1187
- out.push(newLine + ind.value);
1188
- pos = ind.length;
1411
+ trim2();
1412
+ out.push(newLine + indent2.value);
1413
+ position = indent2.length;
1189
1414
  }
1190
1415
  break;
1191
1416
  }
1192
1417
  break;
1193
1418
  case DOC_TYPE_LABEL:
1194
- cmds.push({ ind, mode, doc: doc2.contents });
1419
+ commands.push({
1420
+ indent: indent2,
1421
+ mode,
1422
+ doc: doc2.contents
1423
+ });
1195
1424
  break;
1196
1425
  case DOC_TYPE_BREAK_PARENT:
1197
1426
  break;
1198
1427
  default:
1199
1428
  throw new invalid_doc_error_default(doc2);
1200
1429
  }
1201
- if (cmds.length === 0 && lineSuffix2.length > 0) {
1202
- cmds.push(...lineSuffix2.reverse());
1430
+ if (commands.length === 0 && lineSuffix2.length > 0) {
1431
+ commands.push(...lineSuffix2.reverse());
1203
1432
  lineSuffix2.length = 0;
1204
1433
  }
1205
1434
  }
1206
- const cursorPlaceholderIndex = out.indexOf(CURSOR_PLACEHOLDER);
1207
- if (cursorPlaceholderIndex !== -1) {
1208
- const otherCursorPlaceholderIndex = out.indexOf(
1209
- CURSOR_PLACEHOLDER,
1210
- cursorPlaceholderIndex + 1
1211
- );
1212
- if (otherCursorPlaceholderIndex === -1) {
1213
- return {
1214
- formatted: out.filter((char) => char !== CURSOR_PLACEHOLDER).join("")
1215
- };
1216
- }
1217
- const beforeCursor = out.slice(0, cursorPlaceholderIndex).join("");
1218
- const aroundCursor = out.slice(cursorPlaceholderIndex + 1, otherCursorPlaceholderIndex).join("");
1219
- const afterCursor = out.slice(otherCursorPlaceholderIndex + 1).join("");
1435
+ const formatted = out.join("");
1436
+ if (cursorPositions.length !== 2) {
1220
1437
  return {
1221
- formatted: beforeCursor + aroundCursor + afterCursor,
1222
- cursorNodeStart: beforeCursor.length,
1223
- cursorNodeText: aroundCursor
1438
+ formatted
1224
1439
  };
1225
1440
  }
1226
- return { formatted: out.join("") };
1441
+ const cursorNodeStart = cursorPositions[0] + 1;
1442
+ return {
1443
+ formatted,
1444
+ cursorNodeStart,
1445
+ cursorNodeText: formatted.slice(cursorNodeStart, method_at_default(
1446
+ /* OPTIONAL_OBJECT: false */
1447
+ 0,
1448
+ cursorPositions,
1449
+ -1
1450
+ ) + 1)
1451
+ };
1452
+ function trim2() {
1453
+ const {
1454
+ text,
1455
+ count
1456
+ } = trimIndentation(out.join(""));
1457
+ out = [text];
1458
+ position -= count;
1459
+ for (let index = 0; index < cursorPositions.length; index++) {
1460
+ cursorPositions[index] = Math.min(cursorPositions[index], text.length - 1);
1461
+ }
1462
+ }
1227
1463
  }
1228
1464
 
1229
1465
  // src/document/public.js