import { ExcelUtils, DataContainer, ParseOptions, AsyncParser } from '@tableau/taco-toolkit/handlers'

export default class ExcelDataParser extends AsyncParser<Uint8Array> {
  async parse(fetcherResult: Uint8Array, { dataContainer }: ParseOptions): Promise<DataContainer> {
    // fetcherResult contains the Excel content yielded from Fetcher
    const tables = await ExcelUtils.parse(fetcherResult)
    const containerBuilder = AsyncParser.createContainerBuilder(dataContainer)

    containerBuilder.appendTables(tables)

    return containerBuilder.getDataContainer()
  }
}
