@actual-app/sync-server 25.5.0 → 25.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{app.js → build/app.js} +4 -5
- package/build/bin/actual-server.js +101 -0
- package/build/migrations/1694360000000-create-folders.js +21 -0
- package/{migrations → build/migrations}/1694360479680-create-account-db.js +2 -4
- package/{migrations → build/migrations}/1694362247011-create-secret-table.js +2 -4
- package/build/migrations/1702667624000-rename-nordigen-secrets.js +9 -0
- package/{migrations → build/migrations}/1718889148000-openid.js +4 -10
- package/{migrations → build/migrations}/1719409568000-multiuser.js +10 -26
- package/build/src/account-db.js +182 -0
- package/build/src/accounts/openid.js +287 -0
- package/build/src/accounts/password.js +98 -0
- package/build/src/app-account.js +125 -0
- package/build/src/app-admin.js +317 -0
- package/build/src/app-admin.test.js +303 -0
- package/build/src/app-gocardless/app-gocardless.js +193 -0
- package/build/src/app-gocardless/bank-factory.js +84 -0
- package/build/src/app-gocardless/banks/abanca_caglesmm.js +17 -0
- package/build/src/app-gocardless/banks/abnamro_abnanl2a.js +37 -0
- package/build/src/app-gocardless/banks/american_express_aesudef1.js +32 -0
- package/build/src/app-gocardless/banks/bancsabadell_bsabesbbb.js +22 -0
- package/build/src/app-gocardless/banks/bank.interface.js +1 -0
- package/build/src/app-gocardless/banks/bank_of_ireland_b365_bofiie2d.js +25 -0
- package/build/src/app-gocardless/banks/bankinter_bkbkesmm.js +18 -0
- package/build/src/app-gocardless/banks/belfius_gkccbebb.js +13 -0
- package/build/src/app-gocardless/banks/berliner_sparkasse_beladebexxx.js +48 -0
- package/build/src/app-gocardless/banks/bnp_be_gebabebb.js +64 -0
- package/build/src/app-gocardless/banks/boursobank_bousfrppxxx.js +73 -0
- package/build/src/app-gocardless/banks/cbc_cregbebb.js +27 -0
- package/build/src/app-gocardless/banks/commerzbank_cobadeff.js +43 -0
- package/build/src/app-gocardless/banks/danskebank_dabno22.js +26 -0
- package/build/src/app-gocardless/banks/direkt_heladef1822.js +13 -0
- package/build/src/app-gocardless/banks/easybank_bawaatww.js +42 -0
- package/build/src/app-gocardless/banks/entercard_swednokk.js +28 -0
- package/build/src/app-gocardless/banks/fortuneo_ftnofrp1xxx.js +34 -0
- package/build/src/app-gocardless/banks/hype_hyeeit22.js +63 -0
- package/build/src/app-gocardless/banks/ing_ingbrobu.js +56 -0
- package/build/src/app-gocardless/banks/ing_ingddeff.js +34 -0
- package/build/src/app-gocardless/banks/ing_pl_ingbplpw.js +29 -0
- package/build/src/app-gocardless/banks/integration-bank.js +78 -0
- package/build/src/app-gocardless/banks/isybank_itbbitmm.js +13 -0
- package/build/src/app-gocardless/banks/kbc_kredbebb.js +26 -0
- package/build/src/app-gocardless/banks/lhv-lhvbee22.js +24 -0
- package/build/src/app-gocardless/banks/mbank_retail_brexplpw.js +41 -0
- package/build/src/app-gocardless/banks/nationwide_naiagb21.js +32 -0
- package/build/src/app-gocardless/banks/nbg_ethngraaxxx.js +39 -0
- package/build/src/app-gocardless/banks/norwegian_xx_norwnok1.js +61 -0
- package/build/src/app-gocardless/banks/revolut_revolt21.js +20 -0
- package/build/src/app-gocardless/banks/sandboxfinance_sfin0000.js +21 -0
- package/build/src/app-gocardless/banks/seb_kort_bank_ab.js +63 -0
- package/build/src/app-gocardless/banks/seb_privat.js +19 -0
- package/build/src/app-gocardless/banks/sparnord_spnodk22.js +19 -0
- package/build/src/app-gocardless/banks/spk_karlsruhe_karsde66.js +48 -0
- package/build/src/app-gocardless/banks/spk_marburg_biedenkopf_heladef1mar.js +25 -0
- package/build/src/app-gocardless/banks/spk_worms_alzey_ried_malade51wor.js +14 -0
- package/build/src/app-gocardless/banks/ssk_dusseldorf_dussdeddxxx.js +36 -0
- package/build/src/app-gocardless/banks/swedbank_habalv22.js +30 -0
- package/build/src/app-gocardless/banks/tests/abanca_caglesmm.spec.js +17 -0
- package/build/src/app-gocardless/banks/tests/abnamro_abnanl2a.spec.js +45 -0
- package/build/src/app-gocardless/banks/tests/bancsabadell_bsabesbbb.spec.js +41 -0
- package/build/src/app-gocardless/banks/tests/belfius_gkccbebb.spec.js +16 -0
- package/build/src/app-gocardless/banks/tests/boursobank_bousfrppxxx.spec.js +102 -0
- package/build/src/app-gocardless/banks/tests/cbc_cregbebb.spec.js +24 -0
- package/build/src/app-gocardless/banks/tests/commerzbank_cobadeff.spec.js +105 -0
- package/build/src/app-gocardless/banks/tests/easybank_bawaatww.spec.js +36 -0
- package/build/src/app-gocardless/banks/tests/fortuneo_ftnofrp1xxx.spec.js +159 -0
- package/build/src/app-gocardless/banks/tests/ing_ingddeff.spec.js +267 -0
- package/build/src/app-gocardless/banks/tests/ing_pl_ingbplpw.spec.js +186 -0
- package/build/src/app-gocardless/banks/tests/integration_bank.spec.js +127 -0
- package/build/src/app-gocardless/banks/tests/kbc_kredbebb.spec.js +24 -0
- package/build/src/app-gocardless/banks/tests/lhv-lhvbee22.spec.js +50 -0
- package/build/src/app-gocardless/banks/tests/mbank_retail_brexplpw.spec.js +156 -0
- package/build/src/app-gocardless/banks/tests/nationwide_naiagb21.spec.js +64 -0
- package/build/src/app-gocardless/banks/tests/nbg_ethngraaxxx.spec.js +36 -0
- package/build/src/app-gocardless/banks/tests/revolut_revolt21.spec.js +30 -0
- package/build/src/app-gocardless/banks/tests/sandboxfinance_sfin0000.spec.js +112 -0
- package/build/src/app-gocardless/banks/tests/spk_marburg_biedenkopf_heladef1mar.spec.js +214 -0
- package/build/src/app-gocardless/banks/tests/ssk_dusseldorf_dussdeddxxx.spec.js +60 -0
- package/build/src/app-gocardless/banks/tests/swedbank_habalv22.spec.js +45 -0
- package/build/src/app-gocardless/banks/tests/virgin_nrnbgb22.spec.js +36 -0
- package/{src → build/src}/app-gocardless/banks/util/escape-regexp.js +1 -1
- package/{src → build/src}/app-gocardless/banks/util/extract-payeeName-from-remittanceInfo.js +11 -16
- package/build/src/app-gocardless/banks/virgin_nrnbgb22.js +31 -0
- package/build/src/app-gocardless/errors.js +67 -0
- package/build/src/app-gocardless/gocardless-node.types.js +1 -0
- package/build/src/app-gocardless/gocardless.types.js +1 -0
- package/build/src/app-gocardless/services/gocardless-service.js +504 -0
- package/build/src/app-gocardless/services/tests/fixtures.js +165 -0
- package/build/src/app-gocardless/services/tests/gocardless-service.spec.js +387 -0
- package/build/src/app-gocardless/tests/bank-factory.spec.js +13 -0
- package/build/src/app-gocardless/tests/utils.spec.js +158 -0
- package/build/src/app-gocardless/util/handle-error.js +15 -0
- package/build/src/app-gocardless/utils.js +41 -0
- package/build/src/app-openid.js +83 -0
- package/build/src/app-pluggyai/app-pluggyai.js +164 -0
- package/build/src/app-pluggyai/pluggyai-service.js +97 -0
- package/build/src/app-secrets.js +48 -0
- package/build/src/app-simplefin/app-simplefin.js +335 -0
- package/build/src/app-sync/errors.js +12 -0
- package/build/src/app-sync/services/files-service.js +158 -0
- package/build/src/app-sync/tests/services/files-service.test.js +192 -0
- package/build/src/app-sync/validation.js +65 -0
- package/build/src/app-sync.js +302 -0
- package/build/src/app-sync.test.js +655 -0
- package/build/src/app.js +138 -0
- package/build/src/config-types.js +1 -0
- package/build/src/db.js +50 -0
- package/build/src/load-config.js +274 -0
- package/build/src/migrations.js +23 -0
- package/build/src/scripts/disable-openid.js +31 -0
- package/build/src/scripts/enable-openid.js +36 -0
- package/build/src/scripts/health-check.js +16 -0
- package/build/src/scripts/reset-password.js +40 -0
- package/build/src/scripts/run-migrations.js +6 -0
- package/build/src/secrets.test.js +68 -0
- package/build/src/services/secrets-service.js +79 -0
- package/build/src/services/user-service.js +201 -0
- package/build/src/sync-simple.js +68 -0
- package/{src → build/src}/util/hash.js +1 -2
- package/build/src/util/middlewares.js +49 -0
- package/{src → build/src}/util/paths.js +3 -6
- package/build/src/util/payee-name.js +37 -0
- package/build/src/util/prompt.js +70 -0
- package/build/src/util/title/index.js +43 -0
- package/build/src/util/title/lower-case.js +90 -0
- package/build/src/util/title/specials.js +21 -0
- package/build/src/util/validate-user.js +55 -0
- package/package.json +32 -36
- package/bin/actual-server.js +0 -117
- package/migrations/1694360000000-create-folders.js +0 -25
- package/migrations/1702667624000-rename-nordigen-secrets.js +0 -19
- package/src/account-db.js +0 -239
- package/src/accounts/openid.js +0 -368
- package/src/accounts/password.js +0 -149
- package/src/app-account.js +0 -155
- package/src/app-admin.js +0 -410
- package/src/app-admin.test.js +0 -381
- package/src/app-gocardless/app-gocardless.js +0 -274
- package/src/app-gocardless/bank-factory.js +0 -91
- package/src/app-gocardless/banks/abanca_caglesmm.js +0 -22
- package/src/app-gocardless/banks/abnamro_abnanl2a.js +0 -57
- package/src/app-gocardless/banks/american_express_aesudef1.js +0 -40
- package/src/app-gocardless/banks/bancsabadell_bsabesbbb.js +0 -31
- package/src/app-gocardless/banks/bank.interface.ts +0 -51
- package/src/app-gocardless/banks/bank_of_ireland_b365_bofiie2d.js +0 -39
- package/src/app-gocardless/banks/bankinter_bkbkesmm.js +0 -24
- package/src/app-gocardless/banks/belfius_gkccbebb.js +0 -17
- package/src/app-gocardless/banks/berliner_sparkasse_beladebexxx.js +0 -61
- package/src/app-gocardless/banks/bnp_be_gebabebb.js +0 -73
- package/src/app-gocardless/banks/cbc_cregbebb.js +0 -34
- package/src/app-gocardless/banks/commerzbank_cobadeff.js +0 -54
- package/src/app-gocardless/banks/danskebank_dabno22.js +0 -39
- package/src/app-gocardless/banks/direkt_heladef1822.js +0 -18
- package/src/app-gocardless/banks/easybank_bawaatww.js +0 -50
- package/src/app-gocardless/banks/entercard_swednokk.js +0 -40
- package/src/app-gocardless/banks/fortuneo_ftnofrp1xxx.js +0 -46
- package/src/app-gocardless/banks/hype_hyeeit22.js +0 -74
- package/src/app-gocardless/banks/ing_ingbrobu.js +0 -70
- package/src/app-gocardless/banks/ing_ingddeff.js +0 -47
- package/src/app-gocardless/banks/ing_pl_ingbplpw.js +0 -46
- package/src/app-gocardless/banks/integration-bank.js +0 -115
- package/src/app-gocardless/banks/isybank_itbbitmm.js +0 -18
- package/src/app-gocardless/banks/kbc_kredbebb.js +0 -33
- package/src/app-gocardless/banks/lhv-lhvbee22.js +0 -36
- package/src/app-gocardless/banks/mbank_retail_brexplpw.js +0 -56
- package/src/app-gocardless/banks/nationwide_naiagb21.js +0 -46
- package/src/app-gocardless/banks/nbg_ethngraaxxx.js +0 -51
- package/src/app-gocardless/banks/norwegian_xx_norwnok1.js +0 -74
- package/src/app-gocardless/banks/revolut_revolt21.js +0 -37
- package/src/app-gocardless/banks/sandboxfinance_sfin0000.js +0 -28
- package/src/app-gocardless/banks/seb_kort_bank_ab.js +0 -59
- package/src/app-gocardless/banks/seb_privat.js +0 -29
- package/src/app-gocardless/banks/sparnord_spnodk22.js +0 -24
- package/src/app-gocardless/banks/spk_karlsruhe_karsde66.js +0 -61
- package/src/app-gocardless/banks/spk_marburg_biedenkopf_heladef1mar.js +0 -30
- package/src/app-gocardless/banks/spk_worms_alzey_ried_malade51wor.js +0 -19
- package/src/app-gocardless/banks/ssk_dusseldorf_dussdeddxxx.js +0 -50
- package/src/app-gocardless/banks/swedbank_habalv22.js +0 -47
- package/src/app-gocardless/banks/tests/abanca_caglesmm.spec.js +0 -21
- package/src/app-gocardless/banks/tests/abnamro_abnanl2a.spec.js +0 -61
- package/src/app-gocardless/banks/tests/bancsabadell_bsabesbbb.spec.js +0 -53
- package/src/app-gocardless/banks/tests/belfius_gkccbebb.spec.js +0 -22
- package/src/app-gocardless/banks/tests/cbc_cregbebb.spec.js +0 -34
- package/src/app-gocardless/banks/tests/commerzbank_cobadeff.spec.js +0 -133
- package/src/app-gocardless/banks/tests/easybank_bawaatww.spec.js +0 -54
- package/src/app-gocardless/banks/tests/fortuneo_ftnofrp1xxx.spec.js +0 -206
- package/src/app-gocardless/banks/tests/ing_ingddeff.spec.js +0 -302
- package/src/app-gocardless/banks/tests/ing_pl_ingbplpw.spec.js +0 -202
- package/src/app-gocardless/banks/tests/integration_bank.spec.js +0 -156
- package/src/app-gocardless/banks/tests/kbc_kredbebb.spec.js +0 -38
- package/src/app-gocardless/banks/tests/lhv-lhvbee22.spec.js +0 -68
- package/src/app-gocardless/banks/tests/mbank_retail_brexplpw.spec.js +0 -171
- package/src/app-gocardless/banks/tests/nationwide_naiagb21.spec.js +0 -105
- package/src/app-gocardless/banks/tests/nbg_ethngraaxxx.spec.js +0 -48
- package/src/app-gocardless/banks/tests/revolut_revolt21.spec.js +0 -42
- package/src/app-gocardless/banks/tests/sandboxfinance_sfin0000.spec.js +0 -133
- package/src/app-gocardless/banks/tests/spk_marburg_biedenkopf_heladef1mar.spec.js +0 -255
- package/src/app-gocardless/banks/tests/ssk_dusseldorf_dussdeddxxx.spec.js +0 -100
- package/src/app-gocardless/banks/tests/swedbank_habalv22.spec.js +0 -57
- package/src/app-gocardless/banks/tests/virgin_nrnbgb22.spec.js +0 -54
- package/src/app-gocardless/banks/virgin_nrnbgb22.js +0 -39
- package/src/app-gocardless/errors.js +0 -84
- package/src/app-gocardless/gocardless-node.types.ts +0 -497
- package/src/app-gocardless/gocardless.types.ts +0 -93
- package/src/app-gocardless/link.html +0 -18
- package/src/app-gocardless/services/gocardless-service.js +0 -620
- package/src/app-gocardless/services/tests/fixtures.js +0 -181
- package/src/app-gocardless/services/tests/gocardless-service.spec.js +0 -537
- package/src/app-gocardless/tests/bank-factory.spec.js +0 -20
- package/src/app-gocardless/tests/utils.spec.js +0 -162
- package/src/app-gocardless/util/handle-error.js +0 -16
- package/src/app-gocardless/utils.js +0 -45
- package/src/app-openid.js +0 -108
- package/src/app-pluggyai/app-pluggyai.js +0 -215
- package/src/app-pluggyai/pluggyai-service.js +0 -120
- package/src/app-secrets.js +0 -61
- package/src/app-simplefin/app-simplefin.js +0 -405
- package/src/app-sync/errors.js +0 -13
- package/src/app-sync/services/files-service.js +0 -243
- package/src/app-sync/tests/services/files-service.test.js +0 -247
- package/src/app-sync/validation.js +0 -77
- package/src/app-sync.js +0 -391
- package/src/app-sync.test.js +0 -877
- package/src/app.js +0 -149
- package/src/config-types.ts +0 -44
- package/src/db.js +0 -58
- package/src/load-config.js +0 -307
- package/src/migrations.js +0 -36
- package/src/run-migrations.js +0 -8
- package/src/scripts/disable-openid.js +0 -44
- package/src/scripts/enable-openid.js +0 -53
- package/src/scripts/health-check.js +0 -23
- package/src/scripts/reset-password.js +0 -51
- package/src/secrets.test.js +0 -83
- package/src/services/secrets-service.js +0 -94
- package/src/services/user-service.js +0 -272
- package/src/sync-simple.js +0 -95
- package/src/util/middlewares.js +0 -62
- package/src/util/payee-name.js +0 -45
- package/src/util/prompt.js +0 -88
- package/src/util/title/index.js +0 -59
- package/src/util/title/lower-case.js +0 -93
- package/src/util/title/specials.js +0 -21
- package/src/util/validate-user.js +0 -68
- /package/{src → build/src}/sql/messages.sql +0 -0
|
@@ -1,255 +0,0 @@
|
|
|
1
|
-
import SpkMarburgBiedenkopfHeladef1mar from '../spk_marburg_biedenkopf_heladef1mar.js';
|
|
2
|
-
|
|
3
|
-
describe('SpkMarburgBiedenkopfHeladef1mar', () => {
|
|
4
|
-
describe('#normalizeAccount', () => {
|
|
5
|
-
/** @type {import('../../gocardless.types.js').DetailedAccountWithInstitution} */
|
|
6
|
-
const accountRaw = {
|
|
7
|
-
resourceId: 'e896eec6-6096-4efc-a941-756bd9d74765',
|
|
8
|
-
iban: 'DE50533500000123456789',
|
|
9
|
-
currency: 'EUR',
|
|
10
|
-
ownerName: 'JANE DOE',
|
|
11
|
-
product: 'Sichteinlagen',
|
|
12
|
-
bic: 'HELADEF1MAR',
|
|
13
|
-
usage: 'PRIV',
|
|
14
|
-
id: 'a787ba27-02ee-4fd6-be86-73831adc5498',
|
|
15
|
-
created: '2024-01-01T14:17:11.630352Z',
|
|
16
|
-
last_accessed: '2024-01-01T14:19:42.709478Z',
|
|
17
|
-
institution_id: 'SPK_MARBURG_BIEDENKOPF_HELADEF1MAR',
|
|
18
|
-
status: 'READY',
|
|
19
|
-
owner_name: 'JANE DOE',
|
|
20
|
-
institution: {
|
|
21
|
-
id: 'SPK_MARBURG_BIEDENKOPF_HELADEF1MAR',
|
|
22
|
-
name: 'Sparkasse Marburg-Biedenkopf',
|
|
23
|
-
bic: 'HELADEF1MAR',
|
|
24
|
-
transaction_total_days: '360',
|
|
25
|
-
max_access_valid_for_days: '90',
|
|
26
|
-
countries: ['DE'],
|
|
27
|
-
logo: 'https://storage.googleapis.com/gc-prd-institution_icons-production/DE/PNG/sparkasse.png',
|
|
28
|
-
supported_payments: {
|
|
29
|
-
'single-payment': ['SCT', 'ISCT'],
|
|
30
|
-
},
|
|
31
|
-
supported_features: [
|
|
32
|
-
'card_accounts',
|
|
33
|
-
'payments',
|
|
34
|
-
'pending_transactions',
|
|
35
|
-
],
|
|
36
|
-
/*"identification_codes": []*/
|
|
37
|
-
},
|
|
38
|
-
};
|
|
39
|
-
|
|
40
|
-
it('returns normalized account data returned to Frontend', () => {
|
|
41
|
-
expect(
|
|
42
|
-
SpkMarburgBiedenkopfHeladef1mar.normalizeAccount(accountRaw),
|
|
43
|
-
).toEqual({
|
|
44
|
-
account_id: 'a787ba27-02ee-4fd6-be86-73831adc5498',
|
|
45
|
-
iban: 'DE50533500000123456789',
|
|
46
|
-
institution: {
|
|
47
|
-
bic: 'HELADEF1MAR',
|
|
48
|
-
countries: ['DE'],
|
|
49
|
-
id: 'SPK_MARBURG_BIEDENKOPF_HELADEF1MAR',
|
|
50
|
-
logo: 'https://storage.googleapis.com/gc-prd-institution_icons-production/DE/PNG/sparkasse.png',
|
|
51
|
-
name: 'Sparkasse Marburg-Biedenkopf',
|
|
52
|
-
supported_features: [
|
|
53
|
-
'card_accounts',
|
|
54
|
-
'payments',
|
|
55
|
-
'pending_transactions',
|
|
56
|
-
],
|
|
57
|
-
supported_payments: {
|
|
58
|
-
'single-payment': ['SCT', 'ISCT'],
|
|
59
|
-
},
|
|
60
|
-
transaction_total_days: '360',
|
|
61
|
-
max_access_valid_for_days: '90',
|
|
62
|
-
},
|
|
63
|
-
mask: '6789',
|
|
64
|
-
name: 'Sichteinlagen (XXX 6789) EUR',
|
|
65
|
-
official_name: 'Sichteinlagen',
|
|
66
|
-
type: 'checking',
|
|
67
|
-
});
|
|
68
|
-
});
|
|
69
|
-
});
|
|
70
|
-
|
|
71
|
-
const transactionsRaw = [
|
|
72
|
-
{
|
|
73
|
-
transactionId: 'fefa0b605ac14a7eb14f4c8ab6a6af55',
|
|
74
|
-
bookingDate: '2023-12-29',
|
|
75
|
-
valueDate: '2023-12-29',
|
|
76
|
-
transactionAmount: {
|
|
77
|
-
amount: '-40.00',
|
|
78
|
-
currency: 'EUR',
|
|
79
|
-
},
|
|
80
|
-
creditorName: 'JET Tankstelle',
|
|
81
|
-
remittanceInformationStructured: 'AUTORISATION 28.12. 18:30',
|
|
82
|
-
proprietaryBankTransactionCode: 'NSTO+000+0000+000-AA',
|
|
83
|
-
internalTransactionId: '761660c052ed48e78c2be39775f08da9',
|
|
84
|
-
date: '2023-12-29',
|
|
85
|
-
},
|
|
86
|
-
{
|
|
87
|
-
transactionId: '1a8e5d0df259472694f13132001af0a6',
|
|
88
|
-
bookingDate: '2023-12-28',
|
|
89
|
-
valueDate: '2023-12-28',
|
|
90
|
-
transactionAmount: {
|
|
91
|
-
amount: '-1242.47',
|
|
92
|
-
currency: 'EUR',
|
|
93
|
-
},
|
|
94
|
-
creditorName: 'Peter Muster',
|
|
95
|
-
remittanceInformationStructured: 'Miete 12/2023',
|
|
96
|
-
proprietaryBankTransactionCode: 'NSTO+111+1111+111-BB',
|
|
97
|
-
internalTransactionId: '5a20ac78b146401e940b6fee30ee404b',
|
|
98
|
-
date: '2023-12-28',
|
|
99
|
-
},
|
|
100
|
-
{
|
|
101
|
-
transactionId: '166983e65ec54000a361a952e6161f33',
|
|
102
|
-
bookingDate: '2023-12-27',
|
|
103
|
-
valueDate: '2023-12-27',
|
|
104
|
-
transactionAmount: {
|
|
105
|
-
amount: '1541.23',
|
|
106
|
-
currency: 'EUR',
|
|
107
|
-
},
|
|
108
|
-
debtorName: 'Arbeitgeber AG',
|
|
109
|
-
remittanceInformationStructured: 'Lohn/Gehalt 12/2023',
|
|
110
|
-
proprietaryBankTransactionCode: 'NSTO+222+2222+222-CC',
|
|
111
|
-
internalTransactionId: '51630dda877f45f186d315b8058d891a',
|
|
112
|
-
date: '2023-12-27',
|
|
113
|
-
},
|
|
114
|
-
{
|
|
115
|
-
transactionId: '4dd9f4c9968a45739c0705ebc675b54b',
|
|
116
|
-
bookingDate: '2023-12-26',
|
|
117
|
-
valueDate: '2023-12-26',
|
|
118
|
-
transactionAmount: {
|
|
119
|
-
amount: '-8.00',
|
|
120
|
-
currency: 'EUR',
|
|
121
|
-
},
|
|
122
|
-
remittanceInformationStructuredArray: [
|
|
123
|
-
'Entgeltabrechnung',
|
|
124
|
-
'siehe Anlage',
|
|
125
|
-
],
|
|
126
|
-
proprietaryBankTransactionCode: 'NSTO+333+3333+333-DD',
|
|
127
|
-
internalTransactionId: '9c58c87c2d1644e4a5e149c837c16bbb',
|
|
128
|
-
date: '2023-12-26',
|
|
129
|
-
},
|
|
130
|
-
];
|
|
131
|
-
|
|
132
|
-
describe('#normalizeTransaction', () => {
|
|
133
|
-
it('fallbacks to remittanceInformationStructured when remittanceInformationUnstructed is not set', () => {
|
|
134
|
-
const transaction = {
|
|
135
|
-
transactionId: 'fefa0b605ac14a7eb14f4c8ab6a6af55',
|
|
136
|
-
bookingDate: '2023-12-29',
|
|
137
|
-
valueDate: '2023-12-29',
|
|
138
|
-
transactionAmount: {
|
|
139
|
-
amount: '-40.00',
|
|
140
|
-
currency: 'EUR',
|
|
141
|
-
},
|
|
142
|
-
creditorName: 'JET Tankstelle',
|
|
143
|
-
remittanceInformationStructured: 'AUTORISATION 28.12. 18:30',
|
|
144
|
-
proprietaryBankTransactionCode: 'NSTO+000+0000+000-AA',
|
|
145
|
-
internalTransactionId: '761660c052ed48e78c2be39775f08da9',
|
|
146
|
-
date: '2023-12-29',
|
|
147
|
-
};
|
|
148
|
-
|
|
149
|
-
expect(
|
|
150
|
-
SpkMarburgBiedenkopfHeladef1mar.normalizeTransaction(transaction, true)
|
|
151
|
-
.notes,
|
|
152
|
-
).toEqual('AUTORISATION 28.12. 18:30');
|
|
153
|
-
});
|
|
154
|
-
|
|
155
|
-
it('fallbacks to remittanceInformationStructuredArray when remittanceInformationUnstructed and remittanceInformationStructured is not set', () => {
|
|
156
|
-
const transaction = {
|
|
157
|
-
transactionId: '4dd9f4c9968a45739c0705ebc675b54b',
|
|
158
|
-
bookingDate: '2023-12-26',
|
|
159
|
-
valueDate: '2023-12-26',
|
|
160
|
-
transactionAmount: {
|
|
161
|
-
amount: '-8.00',
|
|
162
|
-
currency: 'EUR',
|
|
163
|
-
},
|
|
164
|
-
remittanceInformationStructuredArray: [
|
|
165
|
-
'Entgeltabrechnung',
|
|
166
|
-
'siehe Anlage',
|
|
167
|
-
],
|
|
168
|
-
proprietaryBankTransactionCode: 'NSTO+333+3333+333-DD',
|
|
169
|
-
internalTransactionId: '9c58c87c2d1644e4a5e149c837c16bbb',
|
|
170
|
-
date: '2023-12-26',
|
|
171
|
-
};
|
|
172
|
-
|
|
173
|
-
expect(
|
|
174
|
-
SpkMarburgBiedenkopfHeladef1mar.normalizeTransaction(transaction, true)
|
|
175
|
-
.notes,
|
|
176
|
-
).toEqual('Entgeltabrechnung siehe Anlage');
|
|
177
|
-
});
|
|
178
|
-
});
|
|
179
|
-
|
|
180
|
-
describe('#sortTransactions', () => {
|
|
181
|
-
it('handles empty arrays', () => {
|
|
182
|
-
const transactions = [];
|
|
183
|
-
const sortedTransactions =
|
|
184
|
-
SpkMarburgBiedenkopfHeladef1mar.sortTransactions(transactions);
|
|
185
|
-
expect(sortedTransactions).toEqual([]);
|
|
186
|
-
});
|
|
187
|
-
|
|
188
|
-
it('returns empty array for undefined input', () => {
|
|
189
|
-
const sortedTransactions =
|
|
190
|
-
SpkMarburgBiedenkopfHeladef1mar.sortTransactions(undefined);
|
|
191
|
-
expect(sortedTransactions).toEqual([]);
|
|
192
|
-
});
|
|
193
|
-
|
|
194
|
-
it('returns sorted array for unsorted inputs', () => {
|
|
195
|
-
const normalizeTransactions = transactionsRaw.map(tx =>
|
|
196
|
-
SpkMarburgBiedenkopfHeladef1mar.normalizeTransaction(tx, true),
|
|
197
|
-
);
|
|
198
|
-
const originalOrder = Array.from(normalizeTransactions);
|
|
199
|
-
const swap = (a, b) => {
|
|
200
|
-
const swap = normalizeTransactions[a];
|
|
201
|
-
normalizeTransactions[a] = normalizeTransactions[b];
|
|
202
|
-
normalizeTransactions[b] = swap;
|
|
203
|
-
};
|
|
204
|
-
swap(1, 3);
|
|
205
|
-
swap(0, 2);
|
|
206
|
-
const sortedTransactions =
|
|
207
|
-
SpkMarburgBiedenkopfHeladef1mar.sortTransactions(normalizeTransactions);
|
|
208
|
-
expect(sortedTransactions).toEqual(originalOrder);
|
|
209
|
-
});
|
|
210
|
-
});
|
|
211
|
-
|
|
212
|
-
describe('#countStartingBalance', () => {
|
|
213
|
-
/** @type {import('../../gocardless-node.types.js').Balance[]} */
|
|
214
|
-
const balances = [
|
|
215
|
-
{
|
|
216
|
-
balanceAmount: { amount: '3596.87', currency: 'EUR' },
|
|
217
|
-
balanceType: 'closingBooked',
|
|
218
|
-
referenceDate: '2023-12-29',
|
|
219
|
-
},
|
|
220
|
-
];
|
|
221
|
-
|
|
222
|
-
it('should return 0 when no transactions or balances are provided', () => {
|
|
223
|
-
const startingBalance =
|
|
224
|
-
SpkMarburgBiedenkopfHeladef1mar.calculateStartingBalance([], []);
|
|
225
|
-
expect(startingBalance).toEqual(0);
|
|
226
|
-
});
|
|
227
|
-
|
|
228
|
-
it('should calculate the starting balance correctly', () => {
|
|
229
|
-
const normalizeTransactions = transactionsRaw.map(tx =>
|
|
230
|
-
SpkMarburgBiedenkopfHeladef1mar.normalizeTransaction(tx, true),
|
|
231
|
-
);
|
|
232
|
-
const sortedTransactions =
|
|
233
|
-
SpkMarburgBiedenkopfHeladef1mar.sortTransactions(normalizeTransactions);
|
|
234
|
-
|
|
235
|
-
const startingBalance =
|
|
236
|
-
SpkMarburgBiedenkopfHeladef1mar.calculateStartingBalance(
|
|
237
|
-
sortedTransactions,
|
|
238
|
-
balances,
|
|
239
|
-
);
|
|
240
|
-
|
|
241
|
-
expect(startingBalance).toEqual(334611);
|
|
242
|
-
});
|
|
243
|
-
|
|
244
|
-
it('returns the same balance amount when no transactions', () => {
|
|
245
|
-
const transactions = [];
|
|
246
|
-
|
|
247
|
-
expect(
|
|
248
|
-
SpkMarburgBiedenkopfHeladef1mar.calculateStartingBalance(
|
|
249
|
-
transactions,
|
|
250
|
-
balances,
|
|
251
|
-
),
|
|
252
|
-
).toEqual(359687);
|
|
253
|
-
});
|
|
254
|
-
});
|
|
255
|
-
});
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
import SskDusseldorfDussdeddxxx from '../ssk_dusseldorf_dussdeddxxx.js';
|
|
2
|
-
|
|
3
|
-
describe('ssk_dusseldorf_dussdeddxxx', () => {
|
|
4
|
-
let consoleSpy;
|
|
5
|
-
|
|
6
|
-
beforeEach(() => {
|
|
7
|
-
consoleSpy = vi.spyOn(console, 'debug');
|
|
8
|
-
});
|
|
9
|
-
|
|
10
|
-
afterEach(() => {
|
|
11
|
-
consoleSpy.mockRestore();
|
|
12
|
-
});
|
|
13
|
-
|
|
14
|
-
describe('#normalizeTransaction', () => {
|
|
15
|
-
const bookedTransactionOne = {
|
|
16
|
-
transactionId: '2024102900000000-1',
|
|
17
|
-
bookingDate: '2024-10-29',
|
|
18
|
-
valueDate: '2024-10-29',
|
|
19
|
-
transactionAmount: {
|
|
20
|
-
amount: '-99.99',
|
|
21
|
-
currency: 'EUR',
|
|
22
|
-
},
|
|
23
|
-
creditorName: 'a useful creditor name',
|
|
24
|
-
remittanceInformationStructured: 'structured information',
|
|
25
|
-
remittanceInformationUnstructured: 'unstructured information',
|
|
26
|
-
additionalInformation: 'some additional information',
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
const bookedTransactionTwo = {
|
|
30
|
-
transactionId: '2024102900000000-2',
|
|
31
|
-
bookingDate: '2024-10-29',
|
|
32
|
-
valueDate: '2024-10-29',
|
|
33
|
-
transactionAmount: {
|
|
34
|
-
amount: '-99.99',
|
|
35
|
-
currency: 'EUR',
|
|
36
|
-
},
|
|
37
|
-
creditorName: 'a useful creditor name',
|
|
38
|
-
ultimateCreditor: 'ultimate creditor',
|
|
39
|
-
remittanceInformationStructured: 'structured information',
|
|
40
|
-
additionalInformation: 'some additional information',
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
it('properly combines remittance information', () => {
|
|
44
|
-
expect(
|
|
45
|
-
SskDusseldorfDussdeddxxx.normalizeTransaction(
|
|
46
|
-
bookedTransactionOne,
|
|
47
|
-
true,
|
|
48
|
-
).notes,
|
|
49
|
-
).toEqual('unstructured information some additional information');
|
|
50
|
-
|
|
51
|
-
expect(
|
|
52
|
-
SskDusseldorfDussdeddxxx.normalizeTransaction(
|
|
53
|
-
bookedTransactionTwo,
|
|
54
|
-
true,
|
|
55
|
-
).notes,
|
|
56
|
-
).toEqual('structured information some additional information');
|
|
57
|
-
});
|
|
58
|
-
|
|
59
|
-
it('prioritizes creditor names correctly', () => {
|
|
60
|
-
expect(
|
|
61
|
-
SskDusseldorfDussdeddxxx.normalizeTransaction(
|
|
62
|
-
bookedTransactionOne,
|
|
63
|
-
true,
|
|
64
|
-
).payeeName,
|
|
65
|
-
).toEqual('A Useful Creditor Name');
|
|
66
|
-
|
|
67
|
-
expect(
|
|
68
|
-
SskDusseldorfDussdeddxxx.normalizeTransaction(
|
|
69
|
-
bookedTransactionTwo,
|
|
70
|
-
true,
|
|
71
|
-
).payeeName,
|
|
72
|
-
).toEqual('Ultimate Creditor');
|
|
73
|
-
});
|
|
74
|
-
|
|
75
|
-
const unbookedTransaction = {
|
|
76
|
-
transactionId: '2024102900000000-1',
|
|
77
|
-
valueDate: '2024-10-29',
|
|
78
|
-
transactionAmount: {
|
|
79
|
-
amount: '-99.99',
|
|
80
|
-
currency: 'EUR',
|
|
81
|
-
},
|
|
82
|
-
creditorName: 'some nonsensical creditor',
|
|
83
|
-
remittanceInformationUnstructured: 'some nonsensical information',
|
|
84
|
-
};
|
|
85
|
-
|
|
86
|
-
it('returns null for unbooked transactions', () => {
|
|
87
|
-
expect(
|
|
88
|
-
SskDusseldorfDussdeddxxx.normalizeTransaction(
|
|
89
|
-
unbookedTransaction,
|
|
90
|
-
false,
|
|
91
|
-
),
|
|
92
|
-
).toBeNull();
|
|
93
|
-
|
|
94
|
-
expect(consoleSpy).toHaveBeenCalledWith(
|
|
95
|
-
'Skipping unbooked transaction:',
|
|
96
|
-
unbookedTransaction.transactionId,
|
|
97
|
-
);
|
|
98
|
-
});
|
|
99
|
-
});
|
|
100
|
-
});
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import SwedbankHabaLV22 from '../swedbank_habalv22.js';
|
|
2
|
-
|
|
3
|
-
describe('#normalizeTransaction', () => {
|
|
4
|
-
const bookedCardTransaction = {
|
|
5
|
-
transactionId: '2024102900000000-1',
|
|
6
|
-
bookingDate: '2024-10-29',
|
|
7
|
-
valueDate: '2024-10-29',
|
|
8
|
-
transactionAmount: {
|
|
9
|
-
amount: '-22.99',
|
|
10
|
-
currency: 'EUR',
|
|
11
|
-
},
|
|
12
|
-
creditorName: 'SOME CREDITOR NAME',
|
|
13
|
-
remittanceInformationUnstructured:
|
|
14
|
-
'PIRKUMS 424242******4242 28.10.2024 22.99 EUR (111111) SOME CREDITOR NAME',
|
|
15
|
-
bankTransactionCode: 'PMNT-CCRD-POSD',
|
|
16
|
-
internalTransactionId: 'fa000f86afb2cc7678bcff0000000000',
|
|
17
|
-
};
|
|
18
|
-
|
|
19
|
-
it('extracts card transaction date', () => {
|
|
20
|
-
expect(
|
|
21
|
-
SwedbankHabaLV22.normalizeTransaction(bookedCardTransaction, true).date,
|
|
22
|
-
).toEqual('2024-10-28');
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
it.each([
|
|
26
|
-
['regular text', 'Some info'],
|
|
27
|
-
['partial card text', 'PIRKUMS xxx'],
|
|
28
|
-
['null value', null],
|
|
29
|
-
])('normalizes non-card transaction with %s', (_, remittanceInfo) => {
|
|
30
|
-
const transaction = {
|
|
31
|
-
...bookedCardTransaction,
|
|
32
|
-
remittanceInformationUnstructured: remittanceInfo,
|
|
33
|
-
};
|
|
34
|
-
const normalized = SwedbankHabaLV22.normalizeTransaction(transaction, true);
|
|
35
|
-
|
|
36
|
-
expect(normalized.bookingDate).toEqual('2024-10-29');
|
|
37
|
-
expect(normalized.date).toEqual('2024-10-29');
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
const pendingCardTransaction = {
|
|
41
|
-
transactionId: '2024102900000000-1',
|
|
42
|
-
valueDate: '2024-10-29',
|
|
43
|
-
transactionAmount: {
|
|
44
|
-
amount: '-22.99',
|
|
45
|
-
currency: 'EUR',
|
|
46
|
-
},
|
|
47
|
-
remittanceInformationUnstructured:
|
|
48
|
-
'PIRKUMS 424242******4242 28.10.24 13:37 22.99 EUR (111111) SOME CREDITOR NAME',
|
|
49
|
-
};
|
|
50
|
-
|
|
51
|
-
it('extracts pending card transaction creditor name', () => {
|
|
52
|
-
expect(
|
|
53
|
-
SwedbankHabaLV22.normalizeTransaction(pendingCardTransaction, false)
|
|
54
|
-
.payeeName,
|
|
55
|
-
).toEqual('Some Creditor Name');
|
|
56
|
-
});
|
|
57
|
-
});
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { mockTransactionAmount } from '../../services/tests/fixtures.js';
|
|
2
|
-
import Virgin from '../virgin_nrnbgb22.js';
|
|
3
|
-
|
|
4
|
-
describe('Virgin', () => {
|
|
5
|
-
describe('#normalizeTransaction', () => {
|
|
6
|
-
it('does not alter simple payee information', () => {
|
|
7
|
-
const transaction = {
|
|
8
|
-
bookingDate: '2024-01-01T00:00:00Z',
|
|
9
|
-
remittanceInformationUnstructured: 'DIRECT DEBIT PAYMENT',
|
|
10
|
-
transactionAmount: mockTransactionAmount,
|
|
11
|
-
};
|
|
12
|
-
|
|
13
|
-
const normalizedTransaction = Virgin.normalizeTransaction(
|
|
14
|
-
transaction,
|
|
15
|
-
true,
|
|
16
|
-
);
|
|
17
|
-
|
|
18
|
-
expect(normalizedTransaction.payeeName).toEqual('Direct Debit Payment');
|
|
19
|
-
expect(normalizedTransaction.notes).toEqual('DIRECT DEBIT PAYMENT');
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
it('formats bank transfer payee and references', () => {
|
|
23
|
-
const transaction = {
|
|
24
|
-
bookingDate: '2024-01-01T00:00:00Z',
|
|
25
|
-
remittanceInformationUnstructured: 'FPS, Joe Bloggs, Food',
|
|
26
|
-
transactionAmount: mockTransactionAmount,
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
const normalizedTransaction = Virgin.normalizeTransaction(
|
|
30
|
-
transaction,
|
|
31
|
-
true,
|
|
32
|
-
);
|
|
33
|
-
|
|
34
|
-
expect(normalizedTransaction.payeeName).toEqual('Joe Bloggs');
|
|
35
|
-
expect(normalizedTransaction.notes).toEqual('Food');
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
it('removes method information from payee name', () => {
|
|
39
|
-
const transaction = {
|
|
40
|
-
bookingDate: '2024-01-01T00:00:00Z',
|
|
41
|
-
remittanceInformationUnstructured: 'Card 99, Tesco Express',
|
|
42
|
-
transactionAmount: mockTransactionAmount,
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
const normalizedTransaction = Virgin.normalizeTransaction(
|
|
46
|
-
transaction,
|
|
47
|
-
true,
|
|
48
|
-
);
|
|
49
|
-
|
|
50
|
-
expect(normalizedTransaction.payeeName).toEqual('Tesco Express');
|
|
51
|
-
expect(normalizedTransaction.notes).toEqual('Card 99, Tesco Express');
|
|
52
|
-
});
|
|
53
|
-
});
|
|
54
|
-
});
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import Fallback from './integration-bank.js';
|
|
2
|
-
|
|
3
|
-
/** @type {import('./bank.interface.js').IBank} */
|
|
4
|
-
export default {
|
|
5
|
-
...Fallback,
|
|
6
|
-
|
|
7
|
-
institutionIds: ['VIRGIN_NRNBGB22'],
|
|
8
|
-
|
|
9
|
-
normalizeTransaction(transaction, booked) {
|
|
10
|
-
const editedTrans = { ...transaction };
|
|
11
|
-
|
|
12
|
-
const transferPrefixes = ['MOB', 'FPS'];
|
|
13
|
-
const methodRegex = /^(Card|WLT)\s\d+/;
|
|
14
|
-
|
|
15
|
-
const parts = transaction.remittanceInformationUnstructured.split(', ');
|
|
16
|
-
|
|
17
|
-
if (transferPrefixes.includes(parts[0])) {
|
|
18
|
-
// Transfer remittance information begins with either "MOB" or "FPS"
|
|
19
|
-
// the second field contains the payee and the third contains the
|
|
20
|
-
// reference
|
|
21
|
-
|
|
22
|
-
editedTrans.creditorName = parts[1];
|
|
23
|
-
editedTrans.debtorName = parts[1];
|
|
24
|
-
editedTrans.remittanceInformationUnstructured = parts[2];
|
|
25
|
-
} else if (parts[0].match(methodRegex)) {
|
|
26
|
-
// The payee is prefixed with the payment method, eg "Card 11, {payee}"
|
|
27
|
-
|
|
28
|
-
editedTrans.creditorName = parts[1];
|
|
29
|
-
editedTrans.debtorName = parts[1];
|
|
30
|
-
} else {
|
|
31
|
-
// Simple payee name
|
|
32
|
-
|
|
33
|
-
editedTrans.creditorName = transaction.remittanceInformationUnstructured;
|
|
34
|
-
editedTrans.debtorName = transaction.remittanceInformationUnstructured;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
return Fallback.normalizeTransaction(transaction, booked, editedTrans);
|
|
38
|
-
},
|
|
39
|
-
};
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
export class RequisitionNotLinked extends Error {
|
|
2
|
-
constructor(params = {}) {
|
|
3
|
-
super('Requisition not linked yet');
|
|
4
|
-
this.details = params;
|
|
5
|
-
}
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
export class AccountNotLinkedToRequisition extends Error {
|
|
9
|
-
constructor(accountId, requisitionId) {
|
|
10
|
-
super('Provided account id is not linked to given requisition');
|
|
11
|
-
this.details = {
|
|
12
|
-
accountId,
|
|
13
|
-
requisitionId,
|
|
14
|
-
};
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export class GenericGoCardlessError extends Error {
|
|
19
|
-
constructor(data = {}) {
|
|
20
|
-
super('GoCardless returned error');
|
|
21
|
-
this.details = data;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
export class GoCardlessClientError extends Error {
|
|
26
|
-
constructor(message, details) {
|
|
27
|
-
super(message);
|
|
28
|
-
this.details = details;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
export class InvalidInputDataError extends GoCardlessClientError {
|
|
33
|
-
constructor(response) {
|
|
34
|
-
super('Invalid provided parameters', response);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
export class InvalidGoCardlessTokenError extends GoCardlessClientError {
|
|
39
|
-
constructor(response) {
|
|
40
|
-
super('Token is invalid or expired', response);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
export class AccessDeniedError extends GoCardlessClientError {
|
|
45
|
-
constructor(response) {
|
|
46
|
-
super('IP address access denied', response);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
export class NotFoundError extends GoCardlessClientError {
|
|
51
|
-
constructor(response) {
|
|
52
|
-
super('Resource not found', response);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
export class ResourceSuspended extends GoCardlessClientError {
|
|
57
|
-
constructor(response) {
|
|
58
|
-
super(
|
|
59
|
-
'Resource was suspended due to numerous errors that occurred while accessing it',
|
|
60
|
-
response,
|
|
61
|
-
);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
export class RateLimitError extends GoCardlessClientError {
|
|
66
|
-
constructor(response) {
|
|
67
|
-
super(
|
|
68
|
-
'Daily request limit set by the Institution has been exceeded',
|
|
69
|
-
response,
|
|
70
|
-
);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
export class UnknownError extends GoCardlessClientError {
|
|
75
|
-
constructor(response) {
|
|
76
|
-
super('Request to Institution returned an error', response);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
export class ServiceError extends GoCardlessClientError {
|
|
81
|
-
constructor(response) {
|
|
82
|
-
super('Institution service unavailable', response);
|
|
83
|
-
}
|
|
84
|
-
}
|