Fixed up the curl response a little

This commit is contained in:
2026-06-15 23:41:53 -05:00
parent 307583bcab
commit f38e08c835
2 changed files with 104 additions and 23 deletions
+104 -22
View File
@@ -1,5 +1,61 @@
import chalk from 'chalk';
function box(def: {
title: string;
text: string;
footer?: [string, string];
padding?: [number, number];
}) {
const [LINE_WIDTH_PADDING, LINE_HEIGHT_PADDING] = def.padding ?? [0, 0];
const lineHeight = def.text.split('\n').length;
const lineWidth = def.text
.split('\n')
.reduce((agg, cur) => Math.max(agg, cur.length), 0);
let rendered =
chalk.dim(`${GLYPHS.BOX.ROUND.TOP_LEFT}${GLYPHS.BOX.ROUND.XEDGE}`) +
chalk.reset(` ${def.title} `) +
chalk.dim(
`${GLYPHS.BOX.ROUND.XEDGE.repeat(lineWidth - def.title.length - 3 + LINE_WIDTH_PADDING * 2)}${GLYPHS.BOX.ROUND.TOP_RIGHT}\n`,
);
rendered += (
chalk.dim(GLYPHS.BOX.ROUND.YEDGE) +
`${' '.repeat(LINE_WIDTH_PADDING)}${' '.repeat(lineWidth)}${' '.repeat(LINE_WIDTH_PADDING)}` +
chalk.dim(GLYPHS.BOX.ROUND.YEDGE) +
'\n'
).repeat(LINE_HEIGHT_PADDING);
for (const line of def.text.split('\n')) {
const padding = lineWidth - line.length;
rendered +=
chalk.dim(GLYPHS.BOX.ROUND.YEDGE) +
`${' '.repeat(LINE_WIDTH_PADDING)}${line}${' '.repeat(padding)}${' '.repeat(LINE_WIDTH_PADDING)}` +
chalk.dim(GLYPHS.BOX.ROUND.YEDGE) +
'\n';
}
rendered += (
chalk.dim(GLYPHS.BOX.ROUND.YEDGE) +
`${' '.repeat(LINE_WIDTH_PADDING)}${' '.repeat(lineWidth)}${' '.repeat(LINE_WIDTH_PADDING)}` +
chalk.dim(GLYPHS.BOX.ROUND.YEDGE) +
'\n'
).repeat(LINE_HEIGHT_PADDING);
rendered += chalk.dim(
`${GLYPHS.BOX.ROUND.BOTTOM_LEFT}${GLYPHS.BOX.ROUND.XEDGE.repeat(lineWidth + LINE_WIDTH_PADDING * 2)}${GLYPHS.BOX.ROUND.BOTTOM_RIGHT}`,
);
if (def.footer) {
rendered += '\n\n';
const [left, right] = def.footer;
const padding = lineWidth - left.length - right.length;
rendered += chalk.dim(
`${' '.repeat(LINE_WIDTH_PADDING)} ${left}${' '.repeat(padding)}${right} ${' '.repeat(LINE_WIDTH_PADDING)}`,
);
}
return rendered;
}
export default defineEventHandler(async (event) => {
const userAgent = getRequestHeader(event, 'user-agent') || '';
@@ -12,30 +68,56 @@ export default defineEventHandler(async (event) => {
'content-type',
'text/plain; charset=utf-8',
);
const padding = chalk.reset(' ');
return (
chalk.bgGray(`\
let res = '\n';
${padding}░█░█░█▀▀░█░░░█░░░█▀█░░░░░░░▀█▀░▀░█▄█░░░▀▀█░█▀█░█▀▄░█▀█░█▀█
${padding}░█▀█░█▀▀░█░░░█░░░█░█░░░░░░░░█░░░░█░█░░░░░█░█▀█░█▀▄░█░█░█░█
${padding}░▀░▀░▀▀▀░▀▀▀░▀▀▀░▀▀▀░▄▀░░░░▀▀▀░░░▀░▀░░░▀▀░░▀░▀░▀░▀░▀▀▀░▀░▀
${padding}
${padding}┌ About ─────────────────────────────────────────────────────────────────────┐
${padding}│ │
${padding}│ I build things to solve problems from the ground up. │
${padding}│ │
${padding}│ I left school and my job at Chick-fil-A in 2022 to write code full time. │
${padding}│ It's definitely one of the best decisions I've ever made. │
${padding}│ I've learned a lot since then and still have so much more to learn. │
${padding}│ │
${padding}│ If you want to build something cool or connect hit me up │
${padding}│ we'll grab a coffee or beer in you're in Austin! │
${padding}│ │
${padding}└────────────────────────────────────────────────────────────────────────────┘
${padding}
${padding} Austin, TX yo@jp.wtf
`) + '\n'
res += `\
░█░█░█▀▀░█░░░█░░░█▀█░░░░░░░▀█▀░▀░█▄█░░░▀▀█░█▀█░█▀▄░█▀█░█▀█
░█▀█░█▀▀░█░░░█░░░█░█░░░░░░░░█░░░░█░█░░░░░█░█▀█░█▀▄░█░█░█░█
░▀░▀░▀▀▀░▀▀▀░▀▀▀░▀▀▀░▄▀░░░░▀▀▀░░░▀░▀░░░▀▀░░▀░▀░▀░▀░▀▀▀░▀░▀\n`;
res += '\n';
res += box({
title: 'About',
text: `\
I build things to solve problems from the ground up.
I left school and my job at Chick-fil-A in 2022 to write code full time.
It's definitely one of the best decisions I've ever made.
I've learned a lot since then and still have so much more to learn.
If you want to build something cool or connect hit me up
we'll grab a coffee or beer in you're in Austin! 🤠🦇`,
footer: ['Austin, TX', 'yo@jp.wtf'],
padding: [2, 1],
});
const padding = chalk.reset(' ');
return (
res
.split('\n')
.map((l) => padding + l)
.join('\n') + '\n'
);
}
}
});
const GLYPHS = {
BOX: {
DEFAULT: {
TOP_LEFT: '┌',
TOP_RIGHT: '┐',
BOTTOM_LEFT: '└',
BOTTOM_RIGHT: '┘',
XEDGE: '─',
YEDGE: '│',
},
ROUND: {
TOP_LEFT: '╭',
TOP_RIGHT: '╮',
BOTTOM_LEFT: '╰',
BOTTOM_RIGHT: '╯',
XEDGE: '─',
YEDGE: '│',
},
},
};