From f38e08c835c855a8458dfdb7a30565200010de0a Mon Sep 17 00:00:00 2001 From: Jaron Date: Mon, 15 Jun 2026 23:41:53 -0500 Subject: [PATCH] Fixed up the curl response a little --- app/layouts/main.vue | 1 - server/middleware/curl.ts | 126 +++++++++++++++++++++++++++++++------- 2 files changed, 104 insertions(+), 23 deletions(-) diff --git a/app/layouts/main.vue b/app/layouts/main.vue index 6095a51..8194abe 100644 --- a/app/layouts/main.vue +++ b/app/layouts/main.vue @@ -110,7 +110,6 @@ onMounted(() => { > GitHub - Resume Writing diff --git a/server/middleware/curl.ts b/server/middleware/curl.ts index 1da306a..5900fa6 100644 --- a/server/middleware/curl.ts +++ b/server/middleware/curl.ts @@ -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: '│', + }, + }, +};