UNPKG

evalite

Version:

Test your LLM-powered apps with a TypeScript-native, Vitest-based eval runner. No API key required.

44 lines 1.44 kB
import { fileTypeFromBuffer } from "file-type"; import path from "path"; export const sum = (arr, fn) => { return arr.reduce((a, b) => a + (fn(b) || 0), 0); }; export const average = (arr, fn) => { return sum(arr, fn) / arr.length; }; export const createEvaliteFileIfNeeded = async (opts) => { if (!(opts.input instanceof Uint8Array)) { return opts.input; } const { createHash } = await import("node:crypto"); const hash = createHash("sha256").update(opts.input).digest("hex"); const result = await fileTypeFromBuffer(opts.input); if (!result) { throw new Error(`Cannot determine file type of buffer passed in.`); } const extension = result.ext; const fileName = `${hash}.${extension}`; const filePath = path.join(opts.rootDir, fileName); const { writeFile } = await import("node:fs/promises"); await writeFile(filePath, opts.input); return EvaliteFile.fromPath(filePath); }; export const max = (arr, fn) => { return arr.reduce((a, b) => Math.max(a, fn(b) || 0), 0); }; const isEvaliteFile = (file) => { return (typeof file === "object" && file !== null && "__EvaliteFile" in file && file.__EvaliteFile === true); }; export const EvaliteFile = { fromPath: (path) => { return { __EvaliteFile: true, path, }; }, isEvaliteFile: isEvaliteFile, }; //# sourceMappingURL=utils.js.map