const arrayToFile = args => {
   let mime;
   let content;

   switch (args.type) {
      case 'csv': {
         mime = 'text/csv';
         const csv = [];

         if (args.content.length)
            csv.push(Object.keys(args.content[0]).join(';'));

         for (const row of args.content)
            csv.push(Object.values(row).map(col => typeof col === 'string' ? `"${col}"` : col).join(';'));

         content = csv.join('\n');
         break;
      }
      case 'json':
         mime = 'application/json';
         content = JSON.stringify(args.content, null, 3);
         break;
      default:
         break;
   }

   const file = new Blob([content], { type: mime });
   const downloadLink = document.createElement('a');
   downloadLink.download = `${args.filename}.${args.type}`;
   downloadLink.href = window.URL.createObjectURL(file);
   downloadLink.style.display = 'none';
   document.body.appendChild(downloadLink);
   downloadLink.click();
   downloadLink.remove();
};

export default arrayToFile;
