feat(csv): add typed CSV APIs and modernize package configuration

This commit is contained in:
2026-05-02 09:59:16 +00:00
parent c7f1caf47a
commit e840e545f5
14 changed files with 8058 additions and 3981 deletions
+26
View File
@@ -0,0 +1,26 @@
import { expect, tap } from '@git.zone/tstest/tapbundle';
import * as smartcsv from '../ts/index.js';
const fileString = [
'Header 1;Header 2;"Header 3"',
'"row1data1";"row1data2";"row1data3"',
'"row2data1";row2data2;"row2data3"',
].join('\n');
tap.test('should create a valid csv', async () => {
const testCsv = await smartcsv.Csv.createCsvFromString(fileString, { headers: true, unquote: true });
const result = await testCsv.exportAsObject();
expect(result[0]['Header 1']).toEqual('row1data1');
expect(result[0]['Header 3']).toEqual('row1data3');
expect(result[1]['Header 2']).toEqual('row2data2');
});
tap.test('should create a valid csv string', async () => {
const createdCsvString = await smartcsv.Csv.createCsvStringFromArray([
{ wow: 'hi', wow2: 'there' },
{ wow: 'really', wow3: 'yes' },
]);
expect(createdCsvString).toEqual('wow,wow2,wow3\nhi,there,\nreally,,yes\n');
});
export default tap.start();