prettier 3.8.4 → 3.9.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/THIRD-PARTY-NOTICES.md +2233 -279
- package/bin/prettier.cjs +5 -1
- package/doc.js +206 -142
- package/doc.mjs +206 -142
- package/index.cjs +103 -33
- package/index.d.ts +9 -2
- package/index.mjs +8056 -7776
- package/internal/experimental-cli-worker.mjs +22 -107
- package/internal/experimental-cli.mjs +3747 -3965
- package/internal/legacy-cli.mjs +488 -120
- package/package.json +11 -7
- package/plugins/acorn.js +11 -10
- package/plugins/acorn.mjs +11 -10
- package/plugins/angular.js +5 -4
- package/plugins/angular.mjs +5 -4
- package/plugins/babel.js +14 -13
- package/plugins/babel.mjs +14 -13
- package/plugins/estree.js +36 -36
- package/plugins/estree.mjs +36 -36
- package/plugins/flow.js +6 -19
- package/plugins/flow.mjs +6 -19
- package/plugins/glimmer.js +17 -17
- package/plugins/glimmer.mjs +15 -15
- package/plugins/graphql.js +14 -25
- package/plugins/graphql.mjs +14 -25
- package/plugins/html.js +18 -18
- package/plugins/html.mjs +18 -18
- package/plugins/markdown.js +63 -55
- package/plugins/markdown.mjs +63 -55
- package/plugins/meriyah.js +5 -4
- package/plugins/meriyah.mjs +5 -4
- package/plugins/postcss.js +40 -39
- package/plugins/postcss.mjs +40 -39
- package/plugins/typescript.js +16 -15
- package/plugins/typescript.mjs +16 -15
- package/plugins/yaml.js +136 -154
- package/plugins/yaml.mjs +149 -154
- package/standalone.js +28 -28
- package/standalone.mjs +28 -28
package/doc.mjs
CHANGED
|
@@ -26,7 +26,7 @@ var createMethodShim = (methodName, getImplementation) => (flags, object, ...arg
|
|
|
26
26
|
function stringOrArrayAt(index) {
|
|
27
27
|
return this[index < 0 ? this.length + index : index];
|
|
28
28
|
}
|
|
29
|
-
var at = createMethodShim("at", function() {
|
|
29
|
+
var at = /* @__PURE__ */ createMethodShim("at", function() {
|
|
30
30
|
if (Array.isArray(this) || typeof this === "string") {
|
|
31
31
|
return stringOrArrayAt;
|
|
32
32
|
}
|
|
@@ -124,6 +124,15 @@ function trimNewlinesEnd(string) {
|
|
|
124
124
|
return end < string.length ? string.slice(0, end) : string;
|
|
125
125
|
}
|
|
126
126
|
|
|
127
|
+
// src/utilities/get-or-insert.js
|
|
128
|
+
function getOrInsertComputed(map, key, callback) {
|
|
129
|
+
if (!map.has(key)) {
|
|
130
|
+
const value = callback(key);
|
|
131
|
+
map.set(key, value);
|
|
132
|
+
}
|
|
133
|
+
return map.get(key);
|
|
134
|
+
}
|
|
135
|
+
|
|
127
136
|
// src/document/utilities/get-doc-type.js
|
|
128
137
|
function getDocType(doc) {
|
|
129
138
|
if (typeof doc === "string") {
|
|
@@ -242,12 +251,7 @@ function mapDoc(doc, cb) {
|
|
|
242
251
|
const mapped = /* @__PURE__ */ new Map();
|
|
243
252
|
return rec(doc);
|
|
244
253
|
function rec(doc2) {
|
|
245
|
-
|
|
246
|
-
return mapped.get(doc2);
|
|
247
|
-
}
|
|
248
|
-
const result = process2(doc2);
|
|
249
|
-
mapped.set(doc2, result);
|
|
250
|
-
return result;
|
|
254
|
+
return getOrInsertComputed(mapped, doc2, process2);
|
|
251
255
|
}
|
|
252
256
|
function process2(doc2) {
|
|
253
257
|
switch (get_doc_type_default(doc2)) {
|
|
@@ -460,11 +464,18 @@ function stripTrailingHardline(doc) {
|
|
|
460
464
|
}
|
|
461
465
|
function cleanDocFn(doc) {
|
|
462
466
|
switch (get_doc_type_default(doc)) {
|
|
463
|
-
case DOC_TYPE_FILL:
|
|
464
|
-
|
|
467
|
+
case DOC_TYPE_FILL: {
|
|
468
|
+
const {
|
|
469
|
+
parts
|
|
470
|
+
} = doc;
|
|
471
|
+
if (parts.every((part) => part === "")) {
|
|
465
472
|
return "";
|
|
466
473
|
}
|
|
474
|
+
if (parts.length === 1) {
|
|
475
|
+
return parts[0];
|
|
476
|
+
}
|
|
467
477
|
break;
|
|
478
|
+
}
|
|
468
479
|
case DOC_TYPE_GROUP:
|
|
469
480
|
if (!doc.contents && !doc.id && !doc.break && !doc.expandedStates) {
|
|
470
481
|
return "";
|
|
@@ -742,7 +753,7 @@ var stringReplaceAll = String.prototype.replaceAll ?? function(pattern, replacem
|
|
|
742
753
|
}
|
|
743
754
|
return this.split(pattern).join(replacement);
|
|
744
755
|
};
|
|
745
|
-
var replaceAll = createMethodShim("replaceAll", function() {
|
|
756
|
+
var replaceAll = /* @__PURE__ */ createMethodShim("replaceAll", function() {
|
|
746
757
|
if (typeof this === "string") {
|
|
747
758
|
return stringReplaceAll;
|
|
748
759
|
}
|
|
@@ -765,20 +776,73 @@ var emoji_regex_default = () => {
|
|
|
765
776
|
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;
|
|
766
777
|
};
|
|
767
778
|
|
|
779
|
+
// node_modules/get-east-asian-width/lookup-data.js
|
|
780
|
+
var fullwidthMinimalCodePoint = 12288;
|
|
781
|
+
var fullwidthMaximumCodePoint = 65510;
|
|
782
|
+
var fullwidthRanges = [12288, 12288, 65281, 65376, 65504, 65510];
|
|
783
|
+
var wideMinimalCodePoint = 4352;
|
|
784
|
+
var wideMaximumCodePoint = 262141;
|
|
785
|
+
var wideRanges = [4352, 4447, 8986, 8987, 9001, 9002, 9193, 9196, 9200, 9200, 9203, 9203, 9725, 9726, 9748, 9749, 9776, 9783, 9800, 9811, 9855, 9855, 9866, 9871, 9875, 9875, 9889, 9889, 9898, 9899, 9917, 9918, 9924, 9925, 9934, 9934, 9940, 9940, 9962, 9962, 9970, 9971, 9973, 9973, 9978, 9978, 9981, 9981, 9989, 9989, 9994, 9995, 10024, 10024, 10060, 10060, 10062, 10062, 10067, 10069, 10071, 10071, 10133, 10135, 10160, 10160, 10175, 10175, 11035, 11036, 11088, 11088, 11093, 11093, 11904, 11929, 11931, 12019, 12032, 12245, 12272, 12287, 12289, 12350, 12353, 12438, 12441, 12543, 12549, 12591, 12593, 12686, 12688, 12773, 12783, 12830, 12832, 12871, 12880, 42124, 42128, 42182, 43360, 43388, 44032, 55203, 63744, 64255, 65040, 65049, 65072, 65106, 65108, 65126, 65128, 65131, 94176, 94180, 94192, 94198, 94208, 101589, 101631, 101662, 101760, 101874, 110576, 110579, 110581, 110587, 110589, 110590, 110592, 110882, 110898, 110898, 110928, 110930, 110933, 110933, 110948, 110951, 110960, 111355, 119552, 119638, 119648, 119670, 126980, 126980, 127183, 127183, 127374, 127374, 127377, 127386, 127488, 127490, 127504, 127547, 127552, 127560, 127568, 127569, 127584, 127589, 127744, 127776, 127789, 127797, 127799, 127868, 127870, 127891, 127904, 127946, 127951, 127955, 127968, 127984, 127988, 127988, 127992, 128062, 128064, 128064, 128066, 128252, 128255, 128317, 128331, 128334, 128336, 128359, 128378, 128378, 128405, 128406, 128420, 128420, 128507, 128591, 128640, 128709, 128716, 128716, 128720, 128722, 128725, 128728, 128732, 128735, 128747, 128748, 128756, 128764, 128992, 129003, 129008, 129008, 129292, 129338, 129340, 129349, 129351, 129535, 129648, 129660, 129664, 129674, 129678, 129734, 129736, 129736, 129741, 129756, 129759, 129770, 129775, 129784, 131072, 196605, 196608, 262141];
|
|
786
|
+
|
|
787
|
+
// node_modules/get-east-asian-width/utilities.js
|
|
788
|
+
var isInRange = (ranges, codePoint) => {
|
|
789
|
+
let low = 0;
|
|
790
|
+
let high = Math.floor(ranges.length / 2) - 1;
|
|
791
|
+
while (low <= high) {
|
|
792
|
+
const mid = Math.floor((low + high) / 2);
|
|
793
|
+
const i = mid * 2;
|
|
794
|
+
if (codePoint < ranges[i]) {
|
|
795
|
+
high = mid - 1;
|
|
796
|
+
} else if (codePoint > ranges[i + 1]) {
|
|
797
|
+
low = mid + 1;
|
|
798
|
+
} else {
|
|
799
|
+
return true;
|
|
800
|
+
}
|
|
801
|
+
}
|
|
802
|
+
return false;
|
|
803
|
+
};
|
|
804
|
+
|
|
768
805
|
// node_modules/get-east-asian-width/lookup.js
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
806
|
+
var commonCjkCodePoint = 19968;
|
|
807
|
+
var [wideFastPathStart, wideFastPathEnd] = /* @__PURE__ */ findWideFastPathRange(wideRanges);
|
|
808
|
+
function findWideFastPathRange(ranges) {
|
|
809
|
+
let fastPathStart = ranges[0];
|
|
810
|
+
let fastPathEnd = ranges[1];
|
|
811
|
+
for (let index = 0; index < ranges.length; index += 2) {
|
|
812
|
+
const start = ranges[index];
|
|
813
|
+
const end = ranges[index + 1];
|
|
814
|
+
if (commonCjkCodePoint >= start && commonCjkCodePoint <= end) {
|
|
815
|
+
return [start, end];
|
|
816
|
+
}
|
|
817
|
+
if (end - start > fastPathEnd - fastPathStart) {
|
|
818
|
+
fastPathStart = start;
|
|
819
|
+
fastPathEnd = end;
|
|
820
|
+
}
|
|
821
|
+
}
|
|
822
|
+
return [fastPathStart, fastPathEnd];
|
|
774
823
|
}
|
|
824
|
+
var isFullWidth = (codePoint) => {
|
|
825
|
+
if (codePoint < fullwidthMinimalCodePoint || codePoint > fullwidthMaximumCodePoint) {
|
|
826
|
+
return false;
|
|
827
|
+
}
|
|
828
|
+
return isInRange(fullwidthRanges, codePoint);
|
|
829
|
+
};
|
|
830
|
+
var isWide = (codePoint) => {
|
|
831
|
+
if (codePoint >= wideFastPathStart && codePoint <= wideFastPathEnd) {
|
|
832
|
+
return true;
|
|
833
|
+
}
|
|
834
|
+
if (codePoint < wideMinimalCodePoint || codePoint > wideMaximumCodePoint) {
|
|
835
|
+
return false;
|
|
836
|
+
}
|
|
837
|
+
return isInRange(wideRanges, codePoint);
|
|
838
|
+
};
|
|
775
839
|
|
|
776
|
-
//
|
|
777
|
-
var
|
|
840
|
+
// node_modules/narrow-emojis/index.js
|
|
841
|
+
var narrowEmojiRegexp = /^(?:[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u2764\u27A1\u2934\u2935\u2B05-\u2B07]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF3\uDFF5\uDFF7]|\uD83D[\uDC3F\uDC41\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])$/;
|
|
842
|
+
var isNarrowEmojiCharacter = (character) => narrowEmojiRegexp.test(character);
|
|
778
843
|
|
|
779
844
|
// src/utilities/get-string-width.js
|
|
780
|
-
var notAsciiRegex = /[^\x20-\x7F]
|
|
781
|
-
var narrowEmojisSet = new Set(narrow_emojis_evaluate_default);
|
|
845
|
+
var notAsciiRegex = /[^\x20-\x7F]/;
|
|
782
846
|
function getStringWidth(text) {
|
|
783
847
|
if (!text) {
|
|
784
848
|
return 0;
|
|
@@ -786,11 +850,11 @@ function getStringWidth(text) {
|
|
|
786
850
|
if (!notAsciiRegex.test(text)) {
|
|
787
851
|
return text.length;
|
|
788
852
|
}
|
|
789
|
-
text = text.replace(
|
|
790
|
-
emoji_regex_default(),
|
|
791
|
-
(match) => narrowEmojisSet.has(match) ? " " : " "
|
|
792
|
-
);
|
|
793
853
|
let width = 0;
|
|
854
|
+
text = text.replace(emoji_regex_default(), (character) => {
|
|
855
|
+
width += isNarrowEmojiCharacter(character) ? 1 : 2;
|
|
856
|
+
return "";
|
|
857
|
+
});
|
|
794
858
|
for (const character of text) {
|
|
795
859
|
const codePoint = character.codePointAt(0);
|
|
796
860
|
if (codePoint <= 31 || codePoint >= 127 && codePoint <= 159) {
|
|
@@ -935,10 +999,62 @@ function trimIndentation(text) {
|
|
|
935
999
|
return { text: trimmed, count: length };
|
|
936
1000
|
}
|
|
937
1001
|
|
|
1002
|
+
// src/document/printer/print-result.js
|
|
1003
|
+
var printResult = class {
|
|
1004
|
+
/** @type {string[]} */
|
|
1005
|
+
#settledTexts = [];
|
|
1006
|
+
#unsettledText = "";
|
|
1007
|
+
#settledTextLength = 0;
|
|
1008
|
+
/** @type {number[]} */
|
|
1009
|
+
#settledPositions = [];
|
|
1010
|
+
/** @type {number[]} */
|
|
1011
|
+
#unsettledPositions = [];
|
|
1012
|
+
#settle() {
|
|
1013
|
+
const text = this.#unsettledText;
|
|
1014
|
+
if (text !== "") {
|
|
1015
|
+
this.#settledTexts.push(text);
|
|
1016
|
+
this.#settledTextLength += text.length;
|
|
1017
|
+
this.#unsettledText = "";
|
|
1018
|
+
}
|
|
1019
|
+
for (const position of this.#unsettledPositions) {
|
|
1020
|
+
this.#settledPositions.push(Math.min(position, this.#settledTextLength));
|
|
1021
|
+
}
|
|
1022
|
+
this.#unsettledPositions.length = 0;
|
|
1023
|
+
}
|
|
1024
|
+
markPosition() {
|
|
1025
|
+
if (this.#settledPositions.length + this.#unsettledPositions.length >= 2) {
|
|
1026
|
+
throw new Error("There are too many 'cursor' in doc.");
|
|
1027
|
+
}
|
|
1028
|
+
this.#unsettledPositions.push(
|
|
1029
|
+
this.#settledTextLength + this.#unsettledText.length
|
|
1030
|
+
);
|
|
1031
|
+
}
|
|
1032
|
+
/**
|
|
1033
|
+
@param {string} text
|
|
1034
|
+
*/
|
|
1035
|
+
write(text) {
|
|
1036
|
+
this.#unsettledText += text;
|
|
1037
|
+
}
|
|
1038
|
+
trim() {
|
|
1039
|
+
const { text: trimmed, count } = trimIndentation(this.#unsettledText);
|
|
1040
|
+
this.#unsettledText = trimmed;
|
|
1041
|
+
this.#settle();
|
|
1042
|
+
return count;
|
|
1043
|
+
}
|
|
1044
|
+
finish() {
|
|
1045
|
+
this.#settle();
|
|
1046
|
+
return {
|
|
1047
|
+
text: this.#settledTexts.join(""),
|
|
1048
|
+
positions: this.#settledPositions
|
|
1049
|
+
};
|
|
1050
|
+
}
|
|
1051
|
+
};
|
|
1052
|
+
var print_result_default = printResult;
|
|
1053
|
+
|
|
938
1054
|
// src/document/printer/printer.js
|
|
939
|
-
var MODE_BREAK = Symbol("MODE_BREAK");
|
|
940
|
-
var MODE_FLAT = Symbol("MODE_FLAT");
|
|
941
|
-
var DOC_FILL_PRINTED_LENGTH = Symbol("DOC_FILL_PRINTED_LENGTH");
|
|
1055
|
+
var MODE_BREAK = /* @__PURE__ */ Symbol("MODE_BREAK");
|
|
1056
|
+
var MODE_FLAT = /* @__PURE__ */ Symbol("MODE_FLAT");
|
|
1057
|
+
var DOC_FILL_PRINTED_LENGTH = /* @__PURE__ */ Symbol("DOC_FILL_PRINTED_LENGTH");
|
|
942
1058
|
function fits(next, restCommands, remainingWidth, hasLineSuffix, groupModeMap, mustBeFlat) {
|
|
943
1059
|
if (remainingWidth === Number.POSITIVE_INFINITY) {
|
|
944
1060
|
return true;
|
|
@@ -1060,13 +1176,9 @@ function printDocToString(doc, options) {
|
|
|
1060
1176
|
mode: MODE_BREAK,
|
|
1061
1177
|
doc
|
|
1062
1178
|
}];
|
|
1063
|
-
let output = "";
|
|
1064
1179
|
let shouldRemeasure = false;
|
|
1065
1180
|
const lineSuffix2 = [];
|
|
1066
|
-
const
|
|
1067
|
-
const settledOutput = [];
|
|
1068
|
-
const settledCursorPositions = [];
|
|
1069
|
-
let settledTextLength = 0;
|
|
1181
|
+
const result = new print_result_default();
|
|
1070
1182
|
propagateBreaks(doc);
|
|
1071
1183
|
while (commands.length > 0) {
|
|
1072
1184
|
const {
|
|
@@ -1084,7 +1196,7 @@ function printDocToString(doc, options) {
|
|
|
1084
1196
|
newLine
|
|
1085
1197
|
) : doc2;
|
|
1086
1198
|
if (formatted2) {
|
|
1087
|
-
|
|
1199
|
+
result.write(formatted2);
|
|
1088
1200
|
if (commands.length > 0) {
|
|
1089
1201
|
position += get_string_width_default(formatted2);
|
|
1090
1202
|
}
|
|
@@ -1101,10 +1213,7 @@ function printDocToString(doc, options) {
|
|
|
1101
1213
|
}
|
|
1102
1214
|
break;
|
|
1103
1215
|
case DOC_TYPE_CURSOR:
|
|
1104
|
-
|
|
1105
|
-
throw new Error("There are too many 'cursor' in doc.");
|
|
1106
|
-
}
|
|
1107
|
-
cursorPositions.push(settledTextLength + output.length);
|
|
1216
|
+
result.markPosition();
|
|
1108
1217
|
break;
|
|
1109
1218
|
case DOC_TYPE_INDENT:
|
|
1110
1219
|
commands.push({
|
|
@@ -1121,89 +1230,64 @@ function printDocToString(doc, options) {
|
|
|
1121
1230
|
});
|
|
1122
1231
|
break;
|
|
1123
1232
|
case DOC_TYPE_TRIM:
|
|
1124
|
-
|
|
1233
|
+
position -= result.trim();
|
|
1125
1234
|
break;
|
|
1126
|
-
case DOC_TYPE_GROUP:
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
commands.push({
|
|
1131
|
-
indent: indent2,
|
|
1132
|
-
mode: doc2.break ? MODE_BREAK : MODE_FLAT,
|
|
1133
|
-
doc: doc2.contents
|
|
1134
|
-
});
|
|
1135
|
-
break;
|
|
1136
|
-
}
|
|
1137
|
-
// fallthrough
|
|
1138
|
-
case MODE_BREAK: {
|
|
1139
|
-
shouldRemeasure = false;
|
|
1140
|
-
const next = {
|
|
1235
|
+
case DOC_TYPE_GROUP: {
|
|
1236
|
+
const command = (function printGroup() {
|
|
1237
|
+
if (mode === MODE_FLAT && !shouldRemeasure) {
|
|
1238
|
+
return {
|
|
1141
1239
|
indent: indent2,
|
|
1142
|
-
mode: MODE_FLAT,
|
|
1240
|
+
mode: doc2.break ? MODE_BREAK : MODE_FLAT,
|
|
1143
1241
|
doc: doc2.contents
|
|
1144
1242
|
};
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
} else {
|
|
1174
|
-
const state = doc2.expandedStates[index];
|
|
1175
|
-
const cmd = {
|
|
1176
|
-
indent: indent2,
|
|
1177
|
-
mode: MODE_FLAT,
|
|
1178
|
-
doc: state
|
|
1179
|
-
};
|
|
1180
|
-
if (fits(cmd, commands, remainingWidth, hasLineSuffix, groupModeMap)) {
|
|
1181
|
-
commands.push(cmd);
|
|
1182
|
-
break;
|
|
1183
|
-
}
|
|
1184
|
-
}
|
|
1185
|
-
}
|
|
1186
|
-
}
|
|
1187
|
-
} else {
|
|
1188
|
-
commands.push({
|
|
1189
|
-
indent: indent2,
|
|
1190
|
-
mode: MODE_BREAK,
|
|
1191
|
-
doc: doc2.contents
|
|
1192
|
-
});
|
|
1243
|
+
}
|
|
1244
|
+
shouldRemeasure = false;
|
|
1245
|
+
const remainingWidth = width - position;
|
|
1246
|
+
const hasLineSuffix = lineSuffix2.length > 0;
|
|
1247
|
+
const flatCommand = {
|
|
1248
|
+
indent: indent2,
|
|
1249
|
+
mode: MODE_FLAT,
|
|
1250
|
+
doc: doc2.contents
|
|
1251
|
+
};
|
|
1252
|
+
if (!doc2.break && fits(flatCommand, commands, remainingWidth, hasLineSuffix, groupModeMap)) {
|
|
1253
|
+
return flatCommand;
|
|
1254
|
+
}
|
|
1255
|
+
if (!doc2.expandedStates) {
|
|
1256
|
+
return {
|
|
1257
|
+
indent: indent2,
|
|
1258
|
+
mode: MODE_BREAK,
|
|
1259
|
+
doc: doc2.contents
|
|
1260
|
+
};
|
|
1261
|
+
}
|
|
1262
|
+
if (!doc2.break) {
|
|
1263
|
+
for (let index = 1; index < doc2.expandedStates.length - 1; index++) {
|
|
1264
|
+
const flatCommand2 = {
|
|
1265
|
+
indent: indent2,
|
|
1266
|
+
mode: MODE_FLAT,
|
|
1267
|
+
doc: doc2.expandedStates[index]
|
|
1268
|
+
};
|
|
1269
|
+
if (fits(flatCommand2, commands, remainingWidth, hasLineSuffix, groupModeMap)) {
|
|
1270
|
+
return flatCommand2;
|
|
1193
1271
|
}
|
|
1194
1272
|
}
|
|
1195
|
-
break;
|
|
1196
1273
|
}
|
|
1197
|
-
|
|
1274
|
+
return {
|
|
1275
|
+
indent: indent2,
|
|
1276
|
+
mode: MODE_BREAK,
|
|
1277
|
+
doc: method_at_default(
|
|
1278
|
+
/* OPTIONAL_OBJECT: false */
|
|
1279
|
+
0,
|
|
1280
|
+
doc2.expandedStates,
|
|
1281
|
+
-1
|
|
1282
|
+
)
|
|
1283
|
+
};
|
|
1284
|
+
})();
|
|
1285
|
+
commands.push(command);
|
|
1198
1286
|
if (doc2.id) {
|
|
1199
|
-
groupModeMap[doc2.id] =
|
|
1200
|
-
/* OPTIONAL_OBJECT: false */
|
|
1201
|
-
0,
|
|
1202
|
-
commands,
|
|
1203
|
-
-1
|
|
1204
|
-
).mode;
|
|
1287
|
+
groupModeMap[doc2.id] = command.mode;
|
|
1205
1288
|
}
|
|
1206
1289
|
break;
|
|
1290
|
+
}
|
|
1207
1291
|
// Fills each line with as much code as possible before moving to a new
|
|
1208
1292
|
// line with the same indentation.
|
|
1209
1293
|
//
|
|
@@ -1344,13 +1428,12 @@ function printDocToString(doc, options) {
|
|
|
1344
1428
|
case MODE_FLAT:
|
|
1345
1429
|
if (!doc2.hard) {
|
|
1346
1430
|
if (!doc2.soft) {
|
|
1347
|
-
|
|
1431
|
+
result.write(" ");
|
|
1348
1432
|
position += 1;
|
|
1349
1433
|
}
|
|
1350
1434
|
break;
|
|
1351
|
-
} else {
|
|
1352
|
-
shouldRemeasure = true;
|
|
1353
1435
|
}
|
|
1436
|
+
shouldRemeasure = true;
|
|
1354
1437
|
// fallthrough
|
|
1355
1438
|
case MODE_BREAK:
|
|
1356
1439
|
if (lineSuffix2.length > 0) {
|
|
@@ -1363,17 +1446,17 @@ function printDocToString(doc, options) {
|
|
|
1363
1446
|
break;
|
|
1364
1447
|
}
|
|
1365
1448
|
if (doc2.literal) {
|
|
1366
|
-
|
|
1449
|
+
result.write(newLine);
|
|
1367
1450
|
position = 0;
|
|
1368
1451
|
if (indent2.root) {
|
|
1369
1452
|
if (indent2.root.value) {
|
|
1370
|
-
|
|
1453
|
+
result.write(indent2.root.value);
|
|
1371
1454
|
}
|
|
1372
1455
|
position = indent2.root.length;
|
|
1373
1456
|
}
|
|
1374
1457
|
} else {
|
|
1375
|
-
|
|
1376
|
-
|
|
1458
|
+
result.trim();
|
|
1459
|
+
result.write(newLine + indent2.value);
|
|
1377
1460
|
position = indent2.length;
|
|
1378
1461
|
}
|
|
1379
1462
|
break;
|
|
@@ -1396,40 +1479,21 @@ function printDocToString(doc, options) {
|
|
|
1396
1479
|
lineSuffix2.length = 0;
|
|
1397
1480
|
}
|
|
1398
1481
|
}
|
|
1399
|
-
const
|
|
1400
|
-
|
|
1401
|
-
|
|
1482
|
+
const {
|
|
1483
|
+
text: formatted,
|
|
1484
|
+
positions: cursorPositions
|
|
1485
|
+
} = result.finish();
|
|
1486
|
+
if (cursorPositions.length !== 2) {
|
|
1402
1487
|
return {
|
|
1403
1488
|
formatted
|
|
1404
1489
|
};
|
|
1405
1490
|
}
|
|
1406
|
-
const cursorNodeStart =
|
|
1491
|
+
const [cursorNodeStart, cursorNodeEnd] = cursorPositions;
|
|
1407
1492
|
return {
|
|
1408
1493
|
formatted,
|
|
1409
1494
|
cursorNodeStart,
|
|
1410
|
-
cursorNodeText: formatted.slice(cursorNodeStart,
|
|
1411
|
-
/* OPTIONAL_OBJECT: false */
|
|
1412
|
-
0,
|
|
1413
|
-
finalCursorPositions,
|
|
1414
|
-
-1
|
|
1415
|
-
))
|
|
1495
|
+
cursorNodeText: formatted.slice(cursorNodeStart, cursorNodeEnd)
|
|
1416
1496
|
};
|
|
1417
|
-
function trim2() {
|
|
1418
|
-
const {
|
|
1419
|
-
text: trimmed,
|
|
1420
|
-
count
|
|
1421
|
-
} = trimIndentation(output);
|
|
1422
|
-
if (trimmed) {
|
|
1423
|
-
settledOutput.push(trimmed);
|
|
1424
|
-
settledTextLength += trimmed.length;
|
|
1425
|
-
}
|
|
1426
|
-
output = "";
|
|
1427
|
-
position -= count;
|
|
1428
|
-
if (cursorPositions.length > 0) {
|
|
1429
|
-
settledCursorPositions.push(...cursorPositions.map((position2) => Math.min(position2, settledTextLength)));
|
|
1430
|
-
cursorPositions.length = 0;
|
|
1431
|
-
}
|
|
1432
|
-
}
|
|
1433
1497
|
}
|
|
1434
1498
|
|
|
1435
1499
|
// src/document/public.js
|