From b30a00a9713fd52865129132317beb6fa875017c Mon Sep 17 00:00:00 2001 From: "bozo.kopic" Date: Sun, 13 Nov 2022 03:39:02 +0100 Subject: type script --- src_js/csv.ts | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 src_js/csv.ts (limited to 'src_js/csv.ts') diff --git a/src_js/csv.ts b/src_js/csv.ts new file mode 100644 index 0000000..8ab4f51 --- /dev/null +++ b/src_js/csv.ts @@ -0,0 +1,36 @@ +// @ts-ignore +import Papa from 'papaparse'; + + +export async function decode( + blob: Blob, + header: Record any> +): Promise[]> { + const data = await new Promise(resolve => { + Papa.parse(blob, { + header: true, + complete: (result: any) => resolve(result.data) + }); + }) as Record[]; + + const result: Record[] = []; + for (const i of data) { + let element = {} as Record | null; + for (const [k, v] of Object.entries(header)) { + if (!(k in i)) { + element = null; + break; + } + (element as any)[k] = (v as any)(i[k]); + } + if (element) + result.push(element); + } + return result; +} + + +export function encode(data: Record[]): Blob { + const csvData = Papa.unparse(data); + return new Blob([csvData], {type: 'text/csv'}); +} -- cgit v1.2.3-70-g09d2