UNPKG

@tableau/taco-toolkit

Version:
24 lines (17 loc) 986 B
import { CsvUtils, DataContainer, DataType, ParseOptions, AsyncParser } from '@tableau/taco-toolkit/handlers' export default class CsvDataParser extends AsyncParser<Uint8Array> { async parse(fetcherResult: Uint8Array, { dataContainer }: ParseOptions): Promise<DataContainer> { const tableName = 'csv-data-table' const containerBuilder = AsyncParser.createContainerBuilder(dataContainer) const { tableBuilder } = containerBuilder.getTable(tableName) // fetcherResult contains the CSV content yielded from Fetcher const { headers, rows } = await CsvUtils.parse(fetcherResult, { hasHeader: true }) if (!headers) { throw new Error('The parsing result does not include the expected headers.') } tableBuilder.addColumnHeaders(headers.map((id: string) => ({ id, dataType: DataType.String }))) const dataRows = await CsvUtils.createDataRows(rows, headers) tableBuilder.addRows(dataRows) return containerBuilder.getDataContainer() } }