.gitea/workflows | ||
.vscode | ||
test | ||
ts | ||
.gitignore | ||
.gitlab-ci.yml | ||
.npmrc | ||
changelog.md | ||
license | ||
npmextra.json | ||
package.json | ||
pnpm-lock.yaml | ||
readme.hints.md | ||
readme.md | ||
tsconfig.json |
# @fin.cx/csvparser
a csvparser for fin2021
## Install
To install the `@fin.cx/csvparser` module, you can use npm. Simply run the following command:
```bash
npm install @fin.cx/csvparser
Usage
The @fin.cx/csvparser
module provides tools to parse CSV files from various financial institutions such as Commerzbank, Fidor Bank, PayPal, and Spendesk. This helps in extracting and managing financial transaction data efficiently.
Here's a guide to showcase various functionalities along with comprehensive TypeScript code examples.
Getting Started
First, make sure to import the necessary components from the @fin.cx/csvparser
module.
import { CsvSpendesk, CsvPayPal, CsvFidor, CsvCommerzbank } from '@fin.cx/csvparser';
Spendesk CSV Parsing
Parsing Spendesk CSV from File
The CsvSpendesk
class provides methods to parse Spendesk CSV files.
import { CsvSpendesk } from '@fin.cx/csvparser';
async function parseSpendeskFile(filePath: string) {
try {
const spendeskData = await CsvSpendesk.fromFile(filePath);
const transactions = await spendeskData.getTransactions();
console.log(transactions);
} catch (error) {
console.error('Error parsing Spendesk file:', error);
}
}
// Usage example
parseSpendeskFile('./path/to/spendesk.csv');
Parsing Spendesk CSV from Directory
You might have multiple Spendesk CSV files in a directory. The fromDir
method helps in parsing all of them.
import { CsvSpendesk } from '@fin.cx/csvparser';
async function parseSpendeskDirectory(dirPath: string) {
try {
const spendeskData = await CsvSpendesk.fromDir(dirPath);
const transactions = await spendeskData.getTransactions();
console.log(transactions);
} catch (error) {
console.error('Error parsing Spendesk directory:', error);
}
}
// Usage example
parseSpendeskDirectory('./path/to/spendesk_dir');
PayPal CSV Parsing
The CsvPayPal
class is used to parse PayPal CSV files.
import { CsvPayPal } from '@fin.cx/csvparser';
async function parsePayPalFile(filePath: string) {
try {
const payPalData = new CsvPayPal();
const csvDescriptor = {
filename: 'paypal.csv',
contentString: await fs.promises.readFile(filePath, 'utf8')
}
payPalData.addCsvDecriptor(csvDescriptor);
const transactions = await payPalData.getTransactions();
console.log(transactions);
} catch (error) {
console.error('Error parsing PayPal file:', error);
}
}
// Usage example
parsePayPalFile('./path/to/paypal.csv');
Fidor Bank CSV Parsing
The CsvFidor
class is used to parse Fidor Bank CSV files.
import { CsvFidor } from '@fin.cx/csvparser';
async function parseFidorFile(filePath: string) {
try {
const fidorData = new CsvFidor();
const csvDescriptor = {
filename: 'fidor.csv',
contentString: await fs.promises.readFile(filePath, 'utf8')
}
fidorData.addCsvDecriptor(csvDescriptor);
const transactions = await fidorData.getTransactions();
console.log(transactions);
} catch (error) {
console.error('Error parsing Fidor file:', error);
}
}
// Usage example
parseFidorFile('./path/to/fidor.csv');
Commerzbank CSV Parsing
The CsvCommerzbank
class is used to parse Commerzbank CSV files.
import { CsvCommerzbank } from '@fin.cx/csvparser';
async function parseCommerzbankFile(filePath: string) {
try {
const commerzbankData = new CsvCommerzbank();
const csvDescriptor = {
filename: 'commerzbank.csv',
contentString: await fs.promises.readFile(filePath, 'utf8')
}
commerzbankData.addCsvDecriptor(csvDescriptor);
const transactions = await commerzbankData.getTransactions();
console.log(transactions);
} catch (error) {
console.error('Error parsing Commerzbank file:', error);
}
}
// Usage example
parseCommerzbankFile('./path/to/commerzbank.csv');
Advanced Usage
Merging Spendesk Data
You may need to merge multiple Spendesk CSV data instances.
import { CsvSpendesk } from '@fin.cx/csvparser';
async function mergeSpendeskData(filePaths: string[]) {
try {
const spendeskInstances = await Promise.all(filePaths.map(CsvSpendesk.fromFile));
const mergedInstance = spendeskInstances.reduce(
(merged, currentInstance) => merged.concat(currentInstance),
spendeskInstances[0]
);
console.log(await mergedInstance.getTransactions());
} catch (error) {
console.error('Error merging Spendesk data:', error);
}
}
// Usage example
mergeSpendeskData([
'./path/to/spendesk1.csv',
'./path/to/spendesk2.csv'
]);
Working with PayPal Linked Transactions
PayPal CSV data contains linked transactions, which you may need to handle specifically.
import { CsvPayPal } from '@fin.cx/csvparser';
async function handlePayPalLinkedTransactions(filePath: string) {
try {
const payPalData = new CsvPayPal();
const csvDescriptor = {
filename: 'paypal.csv',
contentString: await fs.promises.readFile(filePath, 'utf8')
}
payPalData.addCsvDecriptor(csvDescriptor);
const transactions = await payPalData.getTransactions();
const linkedTransactions = transactions.filter(tx => tx.linkedTransactionCode);
console.log(linkedTransactions);
} catch (error) {
console.error('Error handling linked transactions:', error);
}
}
// Usage example
handlePayPalLinkedTransactions('./path/to/paypal.csv');
Parsing Multiple File Types
You may need to parse CSV files from different financial service providers.
import { CsvSpendesk, CsvPayPal, CsvFidor, CsvCommerzbank } from '@fin.cx/csvparser';
async function parseMultipleFiles(filePaths: {spendesk: string, paypal: string, fidor: string, commerzbank: string}) {
try {
const spendeskData = await CsvSpendesk.fromFile(filePaths.spendesk);
const payPalData = new CsvPayPal();
const csvDescriptorPayPal = {
filename: 'paypal.csv',
contentString: await fs.promises.readFile(filePaths.paypal, 'utf8')
}
payPalData.addCsvDecriptor(csvDescriptorPayPal);
const fidorData = new CsvFidor();
const csvDescriptorFidor = {
filename: 'fidor.csv',
contentString: await fs.promises.readFile(filePaths.fidor, 'utf8')
}
fidorData.addCsvDecriptor(csvDescriptorFidor);
const commerzbankData = new CsvCommerzbank();
const csvDescriptorCommerzbank = {
filename: 'commerzbank.csv',
contentString: await fs.promises.readFile(filePaths.commerzbank, 'utf8')
}
commerzbankData.addCsvDecriptor(csvDescriptorCommerzbank);
console.log(await spendeskData.getTransactions());
console.log(await payPalData.getTransactions());
console.log(await fidorData.getTransactions());
console.log(await commerzbankData.getTransactions());
} catch (error) {
console.error('Error parsing multiple files:', error);
}
}
// Usage example
parseMultipleFiles({
spendesk: './path/to/spendesk.csv',
paypal: './path/to/paypal.csv',
fidor: './path/to/fidor.csv',
commerzbank: './path/to/commerzbank.csv'
});
By covering multiple use cases and providing comprehensive documentation and code samples, this readme should help developers integrate and utilize the @fin.cx/csvparser
module effectively.
undefined