diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index dd84ea782..b5c68e55b 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -4,7 +4,6 @@ about: Create a report to help us improve title: '' labels: '' assignees: '' - --- **Describe the bug** @@ -12,6 +11,7 @@ A clear and concise description of what the bug is. **To Reproduce** Steps to reproduce the behavior: + 1. Go to '...' 2. Click on '....' 3. Scroll down to '....' @@ -24,15 +24,17 @@ A clear and concise description of what you expected to happen. If applicable, add screenshots to help explain your problem. **Desktop (please complete the following information):** - - OS: [e.g. iOS] - - Browser [e.g. chrome, safari] - - Version [e.g. 22] + +- OS: [e.g. iOS] +- Browser [e.g. chrome, safari] +- Version [e.g. 22] **Smartphone (please complete the following information):** - - Device: [e.g. iPhone6] - - OS: [e.g. iOS8.1] - - Browser [e.g. stock browser, safari] - - Version [e.g. 22] + +- Device: [e.g. iPhone6] +- OS: [e.g. iOS8.1] +- Browser [e.g. stock browser, safari] +- Version [e.g. 22] **Additional context** Add any other context about the problem here. diff --git a/.github/workflows/publish-parsers.yml b/.github/workflows/publish-parsers.yml index 17d21f697..eb2df4acf 100644 --- a/.github/workflows/publish-parsers.yml +++ b/.github/workflows/publish-parsers.yml @@ -29,7 +29,6 @@ jobs: env: NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - name: publish parsers run: | cd packages/ynap-bank2ynab-converter diff --git a/.github/workflows/renovate-config-validator.yml b/.github/workflows/renovate-config-validator.yml index 0da68d599..84251ca05 100644 --- a/.github/workflows/renovate-config-validator.yml +++ b/.github/workflows/renovate-config-validator.yml @@ -18,4 +18,4 @@ jobs: - name: Validate uses: rinchsan/renovate-config-validator@1ea1e8514f6a33fdd71c40b0a5fa3512b9e7b936 # v0.0.12 with: - pattern: "renovate.json" + pattern: 'renovate.json' diff --git a/.github/workflows/test-parsers.yml b/.github/workflows/test-parsers.yml index ba103ee9b..8ec79af12 100644 --- a/.github/workflows/test-parsers.yml +++ b/.github/workflows/test-parsers.yml @@ -9,7 +9,6 @@ concurrency: permissions: packages: read - jobs: build: runs-on: ubuntu-latest diff --git a/.github/workflows/version-bump-bank2ynab-converter.yml b/.github/workflows/version-bump-bank2ynab-converter.yml index e6934d077..602601806 100644 --- a/.github/workflows/version-bump-bank2ynab-converter.yml +++ b/.github/workflows/version-bump-bank2ynab-converter.yml @@ -1,4 +1,4 @@ -name: "Check version bump for bank2ynab-converter" +name: 'Check version bump for bank2ynab-converter' on: pull_request: diff --git a/.github/workflows/version-bump-parsers.yml b/.github/workflows/version-bump-parsers.yml index 341cbda6f..c5249fb60 100644 --- a/.github/workflows/version-bump-parsers.yml +++ b/.github/workflows/version-bump-parsers.yml @@ -1,4 +1,4 @@ -name: "Check version bump for parsers" +name: 'Check version bump for parsers' on: pull_request: diff --git a/.github/workflows/version-bump-skip.yml b/.github/workflows/version-bump-skip.yml index d64360d82..b2e878abb 100644 --- a/.github/workflows/version-bump-skip.yml +++ b/.github/workflows/version-bump-skip.yml @@ -1,4 +1,4 @@ -name: "Skip version bump check" +name: 'Skip version bump check' on: pull_request: diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 81afeb9c4..7c4f76dcd 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -18,9 +18,13 @@ repos: rev: v4.5.0 hooks: - id: end-of-file-fixer + # Removing one of the two newlines at the end of this file breaks parsing. + exclude: packages/ynap-parsers/src/de/1822direkt/test-data/umsaetze-12345678-25.03.2020_11_45.csv - id: trailing-whitespace - - repo: https://github.com/renovatebot/pre-commit-hooks - rev: 37.51.0 + # Explicitly not using the renovate upstream hook because for some reason installing it is + # excruciatingly slow (> 10 minutes in some cases) + - repo: https://github.com/python-jsonschema/check-jsonschema + rev: 0.27.1 hooks: - - id: renovate-config-validator + - id: check-renovate diff --git a/LICENSE b/LICENSE index 1eedc09fe..e79c8d977 100644 --- a/LICENSE +++ b/LICENSE @@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. \ No newline at end of file +SOFTWARE. diff --git a/package.json b/package.json index fc98483ce..30b3faa56 100644 --- a/package.json +++ b/package.json @@ -4,5 +4,7 @@ "devDependencies": { "typescript": "5.2.2" }, - "workspaces": ["packages/*"] + "workspaces": [ + "packages/*" + ] } diff --git a/packages/ynap-bank2ynab-converter/.gitignore b/packages/ynap-bank2ynab-converter/.gitignore index 1b735c619..b00d7ec56 100644 --- a/packages/ynap-bank2ynab-converter/.gitignore +++ b/packages/ynap-bank2ynab-converter/.gitignore @@ -4,4 +4,4 @@ lib/ /*.js /*.ts -bank2ynab.json \ No newline at end of file +bank2ynab.json diff --git a/packages/ynap-bank2ynab-converter/package.json b/packages/ynap-bank2ynab-converter/package.json index d71f017e7..beb3d3bbd 100644 --- a/packages/ynap-bank2ynab-converter/package.json +++ b/packages/ynap-bank2ynab-converter/package.json @@ -1,6 +1,6 @@ { "name": "@envelope-zero/ynap-bank2ynab-converter", - "version": "1.14.40", + "version": "1.14.41", "license": "MIT", "author": { "email": "admin+github@leolabs.org", diff --git a/packages/ynap-parsers/jest.config.js b/packages/ynap-parsers/jest.config.js index b5676d522..c127305f2 100644 --- a/packages/ynap-parsers/jest.config.js +++ b/packages/ynap-parsers/jest.config.js @@ -5,5 +5,5 @@ module.exports = { }, testRegex: '(/__tests__/.*|(\\.|/)(test|spec))\\.tsx?$', moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'], - testEnvironment: "jsdom" + testEnvironment: 'jsdom', }; diff --git a/packages/ynap-parsers/package.json b/packages/ynap-parsers/package.json index 7a2ae30cb..c72ef5d19 100644 --- a/packages/ynap-parsers/package.json +++ b/packages/ynap-parsers/package.json @@ -1,6 +1,6 @@ { "name": "@envelope-zero/ynap-parsers", - "version": "1.15.33", + "version": "1.15.34", "description": "Parsers from various formats to YNAB CSV", "main": "index.js", "author": "Envelope Zero Team (https://envelope-zero.org)", diff --git a/packages/ynap-parsers/src/at/ing/ing-austria.ts b/packages/ynap-parsers/src/at/ing/ing-austria.ts index 7538e1f62..1c7bae04c 100644 --- a/packages/ynap-parsers/src/at/ing/ing-austria.ts +++ b/packages/ynap-parsers/src/at/ing/ing-austria.ts @@ -32,13 +32,13 @@ export const ingAustriaParser: ParserFunction = async (file: File) => { return [ { data: (data as IngAustriaRow[]) - .filter(r => r.Valutadatum && (r.Soll || r.Haben)) - .map(r => ({ + .filter((r) => r.Valutadatum && (r.Soll || r.Haben)) + .map((r) => ({ Date: generateYnabDate(r.Valutadatum), Payee: r.Text, Memo: undefined, - Outflow: r.Soll != "0,00" ? parseNumber(r.Soll).toFixed(2) : undefined, - Inflow: r.Haben != "0,00" ? parseNumber(r.Haben).toFixed(2) : undefined, + Outflow: r.Soll != '0,00' ? parseNumber(r.Soll).toFixed(2) : undefined, + Inflow: r.Haben != '0,00' ? parseNumber(r.Haben).toFixed(2) : undefined, })), }, ]; @@ -71,7 +71,7 @@ export const ingAustriaMatcher: MatcherFunction = async (file: File) => { } const keys = Object.keys(data[0]); - const missingKeys = requiredKeys.filter(k => !keys.includes(k)); + const missingKeys = requiredKeys.filter((k) => !keys.includes(k)); if (missingKeys.length === 0) { return true; diff --git a/packages/ynap-parsers/src/bank2ynab/banks.json b/packages/ynap-parsers/src/bank2ynab/banks.json index 77bd44324..e28b22ba2 100644 --- a/packages/ynap-parsers/src/bank2ynab/banks.json +++ b/packages/ynap-parsers/src/bank2ynab/banks.json @@ -4,14 +4,7 @@ "country": "at", "filenamePattern": "EASYBANK_Umsatzliste_20[0-9]{6}_[0-9]{4}\\.csv", "filenameExtension": "csv", - "inputColumns": [ - "skip", - "Memo", - "skip", - "Date", - "Inflow", - "skip" - ], + "inputColumns": ["skip", "Memo", "skip", "Date", "Inflow", "skip"], "link": "https://github.com/bank2ynab/bank2ynab/blob/develop/bank2ynab.conf#L58", "dateFormat": "%d.%m.%Y", "headerRows": 0, @@ -22,15 +15,7 @@ "country": "at", "filenamePattern": "elbi_umsaetze_20[0-9]{12}\\.csv", "filenameExtension": "csv", - "inputColumns": [ - "skip", - "Memo", - "Date", - "Inflow", - "skip", - "skip", - "skip" - ], + "inputColumns": ["skip", "Memo", "Date", "Inflow", "skip", "skip", "skip"], "link": "https://github.com/bank2ynab/bank2ynab/blob/develop/bank2ynab.conf#L67", "dateFormat": "%d.%m.%Y", "headerRows": 0, @@ -41,14 +26,7 @@ "country": "at", "filenamePattern": "kta_ei\\.dat", "filenameExtension": "dat", - "inputColumns": [ - "skip", - "Memo", - "Date", - "Payee", - "Inflow", - "Memo" - ], + "inputColumns": ["skip", "Memo", "Date", "Payee", "Inflow", "Memo"], "link": "https://github.com/bank2ynab/bank2ynab/blob/develop/bank2ynab.conf#L76", "dateFormat": "%Y%m%d", "headerRows": 1, @@ -59,15 +37,7 @@ "country": "at", "filenamePattern": "meinElba_umsaetze_AT[0-9]{18}_suche\\.csv", "filenameExtension": "csv", - "inputColumns": [ - "skip", - "Payee", - "Date", - "Inflow", - "skip", - "skip", - "skip" - ], + "inputColumns": ["skip", "Payee", "Date", "Inflow", "skip", "skip", "skip"], "link": "https://github.com/bank2ynab/bank2ynab/blob/develop/bank2ynab.conf#L84", "dateFormat": "%d.%m.%Y", "headerRows": 0, @@ -78,14 +48,7 @@ "country": "at", "filenamePattern": "meinElba_umsaetze_AT[0-9]{18}_suche\\.csv", "filenameExtension": "csv", - "inputColumns": [ - "skip", - "Payee", - "Date", - "Inflow", - "skip", - "skip" - ], + "inputColumns": ["skip", "Payee", "Date", "Inflow", "skip", "skip"], "link": "https://github.com/bank2ynab/bank2ynab/blob/develop/bank2ynab.conf#L93", "dateFormat": "%d.%m.%Y", "headerRows": 0, @@ -96,15 +59,7 @@ "country": "at", "filenamePattern": "finstatus_20[0-9]{12}\\.csv", "filenameExtension": "csv", - "inputColumns": [ - "skip", - "Payee", - "Memo", - "skip", - "skip", - "skip", - "Inflow" - ], + "inputColumns": ["skip", "Payee", "Memo", "skip", "skip", "skip", "Inflow"], "link": "https://github.com/bank2ynab/bank2ynab/blob/develop/bank2ynab.conf#L102", "dateFormat": "%d.%m.%Y", "headerRows": 0, @@ -115,11 +70,7 @@ "country": "au", "filenamePattern": "ANZ\\.csv", "filenameExtension": "csv", - "inputColumns": [ - "Date", - "Inflow", - "Payee" - ], + "inputColumns": ["Date", "Inflow", "Payee"], "link": "https://github.com/bank2ynab/bank2ynab/blob/develop/bank2ynab.conf#L111", "dateFormat": "%d/%m/%y", "headerRows": 0, @@ -130,13 +81,7 @@ "country": "au", "filenamePattern": "Transactions\\.csv", "filenameExtension": "csv", - "inputColumns": [ - "Date", - "Memo", - "Inflow", - "Inflow", - "skip" - ], + "inputColumns": ["Date", "Memo", "Inflow", "Inflow", "skip"], "link": "https://github.com/bank2ynab/bank2ynab/blob/develop/bank2ynab.conf#L118", "dateFormat": "%d/%m/%Y", "headerRows": 1, @@ -239,15 +184,7 @@ "country": "be", "filenamePattern": "export\\.csv", "filenameExtension": "csv", - "inputColumns": [ - "skip", - "Date", - "skip", - "Payee", - "Memo", - "Inflow", - "skip" - ], + "inputColumns": ["skip", "Date", "skip", "Payee", "Memo", "Inflow", "skip"], "link": "https://github.com/bank2ynab/bank2ynab/blob/develop/bank2ynab.conf#L180", "dateFormat": "%d.%m.%Y", "headerRows": 1, @@ -258,14 +195,7 @@ "country": "br", "filenamePattern": "extrato\\.csv", "filenameExtension": "csv", - "inputColumns": [ - "Date", - "skip", - "Payee", - "skip", - "skip", - "Inflow" - ], + "inputColumns": ["Date", "skip", "Payee", "skip", "skip", "Inflow"], "link": "https://github.com/bank2ynab/bank2ynab/blob/develop/bank2ynab.conf#L188", "dateFormat": "%d/%m/%Y", "headerRows": 1, @@ -276,12 +206,7 @@ "country": "br", "filenamePattern": "Extrato\\.csv", "filenameExtension": "csv", - "inputColumns": [ - "Date", - "Payee", - "Inflow", - "skip" - ], + "inputColumns": ["Date", "Payee", "Inflow", "skip"], "link": "https://github.com/bank2ynab/bank2ynab/blob/develop/bank2ynab.conf#L194", "headerRows": 1, "footerRows": 0 @@ -291,13 +216,7 @@ "country": "ca", "filenamePattern": "accountactivity\\.csv", "filenameExtension": "csv", - "inputColumns": [ - "Date", - "Payee", - "Outflow", - "Inflow", - "skip" - ], + "inputColumns": ["Date", "Payee", "Outflow", "Inflow", "skip"], "link": "https://github.com/bank2ynab/bank2ynab/blob/develop/bank2ynab.conf#L201", "dateFormat": "%m/%d/%Y", "headerRows": 0, @@ -413,15 +332,7 @@ "country": "ch", "filenamePattern": "^Erweiterte Suche - Kontoauszug, Buchungen \\d{14}\\.csv", "filenameExtension": "csv", - "inputColumns": [ - "Date", - "Payee", - "skip", - "skip", - "skip", - "Outflow", - "Inflow" - ], + "inputColumns": ["Date", "Payee", "skip", "skip", "skip", "Outflow", "Inflow"], "link": "https://github.com/bank2ynab/bank2ynab/blob/develop/bank2ynab.conf#L248", "dateFormat": "%d.%m.%Y", "headerRows": 1, @@ -432,15 +343,7 @@ "country": "ch", "filenamePattern": "^Finanzassistent-Chronik\\.csv", "filenameExtension": "csv", - "inputColumns": [ - "Date", - "Category", - "skip", - "Inflow", - "Memo", - "Payee", - "skip" - ], + "inputColumns": ["Date", "Category", "skip", "Inflow", "Memo", "Payee", "skip"], "link": "https://github.com/bank2ynab/bank2ynab/blob/develop/bank2ynab.conf#L257", "dateFormat": "%Y-%m-%d", "headerRows": 1, @@ -451,14 +354,7 @@ "country": "co", "filenamePattern": "[0-9]{3}-[0-9]{6}-[0-9]{2}_[0-9]{3}\\.txt", "filenameExtension": "txt", - "inputColumns": [ - "Date", - "skip", - "skip", - "Memo", - "skip", - "Inflow" - ], + "inputColumns": ["Date", "skip", "skip", "Memo", "skip", "Inflow"], "link": "https://github.com/bank2ynab/bank2ynab/blob/develop/bank2ynab.conf#L266", "dateFormat": "%Y/%m/%d", "headerRows": 1, @@ -754,14 +650,7 @@ "country": "de", "filenamePattern": "\\d{4}_{8}\\d{4}\\.csv", "filenameExtension": "csv", - "inputColumns": [ - "skip", - "skip", - "Date", - "Memo", - "Inflow", - "skip" - ], + "inputColumns": ["skip", "skip", "Date", "Memo", "Inflow", "skip"], "link": "https://github.com/bank2ynab/bank2ynab/blob/develop/bank2ynab.conf#L379", "dateFormat": "%d.%m.%Y", "headerRows": 7, @@ -789,11 +678,7 @@ ], "link": "https://github.com/bank2ynab/bank2ynab/blob/develop/bank2ynab.conf#L389", "dateFormat": "%d.%m.%Y", - "inflowOutflowFlag": [ - "12", - "H", - "S" - ], + "inflowOutflowFlag": ["12", "H", "S"], "headerRows": 13, "footerRows": 3 }, @@ -954,12 +839,7 @@ "country": "dk", "filenamePattern": "Posteringer\\.csv", "filenameExtension": "csv", - "inputColumns": [ - "Date", - "Payee", - "Inflow", - "Running Balance" - ], + "inputColumns": ["Date", "Payee", "Inflow", "Running Balance"], "link": "https://github.com/bank2ynab/bank2ynab/blob/develop/bank2ynab.conf#L458", "dateFormat": "%d-%m-%Y", "headerRows": 0, @@ -1011,13 +891,7 @@ "country": "dk", "filenamePattern": "poster\\.csv", "filenameExtension": "csv", - "inputColumns": [ - "Date", - "Payee", - "skip", - "Inflow", - "skip" - ], + "inputColumns": ["Date", "Payee", "skip", "Inflow", "skip"], "link": "https://github.com/bank2ynab/bank2ynab/blob/develop/bank2ynab.conf#L483", "dateFormat": "%Y-%m-%d", "headerRows": 1, @@ -1028,13 +902,7 @@ "country": "dk", "filenamePattern": "export\\.csv", "filenameExtension": "csv", - "inputColumns": [ - "skip", - "Date", - "Payee", - "Inflow", - "Running Balance" - ], + "inputColumns": ["skip", "Date", "Payee", "Inflow", "Running Balance"], "link": "https://github.com/bank2ynab/bank2ynab/blob/develop/bank2ynab.conf#L490", "dateFormat": "%d-%m-%Y", "headerRows": 0, @@ -1189,13 +1057,7 @@ "country": "ie", "filenamePattern": "[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}\\.csv", "filenameExtension": "csv", - "inputColumns": [ - "Date", - "Payee", - "Outflow", - "Inflow", - "skip" - ], + "inputColumns": ["Date", "Payee", "Outflow", "Inflow", "skip"], "link": "https://github.com/bank2ynab/bank2ynab/blob/develop/bank2ynab.conf#L541", "dateFormat": "%d/%m/%Y", "headerRows": 1, @@ -1227,15 +1089,7 @@ "country": "ie", "filenamePattern": "ACCOUNTNAME[0-9]{8}-20[0-9]{6}\\.csv", "filenameExtension": "csv", - "inputColumns": [ - "Date", - "skip", - "Payee", - "Inflow", - "skip", - "skip", - "skip" - ], + "inputColumns": ["Date", "skip", "Payee", "Inflow", "skip", "skip", "skip"], "link": "https://github.com/bank2ynab/bank2ynab/blob/develop/bank2ynab.conf#L563", "dateFormat": "%d/%m/%Y", "headerRows": 1, @@ -1246,15 +1100,7 @@ "country": "it", "filenamePattern": "listamovimenticsv[0-9]{2}_[0-9]{2}_20[0-9]{2}_[0-9]{2}_[0-9]{2}_[0-9]{2}\\.csv", "filenameExtension": "csv", - "inputColumns": [ - "Date", - "skip", - "Outflow", - "Inflow", - "skip", - "Memo", - "skip" - ], + "inputColumns": ["Date", "skip", "Outflow", "Inflow", "skip", "Memo", "skip"], "link": "https://github.com/bank2ynab/bank2ynab/blob/develop/bank2ynab.conf#L575", "dateFormat": "%d/%m/%Y", "headerRows": 1, @@ -1281,11 +1127,7 @@ ], "link": "https://github.com/bank2ynab/bank2ynab/blob/develop/bank2ynab.conf#L583", "dateFormat": "%d.%m.%Y", - "inflowOutflowFlag": [ - "7", - "K", - "D" - ], + "inflowOutflowFlag": ["7", "K", "D"], "headerRows": 2, "footerRows": 4 }, @@ -1294,14 +1136,7 @@ "country": "mint", "filenamePattern": "transactions\\.csv", "filenameExtension": "csv", - "inputColumns": [ - "Date", - "Payee", - "skip", - "Memo", - "Inflow", - "Category" - ], + "inputColumns": ["Date", "Payee", "skip", "Memo", "Inflow", "Category"], "link": "https://github.com/bank2ynab/bank2ynab/blob/develop/bank2ynab.conf#L593", "headerRows": 1, "footerRows": 0 @@ -1363,14 +1198,7 @@ "country": "nl", "filenamePattern": "[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}-[0-9]{2}-[0-9]{2}_bunq-(transactieoverzicht|statement)\\.csv", "filenameExtension": "csv", - "inputColumns": [ - "Date", - "Inflow", - "skip", - "skip", - "Payee", - "Memo" - ], + "inputColumns": ["Date", "Inflow", "skip", "skip", "Payee", "Memo"], "link": "https://github.com/bank2ynab/bank2ynab/blob/develop/bank2ynab.conf#L615", "dateFormat": "%Y-%m-%d", "headerRows": 1, @@ -1381,14 +1209,7 @@ "country": "nl", "filenamePattern": "bunq-export\\.[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{6}\\.csv", "filenameExtension": "csv", - "inputColumns": [ - "Date", - "Inflow", - "skip", - "Payee", - "skip", - "Memo" - ], + "inputColumns": ["Date", "Inflow", "skip", "Payee", "skip", "Memo"], "link": "https://github.com/bank2ynab/bank2ynab/blob/develop/bank2ynab.conf#L625", "dateFormat": "%Y-%m-%d", "headerRows": 1, @@ -1438,11 +1259,7 @@ ], "link": "https://github.com/bank2ynab/bank2ynab/blob/develop/bank2ynab.conf#L646", "dateFormat": "%Y%m%d", - "inflowOutflowFlag": [ - "5", - "Af", - "Bij" - ], + "inflowOutflowFlag": ["5", "Af", "Bij"], "headerRows": 1, "footerRows": 0 }, @@ -1464,11 +1281,7 @@ ], "link": "https://github.com/bank2ynab/bank2ynab/blob/develop/bank2ynab.conf#L656", "dateFormat": "%Y%m%d", - "inflowOutflowFlag": [ - "5", - "Bij", - "Af" - ], + "inflowOutflowFlag": ["5", "Bij", "Af"], "headerRows": 1, "footerRows": 0 }, @@ -1497,11 +1310,7 @@ ], "link": "https://github.com/bank2ynab/bank2ynab/blob/develop/bank2ynab.conf#L669", "dateFormat": "%d-%m-%Y", - "inflowOutflowFlag": [ - "3", - "C", - "D" - ], + "inflowOutflowFlag": ["3", "C", "D"], "headerRows": 2, "footerRows": 0 }, @@ -1526,11 +1335,7 @@ ], "link": "https://github.com/bank2ynab/bank2ynab/blob/develop/bank2ynab.conf#L681", "dateFormat": "%Y%m%d", - "inflowOutflowFlag": [ - "3", - "C", - "D" - ], + "inflowOutflowFlag": ["3", "C", "D"], "headerRows": 0, "footerRows": 0 }, @@ -1602,13 +1407,7 @@ "country": "no", "filenamePattern": "maanedtransaksjonliste-[a-z]{3}\\.csv", "filenameExtension": "csv", - "inputColumns": [ - "Date", - "Payee", - "skip", - "Outflow", - "Inflow" - ], + "inputColumns": ["Date", "Payee", "skip", "Outflow", "Inflow"], "link": "https://github.com/bank2ynab/bank2ynab/blob/develop/bank2ynab.conf#L708", "dateFormat": "%d.%m.%Y", "headerRows": 1, @@ -1619,15 +1418,7 @@ "country": "no", "filenamePattern": "OversiktKonti-\\d{2}.\\d{2}.\\d{4}-\\d{2}.\\d{2}.\\d{4}\\.csv", "filenameExtension": "csv", - "inputColumns": [ - "Date", - "Payee", - "skip", - "Inflow", - "Outflow", - "skip", - "skip" - ], + "inputColumns": ["Date", "Payee", "skip", "Inflow", "Outflow", "skip", "skip"], "link": "https://github.com/bank2ynab/bank2ynab/blob/develop/bank2ynab.conf#L717", "dateFormat": "%d.%m.%Y", "headerRows": 1, @@ -1638,14 +1429,7 @@ "country": "personal", "filenamePattern": "[A-Z][a-z]{2} [0-9]{2}-[0-9]{4} thru [A-Z][a-z]{2} [0-9]{2}-[0-9]{4} transactions\\.csv", "filenameExtension": "csv", - "inputColumns": [ - "Date", - "Payee", - "Memo", - "skip", - "skip", - "Inflow" - ], + "inputColumns": ["Date", "Payee", "Memo", "skip", "skip", "Inflow"], "link": "https://github.com/bank2ynab/bank2ynab/blob/develop/bank2ynab.conf#L725", "dateFormat": "%Y-%m-%d", "headerRows": 1, @@ -1743,13 +1527,7 @@ "country": "se", "filenamePattern": ".*konto senaste transaktioner [0-9]{4}-[0-9]{2}-[0-9]{2}\\.csv", "filenameExtension": "csv", - "inputColumns": [ - "skip", - "Date", - "Memo", - "Payee", - "Inflow" - ], + "inputColumns": ["skip", "Date", "Memo", "Payee", "Inflow"], "link": "https://github.com/bank2ynab/bank2ynab/blob/develop/bank2ynab.conf#L786", "dateFormat": "%Y-%m-%d", "headerRows": 4, @@ -1760,13 +1538,7 @@ "country": "se", "filenamePattern": "(nordea-)?export\\.csv", "filenameExtension": "csv", - "inputColumns": [ - "Date", - "Payee", - "skip", - "Inflow", - "skip" - ], + "inputColumns": ["Date", "Payee", "skip", "Inflow", "skip"], "link": "https://github.com/bank2ynab/bank2ynab/blob/develop/bank2ynab.conf#L798", "dateFormat": "%Y-%m-%d", "headerRows": 1, @@ -1797,14 +1569,7 @@ "country": "se", "filenamePattern": "Export\\.csv", "filenameExtension": "csv", - "inputColumns": [ - "Date", - "skip", - "skip", - "Memo", - "Inflow", - "skip" - ], + "inputColumns": ["Date", "skip", "skip", "Memo", "Inflow", "skip"], "link": "https://github.com/bank2ynab/bank2ynab/blob/develop/bank2ynab.conf#L821", "dateFormat": "%Y-%m-%d", "headerRows": 5, @@ -1815,13 +1580,7 @@ "country": "se", "filenamePattern": "export-\\d*\\.csv", "filenameExtension": "csv", - "inputColumns": [ - "Payee", - "Date", - "skip", - "Inflow", - "skip" - ], + "inputColumns": ["Payee", "Date", "skip", "Inflow", "skip"], "link": "https://github.com/bank2ynab/bank2ynab/blob/develop/bank2ynab.conf#L828", "dateFormat": "%Y-%m-%d", "headerRows": 0, @@ -1851,11 +1610,7 @@ ], "link": "https://github.com/bank2ynab/bank2ynab/blob/develop/bank2ynab.conf#L838", "dateFormat": "%Y/%m/%d", - "inflowOutflowFlag": [ - "7", - "K", - "D" - ], + "inflowOutflowFlag": ["7", "K", "D"], "headerRows": 2, "footerRows": 3 }, @@ -1864,13 +1619,7 @@ "country": "se", "filenamePattern": "export\\.csv", "filenameExtension": "csv", - "inputColumns": [ - "Payee", - "Date", - "skip", - "Inflow", - "skip" - ], + "inputColumns": ["Payee", "Date", "skip", "Inflow", "skip"], "link": "https://github.com/bank2ynab/bank2ynab/blob/develop/bank2ynab.conf#L848", "dateFormat": "%Y-%m-%d", "headerRows": 1, @@ -1905,15 +1654,7 @@ "country": "sg", "filenamePattern": "[0-9a-z]{32}.[A-Z][0-9]{15}\\.csv", "filenameExtension": "csv", - "inputColumns": [ - "Date", - "skip", - "Outflow", - "Inflow", - "Payee", - "Memo", - "skip" - ], + "inputColumns": ["Date", "skip", "Outflow", "Inflow", "Payee", "Memo", "skip"], "link": "https://github.com/bank2ynab/bank2ynab/blob/develop/bank2ynab.conf#L882", "dateFormat": "%d %b %Y", "headerRows": 0, @@ -1943,11 +1684,7 @@ ], "link": "https://github.com/bank2ynab/bank2ynab/blob/develop/bank2ynab.conf#L890", "dateFormat": "%d.%m.%Y", - "inflowOutflowFlag": [ - "4", - "Kredit", - "Debet" - ], + "inflowOutflowFlag": ["4", "Kredit", "Debet"], "headerRows": 1, "footerRows": 0 }, @@ -1983,14 +1720,7 @@ "country": "uk", "filenamePattern": "[0-9]{6}_[0-9]{8}_[0-9]{4}-[0-9]{2}-[0-9]{2}\\.csv", "filenameExtension": "csv", - "inputColumns": [ - "Date", - "Payee", - "Memo", - "Inflow", - "Outflow", - "skip" - ], + "inputColumns": ["Date", "Payee", "Memo", "Inflow", "Outflow", "skip"], "link": "https://github.com/bank2ynab/bank2ynab/blob/develop/bank2ynab.conf#L909", "headerRows": 1, "footerRows": 0 @@ -2077,12 +1807,7 @@ "country": "uk", "filenamePattern": "20[0-9]{6}_[0-9]{8}\\.csv", "filenameExtension": "csv", - "inputColumns": [ - "Date", - "Payee", - "Inflow", - "skip" - ], + "inputColumns": ["Date", "Payee", "Inflow", "skip"], "link": "https://github.com/bank2ynab/bank2ynab/blob/develop/bank2ynab.conf#L943", "headerRows": 1, "footerRows": 0 @@ -2092,12 +1817,7 @@ "country": "uk", "filenamePattern": "[A-Z_]*_[0-9]{2}-[0-9]{2}-[0-9]{4}_[0-9]{2}-[0-9]{2}-[0-9]{4}\\.csv", "filenameExtension": "csv", - "inputColumns": [ - "Date", - "Payee", - "Outflow", - "skip" - ], + "inputColumns": ["Date", "Payee", "Outflow", "skip"], "link": "https://github.com/bank2ynab/bank2ynab/blob/develop/bank2ynab.conf#L950", "dateFormat": "%d-%b-%Y", "headerRows": 1, @@ -2108,11 +1828,7 @@ "country": "uk", "filenamePattern": "transactions\\.csv", "filenameExtension": "csv", - "inputColumns": [ - "Date", - "Payee", - "Outflow" - ], + "inputColumns": ["Date", "Payee", "Outflow"], "link": "https://github.com/bank2ynab/bank2ynab/blob/develop/bank2ynab.conf#L958", "dateFormat": "%d/%m/%Y", "headerRows": 1, @@ -2123,12 +1839,7 @@ "country": "us", "filenamePattern": "stmt(-\\d+)?\\.csv", "filenameExtension": "csv", - "inputColumns": [ - "Date", - "Payee", - "Outflow", - "skip" - ], + "inputColumns": ["Date", "Payee", "Outflow", "skip"], "link": "https://github.com/bank2ynab/bank2ynab/blob/develop/bank2ynab.conf#L967", "dateFormat": "%m/%d/%Y", "headerRows": 7, @@ -2139,13 +1850,7 @@ "country": "us", "filenamePattern": "((Jan|Febr)uary|March|April|May|(Ju(ne|ly))|August|((Sept|Nov|Dec)ember)|October)[0-9]{4}_[0-9]{4}\\.csv", "filenameExtension": "csv", - "inputColumns": [ - "Date", - "skip", - "Memo", - "skip", - "Inflow" - ], + "inputColumns": ["Date", "skip", "Memo", "skip", "Inflow"], "link": "https://github.com/bank2ynab/bank2ynab/blob/develop/bank2ynab.conf#L975", "dateFormat": "%m/%d/%Y", "headerRows": 1, @@ -2156,14 +1861,7 @@ "country": "us", "filenamePattern": "EXPORT\\.csv", "filenameExtension": "csv", - "inputColumns": [ - "Date", - "skip", - "skip", - "Payee", - "Inflow", - "skip" - ], + "inputColumns": ["Date", "skip", "skip", "Payee", "Inflow", "skip"], "link": "https://github.com/bank2ynab/bank2ynab/blob/develop/bank2ynab.conf#L984", "headerRows": 1, "footerRows": 0 @@ -2173,13 +1871,7 @@ "country": "us", "filenamePattern": "Chase[0-9]{4}_(Activity_Stmt|RecentActivity)_[0-9]{8}\\.csv", "filenameExtension": "csv", - "inputColumns": [ - "skip", - "Date", - "skip", - "Memo", - "Inflow" - ], + "inputColumns": ["skip", "Date", "skip", "Memo", "Inflow"], "link": "https://github.com/bank2ynab/bank2ynab/blob/develop/bank2ynab.conf#L993", "dateFormat": "%m/%d/%Y", "headerRows": 1, @@ -2190,15 +1882,7 @@ "country": "us", "filenamePattern": "Chase[0-9]{4}_Activity[0-9]{8}(_[0-9]{8})*\\.csv", "filenameExtension": "csv", - "inputColumns": [ - "skip", - "Date", - "skip", - "Memo", - "skip", - "skip", - "Inflow" - ], + "inputColumns": ["skip", "Date", "skip", "Memo", "skip", "skip", "Inflow"], "link": "https://github.com/bank2ynab/bank2ynab/blob/develop/bank2ynab.conf#L1001", "dateFormat": "%m/%d/%Y", "headerRows": 1, @@ -2209,15 +1893,7 @@ "country": "us", "filenamePattern": "Source Filename Pattern = XXXXXX[0-9]{6}_(Checking)_Transactions_[0-9]{8}-[0-9]{6}\\.csv", "filenameExtension": "csv", - "inputColumns": [ - "Date", - "skip", - "skip", - "Payee", - "Outflow", - "Inflow", - "skip" - ], + "inputColumns": ["Date", "skip", "skip", "Payee", "Outflow", "Inflow", "skip"], "link": "https://github.com/bank2ynab/bank2ynab/blob/develop/bank2ynab.conf#L1008", "dateFormat": "%m/%d/%Y", "headerRows": 3, @@ -2228,15 +1904,7 @@ "country": "us", "filenamePattern": "Source Filename Pattern = XXXXXX[0-9]{6}_(Savings)_Transactions_[0-9]{8}-[0-9]{6}\\.csv", "filenameExtension": "csv", - "inputColumns": [ - "Date", - "skip", - "skip", - "Payee", - "Outflow", - "Inflow", - "skip" - ], + "inputColumns": ["Date", "skip", "skip", "Payee", "Outflow", "Inflow", "skip"], "link": "https://github.com/bank2ynab/bank2ynab/blob/develop/bank2ynab.conf#L1016", "dateFormat": "%m/%d/%Y", "headerRows": 3, @@ -2247,18 +1915,10 @@ "country": "us", "filenamePattern": "bk_download\\.csv", "filenameExtension": "csv", - "inputColumns": [ - "skip", - "skip", - "Date", - "Memo", - "Payee", - "skip", - "Inflow" - ], + "inputColumns": ["skip", "skip", "Date", "Memo", "Payee", "skip", "Inflow"], "link": "https://github.com/bank2ynab/bank2ynab/blob/develop/bank2ynab.conf#L1034", "dateFormat": "%m/%d/%Y", "headerRows": 0, "footerRows": 0 } -] \ No newline at end of file +] diff --git a/packages/ynap-parsers/src/bank2ynab/test-data/CSV_A_20180414_112204.csv b/packages/ynap-parsers/src/bank2ynab/test-data/CSV_A_20180414_112204.csv index e17354ab8..11715336b 100644 --- a/packages/ynap-parsers/src/bank2ynab/test-data/CSV_A_20180414_112204.csv +++ b/packages/ynap-parsers/src/bank2ynab/test-data/CSV_A_20180414_112204.csv @@ -1,4 +1,4 @@ -"IBAN/BBAN","Munt","BIC","Volgnr","Datum","Rentedatum","Bedrag","Saldo na trn","Tegenrekening IBAN/BBAN","Naam tegenpartij","Naam uiteindelijke partij","Naam initiërende partij","BIC tegenpartij","Code","Batch ID","Transactiereferentie","Machtigingskenmerk","Incassant ID","Betalingskenmerk","Omschrijving-1","Omschrijving-2","Omschrijving-3","Reden retour","Oorspr bedrag","Oorspr munt","Koers" -"NL77RABO0311467415","EUR","RABONL2U","000000000000009565","2018-03-01","2018-03-01","-337,49","+5257,28","3114904483","","","","","db","","","","","","RENTE LENING"," ","","","","","" -NL77RABO0311467415","EUR","RABONL2U","000000000000009590","2018-03-14","2018-03-14","+50,00","+13084,53","NL62INGB0663707048","Nederlandse Loterij Organisatie B.V.","","","INGBNL2A","cb","","18753493.6094","","","","Gefeliciteerd, Gewonnen met Staatsloterij, Trekking 10-03-2018, 18753493.6094"," ","","","","","" -"NL77RABO0311467415","EUR","RABONL2U","000000000000009591","2018-03-16","2018-03-16","-750,00","+12334,53","NL47BUNQ2025181418","W. Koelewijn","","Rabobank Nederland APO","BUNQNL2AXXX","bg","","","","","","Naar Bunq"," ","","","","","" +"IBAN/BBAN","Munt","BIC","Volgnr","Datum","Rentedatum","Bedrag","Saldo na trn","Tegenrekening IBAN/BBAN","Naam tegenpartij","Naam uiteindelijke partij","Naam initiërende partij","BIC tegenpartij","Code","Batch ID","Transactiereferentie","Machtigingskenmerk","Incassant ID","Betalingskenmerk","Omschrijving-1","Omschrijving-2","Omschrijving-3","Reden retour","Oorspr bedrag","Oorspr munt","Koers" +"NL77RABO0311467415","EUR","RABONL2U","000000000000009565","2018-03-01","2018-03-01","-337,49","+5257,28","3114904483","","","","","db","","","","","","RENTE LENING"," ","","","","","" +NL77RABO0311467415","EUR","RABONL2U","000000000000009590","2018-03-14","2018-03-14","+50,00","+13084,53","NL62INGB0663707048","Nederlandse Loterij Organisatie B.V.","","","INGBNL2A","cb","","18753493.6094","","","","Gefeliciteerd, Gewonnen met Staatsloterij, Trekking 10-03-2018, 18753493.6094"," ","","","","","" +"NL77RABO0311467415","EUR","RABONL2U","000000000000009591","2018-03-16","2018-03-16","-750,00","+12334,53","NL47BUNQ2025181418","W. Koelewijn","","Rabobank Nederland APO","BUNQNL2AXXX","bg","","","","","","Naar Bunq"," ","","","","","" diff --git a/packages/ynap-parsers/src/de/1822direkt/1822direkt.ts b/packages/ynap-parsers/src/de/1822direkt/1822direkt.ts index 423ba0f4a..eadb81801 100644 --- a/packages/ynap-parsers/src/de/1822direkt/1822direkt.ts +++ b/packages/ynap-parsers/src/de/1822direkt/1822direkt.ts @@ -76,7 +76,7 @@ export const getMergedMemo = (r: Row) => .filter(Boolean) // When the string is 35 characters long, it's likely to overflow into the next // field, so we don't add a space. Otherwise, we add a space for separation. - .map(s => (s.length >= 35 ? s : s + ' ')) + .map((s) => (s.length >= 35 ? s : s + ' ')) .join('') .trim(); @@ -88,8 +88,8 @@ export const _1822direktParser: ParserFunction = async (file: File) => { { accountName: String(data[0]?.Kontonummer), data: (data as Row[]) - .filter(r => r.Buchungstag && r['Soll/Haben']) - .map(r => ({ + .filter((r) => r.Buchungstag && r['Soll/Haben']) + .map((r) => ({ Date: generateYnabDate(r.Buchungstag), Payee: r['Empfänger/Auftraggeber Name'], Memo: getMergedMemo(r), @@ -136,7 +136,7 @@ export const _1822direktMatcher: MatcherFunction = async (file: File) => { } const keys = Object.keys(data[0]); - const missingKeys = requiredKeys.filter(k => !keys.includes(k)); + const missingKeys = requiredKeys.filter((k) => !keys.includes(k)); if (missingKeys.length === 0) { return true; diff --git a/packages/ynap-parsers/src/de/comdirect/comdirect.ts b/packages/ynap-parsers/src/de/comdirect/comdirect.ts index db81d3fd9..a5a4e5cb2 100644 --- a/packages/ynap-parsers/src/de/comdirect/comdirect.ts +++ b/packages/ynap-parsers/src/de/comdirect/comdirect.ts @@ -24,7 +24,8 @@ export const generateYnabDate = (input: string) => { // Replace '.' with '' to remove German format thousands separator, then // replace ',' with '.' to convert from German decimal separator to TS-style '.' -export const parseNumber = (input: string) => Number(input.replace('.', '').replace(',', '.')); +export const parseNumber = (input: string) => + Number(input.replace('.', '').replace(',', '.')); export const trimMetaData = (input: string) => { const beginning = input.indexOf('"Buchungstag"'); @@ -68,7 +69,7 @@ export const extractField = ( // key so we can remove everything after that. const nextField = new RegExp( `(${Object.keys(postingTextFields) - .map(k => k.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')) + .map((k) => k.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')) .join('|')})`, 'i', ); @@ -86,8 +87,10 @@ export const comdirectParser: ParserFunction = async (file: File) => { return [ { data: (data as ComdirectRow[]) - .filter(r => r.Buchungstag && r.Buchungstag != "offen" && r['Umsatz in EUR']) - .map(r => ({ + .filter( + (r) => r.Buchungstag && r.Buchungstag != 'offen' && r['Umsatz in EUR'], + ) + .map((r) => ({ Date: generateYnabDate(r.Buchungstag), Payee: extractField(r.Buchungstext, 'Empfänger') || @@ -134,7 +137,7 @@ export const comdirectMatcher: MatcherFunction = async (file: File) => { } const keys = Object.keys(data[0]); - const missingKeys = requiredKeys.filter(k => !keys.includes(k)); + const missingKeys = requiredKeys.filter((k) => !keys.includes(k)); if (missingKeys.length === 0) { return true; diff --git a/packages/ynap-parsers/src/de/comdirect/test-data/umsaetze_1182395341_20190403-2324.csv b/packages/ynap-parsers/src/de/comdirect/test-data/umsaetze_1182395341_20190403-2324.csv index 54a3c785e..42c11d666 100644 --- a/packages/ynap-parsers/src/de/comdirect/test-data/umsaetze_1182395341_20190403-2324.csv +++ b/packages/ynap-parsers/src/de/comdirect/test-data/umsaetze_1182395341_20190403-2324.csv @@ -8,4 +8,3 @@ "01.04.2019";"01.04.2019";"DTA-glt. Buchung";" Zahlungspflichtiger: Leo BernardKto/IBAN: DE84100000012000035900 BLZ/BIC: XXXXXXXXX Buchungstext: Lastschrift Sparplan 1 Ref. H9219087I4644658/2 ";"180,00"; "Alter Kontostand";"16,89 EUR"; - diff --git a/packages/ynap-parsers/src/de/ing-diba/ing-diba.ts b/packages/ynap-parsers/src/de/ing-diba/ing-diba.ts index 43faebbea..7f6b8a80e 100644 --- a/packages/ynap-parsers/src/de/ing-diba/ing-diba.ts +++ b/packages/ynap-parsers/src/de/ing-diba/ing-diba.ts @@ -24,7 +24,8 @@ export const generateYnabDate = (input: string) => { return [month.padStart(2, '0'), day.padStart(2, '0'), year].join('/'); }; -export const parseNumber = (input: string) => Number(input.replace('.','').replace(',', '.')); +export const parseNumber = (input: string) => + Number(input.replace('.', '').replace(',', '.')); export const trimMetaData = (input: string) => input.substr(input.indexOf('Buchung;')); @@ -36,8 +37,8 @@ export const ingDiBaParser: ParserFunction = async (file: File) => { return [ { data: (data as IngDiBaRow[]) - .filter(r => r.Buchung && r.Betrag) - .map(r => ({ + .filter((r) => r.Buchung && r.Betrag) + .map((r) => ({ Date: generateYnabDate(r.Buchung), Payee: r['Auftraggeber/Empfänger'], Memo: r.Verwendungszweck, @@ -78,7 +79,7 @@ export const ingDiBaMatcher: MatcherFunction = async (file: File) => { } const keys = Object.keys(data[0]); - const missingKeys = requiredKeys.filter(k => !keys.includes(k)); + const missingKeys = requiredKeys.filter((k) => !keys.includes(k)); if (missingKeys.length === 0) { return true; diff --git a/packages/ynap-parsers/src/de/kontist/kontist.ts b/packages/ynap-parsers/src/de/kontist/kontist.ts index 75cab5fc8..85986030a 100644 --- a/packages/ynap-parsers/src/de/kontist/kontist.ts +++ b/packages/ynap-parsers/src/de/kontist/kontist.ts @@ -29,8 +29,8 @@ export const kontistParser: ParserFunction = async (file: File) => { return [ { data: (data as KontistRow[]) - .filter(r => r.booking_date && r.amount) - .map(r => ({ + .filter((r) => r.booking_date && r.amount) + .map((r) => ({ Date: generateYnabDate(r.booking_date), Payee: r.name, Memo: r.purpose, @@ -60,7 +60,7 @@ export const kontistMatcher: MatcherFunction = async (file: File) => { } const keys = Object.keys(data[0]); - const missingKeys = requiredKeys.filter(k => !keys.includes(k)); + const missingKeys = requiredKeys.filter((k) => !keys.includes(k)); if (missingKeys.length === 0) { return true; diff --git a/packages/ynap-parsers/src/de/n26/test-data/n26-csv-transactions-2022.csv b/packages/ynap-parsers/src/de/n26/test-data/n26-csv-transactions-2022.csv index 43ff961ca..df0b5a00c 100644 --- a/packages/ynap-parsers/src/de/n26/test-data/n26-csv-transactions-2022.csv +++ b/packages/ynap-parsers/src/de/n26/test-data/n26-csv-transactions-2022.csv @@ -1,4 +1,4 @@ Date;Payee;Payee;Transaction type;Payment reference;Amount (EUR);Amount (Foreign Currency);Type Foreign Currency;Exchange Rate 2022-01-17;;;Income;N26 Cashback;0.74;;; 2022-01-17;Sample data;;MasterCard Payment;-;-8.4;-8.4;EUR;1.0 -2022-01-17;Sample data;;MasterCard Payment;;-10.0;-10.0;EUR;1.0 \ No newline at end of file +2022-01-17;Sample data;;MasterCard Payment;;-10.0;-10.0;EUR;1.0 diff --git a/packages/ynap-parsers/src/de/outbank/outbank.ts b/packages/ynap-parsers/src/de/outbank/outbank.ts index beab93755..91e4d5740 100644 --- a/packages/ynap-parsers/src/de/outbank/outbank.ts +++ b/packages/ynap-parsers/src/de/outbank/outbank.ts @@ -51,7 +51,7 @@ export const outbankParser: ParserFunction = async (file: File) => { const banks = (await import('./blz.json')).default; const groupedData = (data as OutbankRow[]) - .filter(r => r.Date && r.Amount) + .filter((r) => r.Date && r.Amount) .reduce( (acc, cur) => { const data = { @@ -87,7 +87,7 @@ export const outbankParser: ParserFunction = async (file: File) => { ? slugify(banks[key.substr(4, 8)]).toLowerCase() : 'unknown'; - return Object.keys(groupedData).map(key => ({ + return Object.keys(groupedData).map((key) => ({ accountName: iban.isValid(key) ? getBankSlug(key) : key, data: groupedData[key], })); @@ -115,7 +115,7 @@ export const outbankMatcher: MatcherFunction = async (file: File) => { } const keys = Object.keys(data[0]); - const missingKeys = requiredKeys.filter(k => !keys.includes(k)); + const missingKeys = requiredKeys.filter((k) => !keys.includes(k)); if (missingKeys.length === 0) { return true; @@ -129,8 +129,7 @@ export const outbank: ParserModule = { country: 'de', fileExtension: 'csv', filenamePattern: /^Outbank_Export_(\d{8})\.csv/, - link: - 'https://help.outbankapp.com/en/kb/articles/wie-kann-ich-ums-tze-als-csv-datei-exportieren', + link: 'https://help.outbankapp.com/en/kb/articles/wie-kann-ich-ums-tze-als-csv-datei-exportieren', match: outbankMatcher, parse: outbankParser, }; diff --git a/packages/ynap-parsers/src/de/outbank/test-data/Outbank_Export_20190403.csv b/packages/ynap-parsers/src/de/outbank/test-data/Outbank_Export_20190403.csv index 49249e0e0..c703eefa1 100644 --- a/packages/ynap-parsers/src/de/outbank/test-data/Outbank_Export_20190403.csv +++ b/packages/ynap-parsers/src/de/outbank/test-data/Outbank_Export_20190403.csv @@ -1,3 +1,3 @@ #;Account;Date;Value Date;Amount;Currency;Name;Number;Bank;Reason;Category;Subcategory;Tags;Note;Bank name;Ultimate Receiver Name;Original Amount;Compensation Amount;Exchange Rate;Posting Key;Posting Text;Purpose Code;SEPA Reference;Client Reference;Mandate Identification;Originator Identifier 1;DE12500105170648489890;4/2/19;;-44,98;EUR;;;;"SHELL";"Travel";"Gas Station";;;;;"-44,98";;"1";;;;;;; -2;DE12500105170648489890;4/2/19;;-109,00;EUR;"Musikschule";"";"";"Gesang";;;;;;;;;;;;;;;; \ No newline at end of file +2;DE12500105170648489890;4/2/19;;-109,00;EUR;"Musikschule";"";"";"Gesang";;;;;;;;;;;;;;;; diff --git a/packages/ynap-parsers/src/de/volksbank-eg/test-data/Umsaetze_test_2019.06.19.csv b/packages/ynap-parsers/src/de/volksbank-eg/test-data/Umsaetze_test_2019.06.19.csv index 5c6508b3f..19e3fef1e 100644 --- a/packages/ynap-parsers/src/de/volksbank-eg/test-data/Umsaetze_test_2019.06.19.csv +++ b/packages/ynap-parsers/src/de/volksbank-eg/test-data/Umsaetze_test_2019.06.19.csv @@ -10,7 +10,7 @@ Zeitraum:;;von:;28.03.2019;bis:;;;;;;;; Betrag in EUR:;;von:; ;bis:; ;;;;;;; Sortiert nach:;Buchungstag;absteigend;;;;;;;;;; ;;;;;;;;;;;; -Buchungstag;Valuta;Auftraggeber/Zahlungsempfänger;Empfänger/Zahlungspflichtiger;Konto-Nr.;IBAN;BLZ;BIC;Vorgang/Verwendungszweck;Kundenreferenz;Währung;Umsatz; +Buchungstag;Valuta;Auftraggeber/Zahlungsempfänger;Empfänger/Zahlungspflichtiger;Konto-Nr.;IBAN;BLZ;BIC;Vorgang/Verwendungszweck;Kundenreferenz;Währung;Umsatz; 03.04.2019;04.04.2019;Hermann Testkunde;Gartenbauverein;12345678;;70190000;;"ÜBERWEISUNG Quartalsbeitrag Gartenbauverein Musterstadt 73 e.V. diff --git a/packages/ynap-parsers/src/de/volksbank-eg/volksbank-eg.ts b/packages/ynap-parsers/src/de/volksbank-eg/volksbank-eg.ts index 4cd7aa60b..517c77d35 100644 --- a/packages/ynap-parsers/src/de/volksbank-eg/volksbank-eg.ts +++ b/packages/ynap-parsers/src/de/volksbank-eg/volksbank-eg.ts @@ -52,7 +52,7 @@ export const sanitizeMemo = (input: string) => { return input .split('\n') .slice(1) - .filter(r => !r.startsWith('Verwendete TAN:')) + .filter((r) => !r.startsWith('Verwendete TAN:')) .join(' '); }; @@ -63,8 +63,8 @@ export const volksbankParser: ParserFunction = async (file: File) => { return [ { data: (data as VolksbankRow[]) - .filter(r => r.Valuta && r.Umsatz) - .map(r => ({ + .filter((r) => r.Valuta && r.Umsatz) + .map((r) => ({ Date: generateYnabDate(r.Valuta), Payee: r['Empfänger/Zahlungspflichtiger'], Memo: sanitizeMemo(r['Vorgang/Verwendungszweck']), @@ -109,7 +109,7 @@ export const volksbankMatcher: MatcherFunction = async (file: File) => { } const keys = Object.keys(data[0]); - const missingKeys = requiredKeys.filter(k => !keys.includes(k)); + const missingKeys = requiredKeys.filter((k) => !keys.includes(k)); if (missingKeys.length === 0) { return true; diff --git a/packages/ynap-parsers/src/index.ts b/packages/ynap-parsers/src/index.ts index da15c6d35..aecef01eb 100644 --- a/packages/ynap-parsers/src/index.ts +++ b/packages/ynap-parsers/src/index.ts @@ -94,7 +94,7 @@ export const parsers: ParserModule[] = [ ]; export const countries = uniq( - parsers.filter(p => p.country.length === 2).map(p => p.country), + parsers.filter((p) => p.country.length === 2).map((p) => p.country), ); export const matchFile = async (file: File): Promise => { @@ -102,20 +102,20 @@ export const matchFile = async (file: File): Promise => { throw new Error('This file has already been converted by YNAP.'); } - const filenameMatches = parsers.filter(p => file.name.match(p.filenamePattern)); + const filenameMatches = parsers.filter((p) => file.name.match(p.filenamePattern)); // If parser modules match the file by its filename, try those first if (filenameMatches.length > 0) { const parsers = ( await Promise.all( - filenameMatches.map(async p => ({ + filenameMatches.map(async (p) => ({ parser: p, matched: await p.match(file), })), ) ) - .filter(r => r.matched) - .map(p => p.parser); + .filter((r) => r.matched) + .map((p) => p.parser); if (parsers.length > 0) { return parsers; @@ -127,18 +127,18 @@ export const matchFile = async (file: File): Promise => { await Promise.all( parsers .filter( - p => + (p) => p.fileExtension.toLowerCase() === last(file.name.split('.')).toLowerCase(), ) - .map(async p => ({ + .map(async (p) => ({ parser: p, matched: await p.match(file), })), ) ) - .filter(r => r.matched) - .map(p => p.parser); + .filter((r) => r.matched) + .map((p) => p.parser); return results; }; @@ -154,7 +154,7 @@ export const parseFile = async (file: File, parserOverride?: ParserModule) => { 'The file', file.name, 'was matched by', - matches.map(m => m.name).join(', '), + matches.map((m) => m.name).join(', '), ); parser = matches.length > 0 ? matches[0] : null; } @@ -165,7 +165,7 @@ export const parseFile = async (file: File, parserOverride?: ParserModule) => { const ynabData = await parser.parse(file); - return ynabData.map(f => ({ + return ynabData.map((f) => ({ ...f, data: unparse(f.data), rawData: f.data, diff --git a/packages/ynap-parsers/src/international/mt940/mt940.spec.ts b/packages/ynap-parsers/src/international/mt940/mt940.spec.ts index bba90250f..cd79f3a8d 100644 --- a/packages/ynap-parsers/src/international/mt940/mt940.spec.ts +++ b/packages/ynap-parsers/src/international/mt940/mt940.spec.ts @@ -19,8 +19,7 @@ const output: YnabFile[] = [ Outflow: 0.99, Inflow: undefined, Date: '08/26/2019', - Memo: - '/NAME/Aral Station 140974148/REMI/Aral Station 140974148 Brueggen, DE', + Memo: '/NAME/Aral Station 140974148/REMI/Aral Station 140974148 Brueggen, DE', }, { Outflow: 0.01, diff --git a/packages/ynap-parsers/src/international/mt940/mt940.ts b/packages/ynap-parsers/src/international/mt940/mt940.ts index d79f4ee33..71d4370a7 100644 --- a/packages/ynap-parsers/src/international/mt940/mt940.ts +++ b/packages/ynap-parsers/src/international/mt940/mt940.ts @@ -14,7 +14,7 @@ export const generateYnabDate = (input: string) => { return [month.padStart(2, '0'), day.padStart(2, '0'), year].join('/'); }; -export const mt940matcher: MatcherFunction = async file => { +export const mt940matcher: MatcherFunction = async (file) => { const mt = await import('mt940-js'); const buffer = await readToBuffer(file); @@ -26,25 +26,25 @@ export const mt940matcher: MatcherFunction = async file => { return false; }; -export const mt940parser: ParserFunction = async file => { +export const mt940parser: ParserFunction = async (file) => { const mt = await import('mt940-js'); const buffer = await readToBuffer(file); const statements = await mt.read(buffer); return statements.map( - s => + (s) => ({ accountName: [s.referenceNumber, s.accountId].filter(Boolean).join(' '), data: s.transactions.map( - t => + (t) => ({ Inflow: t.isCredit ? t.amount : undefined, Outflow: t.isCredit ? undefined : t.amount, Date: generateYnabDate(t.entryDate), Memo: t.description, - } as YnabRow), + }) as YnabRow, ), - } as YnabFile), + }) as YnabFile, ); }; diff --git a/packages/ynap-parsers/src/international/revolut/revolut.ts b/packages/ynap-parsers/src/international/revolut/revolut.ts index bad534e53..2c98c3765 100644 --- a/packages/ynap-parsers/src/international/revolut/revolut.ts +++ b/packages/ynap-parsers/src/international/revolut/revolut.ts @@ -25,8 +25,8 @@ export const revolutParser: ParserFunction = async (file: File) => { { data: (data as string[][]) .slice(1) - .filter(r => r[0]) - .map(r => ({ + .filter((r) => r[0]) + .map((r) => ({ Date: generateYnabDate(r[COMPLETED_DATE]), Payee: r[REFERENCE].trim(), Category: r[CATEGORY].trim(), @@ -39,7 +39,12 @@ export const revolutParser: ParserFunction = async (file: File) => { }; export const revolutMatcher: MatcherFunction = async (file: File) => { - const requiredKeys: string[] = ['Completed Date', 'Reference', 'Exchange Rate', 'Category']; + const requiredKeys: string[] = [ + 'Completed Date', + 'Reference', + 'Exchange Rate', + 'Category', + ]; const { data } = await parseCsv(file, { preview: 1 }); @@ -47,8 +52,8 @@ export const revolutMatcher: MatcherFunction = async (file: File) => { return false; } - const csvColumnNames = data[0].map(r => r.trim()); - return requiredKeys.every(key => csvColumnNames.includes(key)); + const csvColumnNames = data[0].map((r) => r.trim()); + return requiredKeys.every((key) => csvColumnNames.includes(key)); }; export const revolut: ParserModule = { diff --git a/packages/ynap-parsers/src/mx/bbva-bancomer/bbva-bancomer.ts b/packages/ynap-parsers/src/mx/bbva-bancomer/bbva-bancomer.ts index 5532db1a9..23e591501 100644 --- a/packages/ynap-parsers/src/mx/bbva-bancomer/bbva-bancomer.ts +++ b/packages/ynap-parsers/src/mx/bbva-bancomer/bbva-bancomer.ts @@ -30,7 +30,7 @@ export const trimMetaData = (input: string) => { return lines .splice(3) .filter( - l => + (l) => l && l.trim() !== '' && !l.startsWith(' ') && !l.match(/^"BBVA (.+)"/), ) .join('\n'); @@ -43,8 +43,8 @@ export const bancomerParser: ParserFunction = async (file: File) => { return [ { data: (data as string[][]) - .filter(r => r[0] && r[0].trim()) - .map(r => ({ + .filter((r) => r[0] && r[0].trim()) + .map((r) => ({ Date: generateYnabDate(r[0]), Memo: r[1], Outflow: r[2] ? parseNumber(r[2]) : undefined, diff --git a/packages/ynap-parsers/src/pl/bank-pocztowy/bank-pocztowy.ts b/packages/ynap-parsers/src/pl/bank-pocztowy/bank-pocztowy.ts index ed15b8bdf..ffd5f7a2c 100644 --- a/packages/ynap-parsers/src/pl/bank-pocztowy/bank-pocztowy.ts +++ b/packages/ynap-parsers/src/pl/bank-pocztowy/bank-pocztowy.ts @@ -30,7 +30,7 @@ const fixInput = (input: string) => input .trim() .split(/\n/) - .map(line => + .map((line) => line.replace(PAYEE_REGEXP, (match, a, b, payee) => match.replace(payee, payee.replace(/,/g, '__')), ), @@ -74,8 +74,8 @@ const bankPocztowyParser: ParserFunction = async (file: File) => { return [ { data: result - .filter(item => item.length === 9) - .map(item => { + .filter((item) => item.length === 9) + .map((item) => { const [YYYY, MM, DD] = item[0].split(' '); const isOutflow = item[5].startsWith('-'); const amount = item[5] diff --git a/packages/ynap-parsers/src/pl/mbank/mbank.ts b/packages/ynap-parsers/src/pl/mbank/mbank.ts index aca5f8f91..44aa3a6d7 100644 --- a/packages/ynap-parsers/src/pl/mbank/mbank.ts +++ b/packages/ynap-parsers/src/pl/mbank/mbank.ts @@ -40,7 +40,7 @@ export const mbankMatch: MatcherFunction = async (file: File) => { } const keys = Object.keys(data[0]); - const missingKeys = REQUIRED_FIELDS.filter(k => !keys.includes(k)); + const missingKeys = REQUIRED_FIELDS.filter((k) => !keys.includes(k)); if (missingKeys.length === 0) { return true; @@ -62,10 +62,10 @@ const mbankParser: ParserFunction = async (file: File) => { return [ { data: result - .filter(item => - REQUIRED_FIELDS.every(key => typeof item[key] !== 'undefined'), + .filter((item) => + REQUIRED_FIELDS.every((key) => typeof item[key] !== 'undefined'), ) - .map(item => { + .map((item) => { const [YYYY, MM, DD] = item['#Data operacji'].split('-'); const isOutflow = item['#Kwota'].startsWith('-'); const amount = item['#Kwota'] diff --git a/packages/ynap-parsers/src/pl/mbank/test-data/operations_190710_191010_201910100004038185.csv b/packages/ynap-parsers/src/pl/mbank/test-data/operations_190710_191010_201910100004038185.csv index 7b2a71200..cf47b44f9 100644 --- a/packages/ynap-parsers/src/pl/mbank/test-data/operations_190710_191010_201910100004038185.csv +++ b/packages/ynap-parsers/src/pl/mbank/test-data/operations_190710_191010_201910100004038185.csv @@ -4,7 +4,7 @@ mBank S.A. Bankowo www.mBank.pl; mLinia: 801 300 800; +48 (42) 6 300 800; - + #Klient; XXXX XXXXX; @@ -19,12 +19,12 @@ Lista operacji; eKonto - 00000000000000000000000000; eKonto walutowe EUR - 11111111111111111111111111; eKonto oszczêdnoœciowe - 22222222222222222222222222; - + #Lista nie jest dokumentem w rozumieniu art. 7 Ustawy Prawo Bankowe (Dz. U. Nr 140 z 1997 roku, poz.939 z póŸniejszymi zmianami), poniewa¿ operacje mo¿na samodzielnie edytowaæ.; - + #Waluta;#Wp³ywy;#Wydatki; PLN;19 721,84;-22 620,49; - + #Data operacji;#Opis operacji;#Rachunek;#Kategoria;#Kwota;#Saldo po operacji; 2019-10-09;OUTCOME ;eKonto 0000 ... 1111;Bez kategorii;-30,00 PLN;2 960,15 PLN; 2019-09-25;INCOME;eKonto 0000 ... 1111;Wp³ywy - inne;2 000,00 PLN;2 867,35 PLN; diff --git a/packages/ynap-parsers/src/se/seb-privat/seb.spec.ts b/packages/ynap-parsers/src/se/seb-privat/seb.spec.ts index ea0bb4ede..04b1365ad 100644 --- a/packages/ynap-parsers/src/se/seb-privat/seb.spec.ts +++ b/packages/ynap-parsers/src/se/seb-privat/seb.spec.ts @@ -3,27 +3,25 @@ import { YnabFile } from '../..'; import fs from 'fs'; import path from 'path'; -const content = fs.readFileSync( - path.join(__dirname, 'test-data/kontoutdrag.xlsx'), -); +const content = fs.readFileSync(path.join(__dirname, 'test-data/kontoutdrag.xlsx')); const ynabResult: YnabFile[] = [ { data: [ { - "Category": undefined, - 'Date': '03/30/2020', - 'Inflow': 875.63, - 'Memo': 'VOLVOCARD', - 'Outflow': undefined, + Category: undefined, + Date: '03/30/2020', + Inflow: 875.63, + Memo: 'VOLVOCARD', + Outflow: undefined, }, { - 'Category': undefined, - 'Date': '03/29/2020', - 'Inflow': undefined, - 'Memo': 'BLOCKET AB', - 'Outflow': 125, - } + Category: undefined, + Date: '03/29/2020', + Inflow: undefined, + Memo: 'BLOCKET AB', + Outflow: 125, + }, ], }, ]; diff --git a/packages/ynap-parsers/src/se/seb-privat/seb.ts b/packages/ynap-parsers/src/se/seb-privat/seb.ts index b64c573e5..93d4cf5ea 100644 --- a/packages/ynap-parsers/src/se/seb-privat/seb.ts +++ b/packages/ynap-parsers/src/se/seb-privat/seb.ts @@ -37,9 +37,7 @@ export const sebPrivatParser: ParserFunction = async (file: File) => { rows.push({ Category: undefined, Date: generateYnabDate(String(sheet[`B${rowNum}`].v)), - Memo: String(sheet[`D${rowNum}`].v) - .split('\r')[0] - .trim(), + Memo: String(sheet[`D${rowNum}`].v).split('\r')[0].trim(), Inflow: sheet[`E${rowNum}`].v > 0 ? sheet[`E${rowNum}`].v : undefined, Outflow: sheet[`E${rowNum}`].v < 0 ? -sheet[`E${rowNum}`].v : undefined, }); diff --git a/packages/ynap-parsers/src/se/sparbanken-tanum/2018/sparbanken-tanum.ts b/packages/ynap-parsers/src/se/sparbanken-tanum/2018/sparbanken-tanum.ts index 848555678..6dbe910ec 100644 --- a/packages/ynap-parsers/src/se/sparbanken-tanum/2018/sparbanken-tanum.ts +++ b/packages/ynap-parsers/src/se/sparbanken-tanum/2018/sparbanken-tanum.ts @@ -27,8 +27,8 @@ export const sparbankenTanumParser: ParserFunction = async (file: File) => { return [ { data: data - .filter(r => r[0] && r[2] !== '-') - .map(r => ({ + .filter((r) => r[0] && r[2] !== '-') + .map((r) => ({ Date: generateYnabDate(r[1]), Payee: String(r[0]).trim(), Outflow: toNumber(r[3]) < 0 ? (-toNumber(r[3])).toFixed(2) : undefined, diff --git a/packages/ynap-parsers/src/se/sparbanken-tanum/2018/test-data/export.csv b/packages/ynap-parsers/src/se/sparbanken-tanum/2018/test-data/export.csv index c51fea30c..992fda53d 100644 --- a/packages/ynap-parsers/src/se/sparbanken-tanum/2018/test-data/export.csv +++ b/packages/ynap-parsers/src/se/sparbanken-tanum/2018/test-data/export.csv @@ -1,4 +1,4 @@ SKYDDAT BELOPP;2019-07-19;-;-196,00;- SKYDDAT BELOPP;2019-07-19;-;-5,00;- Övf via internet ;2019-07-19;2019-07-22;-1,00;22 102,16 -ITUNES.COM/BILL;2019-07-19;2019-07-19;-10,00;22 103,16 \ No newline at end of file +ITUNES.COM/BILL;2019-07-19;2019-07-19;-10,00;22 103,16 diff --git a/packages/ynap-parsers/src/se/sparbanken-tanum/2019/sparbanken-tanum.ts b/packages/ynap-parsers/src/se/sparbanken-tanum/2019/sparbanken-tanum.ts index 65d075184..b377eab6d 100644 --- a/packages/ynap-parsers/src/se/sparbanken-tanum/2019/sparbanken-tanum.ts +++ b/packages/ynap-parsers/src/se/sparbanken-tanum/2019/sparbanken-tanum.ts @@ -37,7 +37,7 @@ export const sparbankenTanumParser: ParserFunction = async (file: File) => { }); const groupedData = (data as Row[]) - .filter(r => r.Radnummer && r.Belopp) + .filter((r) => r.Radnummer && r.Belopp) .reduce( (acc, cur) => { const amount = Number(cur.Belopp); @@ -62,7 +62,7 @@ export const sparbankenTanumParser: ParserFunction = async (file: File) => { {} as Record, ); - return Object.keys(groupedData).map(key => ({ + return Object.keys(groupedData).map((key) => ({ accountName: key, data: groupedData[key], })); diff --git a/packages/ynap-parsers/src/uk/aqua/aqua.ts b/packages/ynap-parsers/src/uk/aqua/aqua.ts index be51d3c4e..f1580cfaa 100644 --- a/packages/ynap-parsers/src/uk/aqua/aqua.ts +++ b/packages/ynap-parsers/src/uk/aqua/aqua.ts @@ -19,16 +19,16 @@ export const aquaParser: ParserFunction = async (file: File) => { const rows = (data as string[][]) .slice(1) - .filter(r => r.length >= 3) - .filter(r => r[0] !== 'Pending') + .filter((r) => r.length >= 3) + .filter((r) => r[0] !== 'Pending') .map( - cur => + (cur) => ({ Date: generateYnabDate(cur[0]), Memo: cur[1].trim().replace(/\s\s+/g, ' '), Inflow: Number(cur[2]) < 0 ? (-Number(cur[2])).toFixed(2) : undefined, Outflow: Number(cur[2]) > 0 ? Number(cur[2]).toFixed(2) : undefined, - } as YnabRow), + }) as YnabRow, ); return [ @@ -48,7 +48,7 @@ export const aquaMatcher: MatcherFunction = async (file: File) => { } const keys = data[0]; - const missingKeys = requiredKeys.filter(k => !keys.includes(k)); + const missingKeys = requiredKeys.filter((k) => !keys.includes(k)); if (missingKeys.length === 0) { return true; diff --git a/packages/ynap-parsers/src/uk/aqua/test-data/transactions.csv b/packages/ynap-parsers/src/uk/aqua/test-data/transactions.csv index 5a4530169..d6bf8e4d5 100644 --- a/packages/ynap-parsers/src/uk/aqua/test-data/transactions.csv +++ b/packages/ynap-parsers/src/uk/aqua/test-data/transactions.csv @@ -1,4 +1,4 @@ Date,Description,Amount(GBP) Pending,OLDGATE GREAT BRITAIGBR,6.6 06/06/2019,Trainline London GBR,19.87 -27/05/2019, PAYMENT RECEIVED - THANK YOU,-59.64 \ No newline at end of file +27/05/2019, PAYMENT RECEIVED - THANK YOU,-59.64 diff --git a/packages/ynap-parsers/src/uk/marcus/marcus.ts b/packages/ynap-parsers/src/uk/marcus/marcus.ts index c1c9b8d9b..6a391f0bb 100644 --- a/packages/ynap-parsers/src/uk/marcus/marcus.ts +++ b/packages/ynap-parsers/src/uk/marcus/marcus.ts @@ -26,7 +26,7 @@ export const marcusParser: ParserFunction = async (file: File) => { const { data } = await parse(file, { header: true }); const groupedData = (data as MarcusRow[]) - .filter(r => r.TransactionDate && r.Value) + .filter((r) => r.TransactionDate && r.Value) .reduce( (acc, cur) => { const row = { @@ -50,7 +50,7 @@ export const marcusParser: ParserFunction = async (file: File) => { {} as { [k: string]: YnabRow[] }, ); - return Object.keys(groupedData).map(key => ({ + return Object.keys(groupedData).map((key) => ({ accountName: key, data: groupedData[key], })); @@ -73,7 +73,7 @@ export const marcusMatcher: MatcherFunction = async (file: File) => { } const keys = Object.keys(data[0]); - const missingKeys = requiredKeys.filter(k => !keys.includes(k)); + const missingKeys = requiredKeys.filter((k) => !keys.includes(k)); if (missingKeys.length === 0) { return true; @@ -86,7 +86,8 @@ export const marcus: ParserModule = { name: 'Marcus', country: 'uk', fileExtension: 'csv', - filenamePattern: /^Transactions (.+) (\d{4})-(\d{2})-(\d{2}) (\d{2})_(\d{2})\.csv$/, + filenamePattern: + /^Transactions (.+) (\d{4})-(\d{2})-(\d{2}) (\d{2})_(\d{2})\.csv$/, link: 'https://www.marcus.co.uk/uk/en', match: marcusMatcher, parse: marcusParser, diff --git a/packages/ynap-web-app/package.json b/packages/ynap-web-app/package.json index 3d1f42c1c..c5c95fd30 100644 --- a/packages/ynap-web-app/package.json +++ b/packages/ynap-web-app/package.json @@ -1,6 +1,6 @@ { "name": "ynap-web-app", - "version": "1.15.100", + "version": "1.15.101", "license": "MIT", "private": true, "dependencies": { diff --git a/packages/ynap-web-app/src/pages/index.tsx b/packages/ynap-web-app/src/pages/index.tsx index d29a84d45..9c474ebbb 100644 --- a/packages/ynap-web-app/src/pages/index.tsx +++ b/packages/ynap-web-app/src/pages/index.tsx @@ -41,7 +41,7 @@ const Container = styled.div<{ uploadHover?: boolean }>` margin-bottom: 4rem; } - ${p => + ${(p) => p.uploadHover && css` background-color: hsl(218, 40, 90); @@ -139,7 +139,7 @@ const App: React.FC<{ version: string; commit: string; timestamp: string }> = ({ parsedFile.accountName, 'ynap', ] - .filter(e => e) + .filter((e) => e) .join('-'); saveAs(blob, `${fileName}.csv`); resultCount++; @@ -218,7 +218,7 @@ const App: React.FC<{ version: string; commit: string; timestamp: string }> = ({ YNAP supports {parsers.length} different formats for banks of{' '} {countries.length} countries, including{' '} {parsers - .map(p => ( + .map((p) => ( <> {p.name} diff --git a/packages/ynap-web-app/src/pages/supported-formats.tsx b/packages/ynap-web-app/src/pages/supported-formats.tsx index 9cfd37e3c..c671a6595 100644 --- a/packages/ynap-web-app/src/pages/supported-formats.tsx +++ b/packages/ynap-web-app/src/pages/supported-formats.tsx @@ -33,7 +33,7 @@ const SupportedFormats = () => ( countries.length } countries, including ${parsers .slice(0, 4) - .map(p => p.name) + .map((p) => p.name) .join(', ')}, and more.`} /> @@ -44,13 +44,13 @@ const SupportedFormats = () => (

Supported Formats

- {['international', ...countries].map(c => ( + {['international', ...countries].map((c) => (

{countryNames[c] || c}

{parsers - .filter(p => p.country === c) - .map(p => ( + .filter((p) => p.country === c) + .map((p) => ( {p.name}