read_csv = async (url, { types }) => {
const res = await fetch(url);
const data = await res.text();
const parsed = d3.csvParse(data);
return !types
? parsed
: parsed.map(row => {
parsed.columns.forEach((col, i) => {
const t = types.charAt(i);
row[col] =
t === 'd' ? new Date(row[col]) : t === 'n' ? +row[col] : row[col];
});
return row;
});
}