UNPKG

evalite

Version:

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

27 lines 996 B
import { createHash } from "crypto"; import { fileTypeFromBuffer } from "file-type"; import { writeFile } from "fs/promises"; import path from "path"; import { EvaliteFile } from "./evalite-file.js"; 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 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); await writeFile(filePath, opts.input); return EvaliteFile.fromPath(filePath); }; //# sourceMappingURL=utils.js.map