UNPKG

eval-genius

Version:

eval-genius enables evals of arbitrary async code. It is generally intended for making multiple assertions on outputs which are generated nondeterministically. These assertions can be used to score algorithms on their effectiveness.

3 lines (2 loc) 1.55 kB
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const g=require("google-auth-library"),h=require("google-spreadsheet"),_=require("@googleapis/drive"),v=()=>{const r=new g.JWT({email:process.env.GOOGLE_SERVICE_ACCOUNT_EMAIL,key:process.env.GOOGLE_PRIVATE_KEY?.replace(/\\n/g,` `),subject:process.env.MY_GOOGLE_ACCOUNT_EMAIL,scopes:["https://www.googleapis.com/auth/spreadsheets","https://www.googleapis.com/auth/drive.file"]}),p=async({title:e,folderId:t})=>{const s=await h.GoogleSpreadsheet.createNewSpreadsheetDocument(r,{title:e});return t&&await _.drive({version:"v3",auth:r}).files.update({fileId:s.spreadsheetId,addParents:t}),s},c=({spreadsheetId:e})=>new h.GoogleSpreadsheet(e,r),E=e=>process.env.EVAL_SPREADSHEET_ID?{spreadsheetId:process.env.EVAL_SPREADSHEET_ID}:e,u=async e=>{const t=E(e),s=await("spreadsheetId"in t?c(t):p(t));return process.env.EVAL_SPREADSHEET_ID=s.spreadsheetId,s},l=async()=>{const e=process.env.EVAL_SPREADSHEET_ID;if(!e)throw new Error("process.env.EVAL_SPREADSHEET_ID was not found");const t=c({spreadsheetId:e});return await t.loadInfo(),t};let o=[];return{init:u,start:async({title:e,fields:t})=>{const s=await l(),i=s.sheetsByTitle[e]||await s.addSheet({title:e,headerValues:t});s.sheetsByTitle.Sheet1?.delete();const d=async()=>{if(!o.length)return;const n=o;o=[],await i.addRows(n)};return{report:async({result:n})=>{const S=Object.fromEntries(Object.entries(n).map(a=>a).map(([a,w])=>[a,w??""]));o.push(S),o.length>=100&&await d()},flush:d}}}};exports.GoogleSheetsExporter=v;