nitropage
Version:
A free and open source, extensible visual page builder based on SolidStart.
25 lines (19 loc) • 765 B
text/typescript
import { urlJoin } from "#utils/url/urlJoin";
import { NitroMedia } from "@prisma/client";
import { type Readable } from "stream";
import { fileType, svgMime } from "../../media";
const basePath = "/media";
export const joinMediaUrl = (...parts: string[]) => urlJoin(basePath, ...parts);
export const mediaImagePath = (publicId: string, ...parts: string[]) =>
joinMediaUrl("image", publicId, ...parts);
export const isOptimizable = (media: Partial<NitroMedia> & { mime: string }) =>
media.mime !== svgMime &&
!media.isAnimated &&
fileType(media.mime) === "image";
export const bufferFromReadable = async (readable: Readable) => {
const chunks = [];
for await (let chunk of readable) {
chunks.push(chunk);
}
return Buffer.concat(chunks);
};