feat: init
This commit is contained in:
56
node_modules/@nuxt/cli/dist/formatting-PESozNtr.mjs
generated
vendored
Normal file
56
node_modules/@nuxt/cli/dist/formatting-PESozNtr.mjs
generated
vendored
Normal file
@@ -0,0 +1,56 @@
|
||||
import process from "node:process";
|
||||
import { colors } from "consola/utils";
|
||||
import { stripVTControlCharacters } from "node:util";
|
||||
|
||||
//#region ../nuxi/src/utils/formatting.ts
|
||||
function getStringWidth(str) {
|
||||
const stripped = stripVTControlCharacters(str);
|
||||
let width = 0;
|
||||
for (const char of stripped) {
|
||||
const code = char.codePointAt(0);
|
||||
if (!code) continue;
|
||||
if (code >= 65024 && code <= 65039) continue;
|
||||
if (code >= 127744 && code <= 129535 || code >= 128512 && code <= 128591 || code >= 128640 && code <= 128767 || code >= 9728 && code <= 9983 || code >= 9984 && code <= 10175 || code >= 129280 && code <= 129535 || code >= 129648 && code <= 129791) width += 2;
|
||||
else width += 1;
|
||||
}
|
||||
return width;
|
||||
}
|
||||
function formatInfoBox(infoObj) {
|
||||
let firstColumnLength = 0;
|
||||
let ansiFirstColumnLength = 0;
|
||||
const entries = Object.entries(infoObj).map(([label, val]) => {
|
||||
if (label.length > firstColumnLength) {
|
||||
ansiFirstColumnLength = colors.bold(colors.whiteBright(label)).length + 6;
|
||||
firstColumnLength = label.length + 6;
|
||||
}
|
||||
return [label, val || "-"];
|
||||
});
|
||||
const terminalWidth = Math.max(process.stdout.columns || 80, firstColumnLength) - 8;
|
||||
let boxStr = "";
|
||||
for (const [label, value] of entries) {
|
||||
const formattedValue = value.replace(/\b@([^, ]+)/g, (_, r) => colors.gray(` ${r}`)).replace(/`([^`]*)`/g, (_, r) => r);
|
||||
boxStr += `${colors.bold(colors.whiteBright(label))}`.padEnd(ansiFirstColumnLength);
|
||||
let boxRowLength = firstColumnLength;
|
||||
const words = formattedValue.split(" ");
|
||||
let currentLine = "";
|
||||
for (const word of words) {
|
||||
const wordLength = getStringWidth(word);
|
||||
const spaceLength = currentLine ? 1 : 0;
|
||||
if (boxRowLength + wordLength + spaceLength > terminalWidth) {
|
||||
if (currentLine) boxStr += colors.cyan(currentLine);
|
||||
boxStr += `\n${" ".repeat(firstColumnLength)}`;
|
||||
currentLine = word;
|
||||
boxRowLength = firstColumnLength + wordLength;
|
||||
} else {
|
||||
currentLine += (currentLine ? " " : "") + word;
|
||||
boxRowLength += wordLength + spaceLength;
|
||||
}
|
||||
}
|
||||
if (currentLine) boxStr += colors.cyan(currentLine);
|
||||
boxStr += "\n";
|
||||
}
|
||||
return boxStr;
|
||||
}
|
||||
|
||||
//#endregion
|
||||
export { formatInfoBox as t };
|
||||
Reference in New Issue
Block a user