Skip to content
This repository has been archived by the owner on Feb 10, 2025. It is now read-only.

Commit

Permalink
dynamically load GoCardless handlers (#557)
Browse files Browse the repository at this point in the history
* dynamically load GoCardless handlers

* note
  • Loading branch information
matt-fidd authored Feb 5, 2025
1 parent ca480a8 commit abeeb05
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 78 deletions.
102 changes: 24 additions & 78 deletions src/app-gocardless/bank-factory.js
Original file line number Diff line number Diff line change
@@ -1,83 +1,29 @@
import AbancaCaglesmm from './banks/abanca_caglesmm.js';
import AbnamroAbnanl2a from './banks/abnamro_abnanl2a.js';
import AmericanExpressAesudef1 from './banks/american_express_aesudef1.js';
import BancsabadellBsabesbb from './banks/bancsabadell_bsabesbbb.js';
import BankinterBkbkesmm from './banks/bankinter_bkbkesmm.js';
import BankOfIrelandB365Bofiie2d from './banks/bank_of_ireland_b365_bofiie2d.js';
import BelfiusGkccbebb from './banks/belfius_gkccbebb.js';
import BerlinerSparkasseBeladebexxx from './banks/berliner_sparkasse_beladebexxx.js';
import BnpBeGebabebb from './banks/bnp_be_gebabebb.js';
import CbcCregbebb from './banks/cbc_cregbebb.js';
import CommerzbankCobadeff from './banks/commerzbank_cobadeff.js';
import DanskebankDabno22 from './banks/danskebank_dabno22.js';
import DirektHeladef1822 from './banks/direkt_heladef1822.js';
import EasybankBawaatww from './banks/easybank_bawaatww.js';
import EntercardSwednokk from './banks/entercard_swednokk.js';
import FortuneoFtnofrp1xxx from './banks/fortuneo_ftnofrp1xxx.js';
import HypeHyeeit22 from './banks/hype_hyeeit22.js';
import IngIngbrobu from './banks/ing_ingbrobu.js';
import IngIngddeff from './banks/ing_ingddeff.js';
import IngPlIngbplpw from './banks/ing_pl_ingbplpw.js';
import fs from 'node:fs';
import path from 'node:path';
import { fileURLToPath } from 'node:url';

import IntegrationBank from './banks/integration-bank.js';
import IsyBankItbbitmm from './banks/isybank_itbbitmm.js';
import KbcKredbebb from './banks/kbc_kredbebb.js';
import LhvLhvbee22 from './banks/lhv-lhvbee22.js';
import MbankRetailBrexplpw from './banks/mbank_retail_brexplpw.js';
import NationwideNaiagb21 from './banks/nationwide_naiagb21.js';
import NbgEthngraaxxx from './banks/nbg_ethngraaxxx.js';
import NorwegianXxNorwnok1 from './banks/norwegian_xx_norwnok1.js';
import RevolutRevolt21 from './banks/revolut_revolt21.js';
import SebKortBankAb from './banks/seb_kort_bank_ab.js';
import SebPrivat from './banks/seb_privat.js';
import SandboxfinanceSfin0000 from './banks/sandboxfinance_sfin0000.js';
import SparnordSpnodk22 from './banks/sparnord_spnodk22.js';
import SpkKarlsruheKarsde66 from './banks/spk_karlsruhe_karsde66.js';
import SpkMarburgBiedenkopfHeladef1mar from './banks/spk_marburg_biedenkopf_heladef1mar.js';
import SpkWormsAlzeyRiedMalade51wor from './banks/spk_worms_alzey_ried_malade51wor.js';
import SskDusseldorfDussdeddxxx from './banks/ssk_dusseldorf_dussdeddxxx.js';
import SwedbankHabalv22 from './banks/swedbank_habalv22.js';
import VirginNrnbgb22 from './banks/virgin_nrnbgb22.js';

export const banks = [
AbancaCaglesmm,
AbnamroAbnanl2a,
AmericanExpressAesudef1,
BancsabadellBsabesbb,
BankinterBkbkesmm,
BankOfIrelandB365Bofiie2d,
BelfiusGkccbebb,
BerlinerSparkasseBeladebexxx,
BnpBeGebabebb,
CbcCregbebb,
CommerzbankCobadeff,
DanskebankDabno22,
DirektHeladef1822,
EasybankBawaatww,
EntercardSwednokk,
FortuneoFtnofrp1xxx,
HypeHyeeit22,
IngIngbrobu,
IngIngddeff,
IngPlIngbplpw,
IsyBankItbbitmm,
KbcKredbebb,
LhvLhvbee22,
MbankRetailBrexplpw,
NationwideNaiagb21,
NbgEthngraaxxx,
NorwegianXxNorwnok1,
RevolutRevolt21,
SebKortBankAb,
SebPrivat,
SandboxfinanceSfin0000,
SparnordSpnodk22,
SpkKarlsruheKarsde66,
SpkMarburgBiedenkopfHeladef1mar,
SpkWormsAlzeyRiedMalade51wor,
SskDusseldorfDussdeddxxx,
SwedbankHabalv22,
VirginNrnbgb22,
];
const dirname = path.resolve(fileURLToPath(import.meta.url), '..');
const banksDir = path.resolve(dirname, 'banks');

async function loadBanks() {
const bankHandlers = fs
.readdirSync(banksDir)
.filter((filename) => filename.includes('_') && filename.endsWith('.js'));

const imports = await Promise.all(
bankHandlers.map((file) => {
return import(path.resolve(banksDir, file)).then(
(handler) => handler.default,
);
}),
);

return imports;
}

export const banks = await loadBanks();

export default (institutionId) =>
banks.find((b) => b.institutionIds.includes(institutionId)) ||
Expand Down
6 changes: 6 additions & 0 deletions upcoming-release-notes/557.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
category: Maintenance
authors: [matt-fidd]
---

Dynamically load GoCardless handlers

0 comments on commit abeeb05

Please sign in to comment.