Added babel plugins to support latest TS functionalities

This commit is contained in:
Alejandro Celaya
2020-08-22 11:00:11 +02:00
parent d65a6ba970
commit eefea0c37b
9 changed files with 4014 additions and 1123 deletions

View File

@@ -0,0 +1,26 @@
import { CsvJson } from 'csvjson';
import { RegularServer } from '../data';
const CSV_MIME_TYPE = 'text/csv';
export default class ServersImporter {
public constructor(private readonly csvjson: CsvJson, private readonly fileReaderFactory: () => FileReader) {}
public importServersFromFile = async (file?: File): Promise<RegularServer[]> => {
if (!file || file.type !== CSV_MIME_TYPE) {
throw new Error('No file provided or file is not a CSV');
}
const reader = this.fileReaderFactory();
return new Promise((resolve) => {
reader.addEventListener('loadend', (e: ProgressEvent<FileReader>) => {
const content = e.target?.result?.toString() ?? '';
const servers = this.csvjson.toObject<RegularServer>(content);
resolve(servers);
});
reader.readAsText(file);
});
};
}