11import path from "path" ;
22import fs from "fs/promises" ;
3- import generateDataReport from "./generateDataReport" ;
3+ import { generateDataReport , DataReport } from "./generateDataReport" ;
44
55// Convert JSON data to CSV format
6- function jsonToCsv ( data : any [ ] , headers : string [ ] ) : string {
7- if ( data . length === 0 ) return headers . join ( "," ) + "\n" ;
6+ function jsonToCsv ( data : object [ ] , headers : string [ ] ) : string {
7+ if ( data . length === 0 ) return ` ${ headers . join ( "," ) } \n` ;
88
99 const csvRows = [ headers . join ( "," ) ] ;
1010
11- for ( const row of data ) {
11+ const rows = data . map ( ( row ) => {
1212 const values = headers . map ( ( header ) => {
13- const value = row [ header ] ;
13+ const value = ( row as Record < string , unknown > ) [ header ] ;
1414 // Escape commas and quotes in CSV
1515 if (
1616 typeof value === "string" &&
@@ -20,14 +20,15 @@ function jsonToCsv(data: any[], headers: string[]): string {
2020 }
2121 return value ?? "" ;
2222 } ) ;
23- csvRows . push ( values . join ( "," ) ) ;
24- }
23+ return values . join ( "," ) ;
24+ } ) ;
25+ csvRows . push ( ...rows ) ;
2526
26- return csvRows . join ( "\n" ) + "\n" ;
27+ return ` ${ csvRows . join ( "\n" ) } \n` ;
2728}
2829
2930// Generate a single comprehensive CSV with all data types
30- function generateComprehensiveCSV ( report : any ) : string {
31+ function generateComprehensiveCSV ( report : DataReport ) : string {
3132 const csvSections : string [ ] = [ ] ;
3233
3334 // Report header information
0 commit comments