import papaparse, { ParseConfig } from 'papaparse' import voca from 'voca' import { assertEq } from './assert' const { camelCase } = voca const { parse: parseOriginal } = papaparse export async function parseCSV(contents: string, config: ParseConfig = {}) { const result = await parseOriginal(contents.trim(), { header: true, transformHeader: camelCase, delimiter: ',', ...config, }) assertEq(result.errors, [], 'result.errors', '[]') return result.data } export function getPapaparseDefaultConfig(): ParseConfig { return { header: true, transformHeader: camelCase, } } export const transformHeaderFromRecord = (headers: Record) => (header: string, index: number) => { return headers[header] || camelCase(header) }