Files
Epicnabbo-Catalogus-Updated…/src/lib/images/badge-gif.ts
T
SimoandCursor 09f1bc2bd6 Add production observability: Sentry, pino, and sharp badge encoding.
Sentry is opt-in via DSN env vars; logger uses structured pino JSON in prod; badge uploads are normalized to GIF with sharp.

Co-authored-by: Cursor <[email protected]>
2026-07-17 23:09:57 +02:00

23 lines
564 B
TypeScript

import "server-only";
import sharp from "sharp";
/** Habbo-style badge icons are small; keep within this box without upscaling. */
const MAX_BADGE_EDGE = 64;
/**
* Normalize an uploaded badge image to GIF bytes for the emulator album folder.
* Accepts PNG or GIF input; re-encodes and optionally downsizes oversized assets.
*/
export async function toBadgeGif(input: Buffer): Promise<Buffer> {
return sharp(input)
.resize({
width: MAX_BADGE_EDGE,
height: MAX_BADGE_EDGE,
fit: "inside",
withoutEnlargement: true,
})
.gif()
.toBuffer();
}