# rabobank-csv-converter

> [![Standard - JavaScript Style Guide](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com/)

Latest version **0.0.2** (published 2017-03-28) · MIT license · 0 weekly downloads

## Install

```sh
npm install rabobank-csv-converter
pnpm add rabobank-csv-converter
yarn add rabobank-csv-converter
bun add rabobank-csv-converter
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.0.2 |
| Published | 2017-03-28 |
| First published | 2017-03-20 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Author | Michiel van der Velde |
| Maintainers | michielvdvelde |
| Keywords | rabobank, csv, parser, stream, transaction, download |

## Links

- npm: https://www.npmjs.com/package/rabobank-csv-converter
- Repository: https://github.com/MichielvdVelde/rabobank-csv-converter
- Issues: https://github.com/MichielvdVelde/rabobank-csv-converter/issues
- npm.io page: https://npm.io/package/rabobank-csv-converter

## Alternatives

- [babylon](https://npm.io/package/babylon.md) — 5.1M weekly downloads
- [csscolorparser](https://npm.io/package/csscolorparser.md) — 3.7M weekly downloads
- [expr-eval-fork](https://npm.io/package/expr-eval-fork.md) — 1.5M weekly downloads
- [@leeoniya/ufuzzy](https://npm.io/package/@leeoniya/ufuzzy.md) — 247.7K weekly downloads
- [xml-parser](https://npm.io/package/xml-parser.md) — 78.4K weekly downloads

## Recent versions

- 0.0.2 (latest) — 2017-03-28
- 0.0.1 — 2017-03-20

## README

# CSV Transaction Converter for [rabobank-csv-parser](https://github.com/MichielvdVelde/rabobank-csv-parser) (Rabobank)

[![Standard - JavaScript Style Guide](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com/)

After coding [rabobank-csv-parser](https://github.com/MichielvdVelde/rabobank-csv-parser) to parse my bank's CSV transaction files,
I was left with a situation where the column named didn't match up with my Mongo database schema.
So I built this module to convert a row from rabobank-csv-parser to a row which I can add to Mongo.

In addition to converting the row into another row structure it also add a `_hash` key
which is the SHA256 hash for the row. I am using this hash to avoid inserting a mutation
multiple times.

The module is designed to be piped to from rabobank-csv-parser.

## Install

```bash
npm i rabobank-csv-converter
```

## Usage

### Example code

I am using [csv-streamify](https://github.com/klaemo/csv-stream) to pre-parse the CSV file.

```js
const fs = require('fs')
const CSVStreamify = require('csv-streamify')
const RaboCSVParser = require('rabobank-csv-parser')
const RaboConverter = require('rabobank-csv-converter')

const csvParser = CSVStreamify()
const raboParser = new RaboCSVParser()
const raboConverter = new RaboConverter({
  bank: 'rabobank', // corresponds to the _id of the Bank documents
  account: 'NL08RABO2952747327', // corresponds to the _id of the Account documents, used if the row doesn't specify one
  currency: 'EUR' // sets a default currency, used if the row doesn't specify one
})

// A `data` event is emitted for each row
raboConverter.on('data', function (row) {
  // `data` is a Buffer, so we first convert it to JSON
  row = JSON.parse(row.toString())

  // Do what you want with it - displaying it, for example
  console.log(row)
})

// Pipe a file stream through csv-streamify, rabobank-csv-parser and then this module
fs.createReadStream('transactions.txt').pipe(csvParser).pipe(raboParser).pipe(raboConverter)
```

### Example output

The data in this example output has been faked (obviously). The ouput is a single row
(or one `data` event).

Depending on the keys in the original row there may be more or fewer keys.

```json
{
  "_hash": "3e012db6535b2826618b5715f693d057752aaeba923bb9a9a5d67b25d4af0412",
  "_bank": "rabobank",
  "_account": "NL08RABO2952747327",
  "type": "debit",
  "currency": "EUR",
  "amount": 2.6,
  "transaction_date": "2015-12-15T00:00:00.000Z",
  "description": "Afschrijving",
  "interest_date": "2015-12-15T00:00:00.000Z",
  "code": "ba"
}
```

### Changelog

* **v0.0.2** (28-03-2017)
  * Trim individual description fields as well
* **v0.0.1** (20-03-2017)
  * First published

[![Standard - JavaScript Style Guide](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com/)

### License

Copyright 2017 [Michiel van der Velde](http://www.michielvdvelde.nl).

This software is licensed under the [MIT License](LICENSE).

---
_Source: https://npm.io/package/rabobank-csv-converter · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
