UNPKG

file-streamer

Version:

A TypeScript package for streaming data as files (Excel, CSV, JSON, Base64) and streaming files from file system through HTTP responses

40 lines 1.36 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.pipeJsonAsCsv = void 0; const pipeJsonAsCsv = async (res, data, fileName) => { try { let responseFileName = !fileName ? 'data.csv' : fileName.endsWith('.csv') ? fileName : `${fileName}.csv`; res.setHeader('Content-Type', 'text/csv'); res.setHeader('Content-Disposition', `attachment; filename=${responseFileName}`); if (data.length === 0) { res.write('No data'); res.end(); return; } const headers = Object.keys(data[0]); const headerRow = headers.join(','); res.write(headerRow + '\n'); data.forEach((item) => { const row = headers.map((header) => { const value = item[header]; if (typeof value === 'string' && (value.includes(',') || value.includes('"') || value.includes('\n'))) { return `"${value.replace(/"/g, '""')}"`; } return value ?? ''; }); res.write(row.join(',') + '\n'); }); res.end(); } catch (err) { console.error(err); throw err; } }; exports.pipeJsonAsCsv = pipeJsonAsCsv; //# sourceMappingURL=csv.js.map