UNPKG

bankcode-bic

Version:

Convert bank codes from IBAN to BICs, Name of bank. Currently supports only some selected EU countries.

63 lines (62 loc) 1.72 kB
//#region src/download/at.ts const getCacheKey = (country) => { return `bankcode-bic-${country}`; }; const getDownloadUrl = async () => { return { websiteUrl: "https://www.oenb.at/Statistik/Klassifikationen/Bankstellenverzeichnis.html", url: "https://www.oenb.at/docroot/downloads_observ/sepa-zv-vz_gesamt.csv", dataFormat: "csv", version: "", notes: "Österreichische Nationalbank Bankstellenverzeichnis" }; }; const downloadCSV = async (url, fetchFn = globalThis.fetch) => { const res = await fetchFn(url); const buffer = await res.arrayBuffer(); const decoder = new TextDecoder("iso-8859-1"); const cvs = decoder.decode(new Uint8Array(buffer)); const csvStart = cvs.indexOf("Kennzeichen;"); if (csvStart === -1) throw new Error("CSV header not found"); return cvs.slice(csvStart); }; const parseCSV = (cvs) => { const lines = cvs.split(/\r?\n/); const header = lines[0].split(";"); const colMap = /* @__PURE__ */ new Map(); header.forEach((col, idx) => { colMap.set(col.trim(), idx); }); lines.shift(); const wantedCols = [ "Bankleitzahl", "SWIFT-Code", "Bankenname", "Straße", "PLZ", "Ort", "Telefon", "Fax", "E-Mail", "Homepage" ]; const allowedSectors = new Set([ "Raiffeisen", "Aktienbanken", "§ 9 Institute", "Sparkassen", "Volksbanken" ]); const result = []; for (const line_ of lines) { const line = line_.trim(); if (line === "") continue; const cols = line.split(";"); if (!allowedSectors.has(cols[colMap.get("Sektor") ?? -1])) continue; const row = wantedCols.map((col) => cols[colMap.get(col) ?? -1]?.trim()); result.push(row); } return result; }; //#endregion export { downloadCSV, getCacheKey, getDownloadUrl, parseCSV };