UNPKG

ibankit

Version:

Validation, field extraction and creation of IBAN, BBAN, BIC numbers

203 lines 14 kB
import * as ibanUtil from "./ibanUtil"; import { countryByCode, CountryCode } from "./country"; import { IBANBuilder } from "./ibanBuilder"; const NON_ALPHANUM = /[^a-z0-9]/ig; const samples = { AD: "AD1200012030200359100100", AE: "AE070331234567890123456", AL: "AL47212110090000000235698741", AT: "AT611904300234573201", AZ: "AZ21NABZ00000000137010001944", BA: "BA391990440001200279", BE: "BE68539007547034", BG: "BG80BNBG96611020345678", BH: "BH67BMAG00001299123456", BR: "BR9700360305000010009795493P1", BY: "BY13NBRB3600900000002Z00AB00", CH: "CH9300762011623852957", CR: "CR05015202001026284066", CY: "CY17002001280000001200527600", CZ: "CZ6508000000192000145399", DE: "DE89370400440532013000", DK: "DK5000400440116243", DO: "DO28BAGR00000001212453611324", EE: "EE382200221020145685", ES: "ES9121000418450200051332", FI: "FI2112345600000785", FO: "FO6264600001631634", FR: "FR1420041010050500013M02606", GB: "GB29NWBK60161331926819", GE: "GE29NB0000000101904917", GI: "GI75NWBK000000007099453", GL: "GL8964710001000206", GR: "GR1601101250000000012300695", GT: "GT82TRAJ01020000001210029690", HR: "HR1210010051863000160", HU: "HU42117730161111101800000000", IE: "IE29AIBK93115212345678", IL: "IL620108000000099999999", IQ: "IQ98NBIQ850123456789012", IS: "IS140159260076545510730339", IT: "IT60X0542811101000000123456", JO: "JO94CBJO0010000000000131000302", KW: "KW81CBKU0000000000001234560101", KZ: "KZ86125KZT5004100100", LB: "LB62099900000001001901229114", LC: "LC07HEMM000100010012001200013015", LI: "LI21088100002324013AA", LT: "LT121000011101001000", LU: "LU280019400644750000", LV: "LV80BANK0000435195001", MC: "MC5811222000010123456789030", MD: "MD24AG000225100013104168", ME: "ME25505000012345678951", MK: "MK07250120000058984", MR: "MR1300020001010000123456753", MT: "MT84MALT011000012345MTLCAST001S", MU: "MU17BOMM0101101030300200000MUR", NL: "NL91ABNA0417164300", NO: "NO9386011117947", PK: "PK36SCBL0000001123456702", PL: "PL61109010140000071219812874", PS: "PS92PALS000000000400123456702", PT: "PT50000201231234567890154", QA: "QA58DOHB00001234567890ABCDEFG", RO: "RO49AAAA1B31007593840000", RS: "RS35260005601001611379", SA: "SA0380000000608010167519", SC: "SC18SSCB11010000000000001497USD", SE: "SE4550000000058398257466", SI: "SI56263300012039086", SK: "SK3112000000198742637541", SM: "SM86U0322509800000000270100", ST: "ST68000100010051845310112", SV: "SV62CENR00000000000000700025", TL: "TL380080012345678910157", TN: "TN5910006035183598478831", TR: "TR330006100519786457841326", UA: "UA213223130000026007233566001", VA: "VA59001123000012345678", VG: "VG96VPVG0000012345678901", XK: "XK051212012345678906", AO: "AO69123456789012345678901", BF: "BF2312345678901234567890123", BI: "BI41123456789012", BJ: "BJ11B00610100400271101192591", CF: "CF4220001000010120069700160", CI: "CI93CI0080111301134291200589", CM: "CM9012345678901234567890123", CV: "CV30123456789012345678901", DJ: "DJ2110002010010409943020008", DZ: "DZ8612345678901234567890", GQ: "GQ7050002001003715228190196", HN: "HN54PISA00000000000000123124", IR: "IR861234568790123456789012", MG: "MG1812345678901234567890123", ML: "ML15A12345678901234567890123", MZ: "MZ25123456789012345678901", SN: "SN52A12345678901234567890123", KM: "KM4600005000010010904400137", TD: "TD8960002000010271091600153", CG: "CG3930011000101013451300019", EG: "EG800002000156789012345180002", GA: "GA2140021010032001890020126", MA: "MA64011519000001205000534921", NI: "NI92BAMC000000000000000003123123", NE: "NE58NE0380100100130305000268", TG: "TG53TG0090604310346500400070", }; export class IBAN { constructor(iban) { const value = IBAN.electronicFormat(iban); ibanUtil.validate(value); this.value = value; } getCountryCode() { return countryByCode(ibanUtil.getCountryCode(this.value)); } getCheckDigit() { return ibanUtil.getCheckDigit(this.value); } getAccountNumber() { return ibanUtil.getAccountNumber(this.value); } getBankCode() { return ibanUtil.getBankCode(this.value); } getBranchCode() { return ibanUtil.getBranchCode(this.value); } getNationalCheckDigit() { return ibanUtil.getNationalCheckDigit(this.value); } getBranchCheckDigit() { return ibanUtil.getBranchCheckDigit(this.value); } getCurrencyType() { return ibanUtil.getCurrencyType(this.value); } getAccountType() { return ibanUtil.getAccountType(this.value); } getOwnerAccountType() { return ibanUtil.getOwnerAccountType(this.value); } getIdentificationNumber() { return ibanUtil.getIdentificationNumber(this.value); } getBban() { return ibanUtil.getBban(this.value); } toString() { return this.value; } toFormattedString() { return ibanUtil.toFormattedString(this.value); } static isValid(iban) { try { ibanUtil.validate(IBAN.electronicFormat(iban)); } catch (_a) { return false; } return true; } static toBBAN(iban, separator = " ") { const clean = IBAN.electronicFormat(iban); ibanUtil.validate(clean); return ibanUtil.toFormattedStringBBAN(clean, separator); } static fromBBAN(countryCode, bban) { ibanUtil.validateBban(countryCode, IBAN.electronicFormat(bban)); const iban = `${countryCode}00${bban}`; const checkDigit = ibanUtil.calculateCheckDigit(iban); return ibanUtil.replaceCheckDigit(iban, checkDigit); } static isValidBBAN(countryCode, bban) { try { ibanUtil.validateBban(countryCode, IBAN.electronicFormat(bban)); } catch (_a) { return false; } return true; } static printFormat(iban, separator = " ") { return ibanUtil.toFormattedString(iban, separator); } static electronicFormat(iban) { return iban.replace(NON_ALPHANUM, "").toUpperCase(); } static random(cc) { if (cc !== undefined) { return new IBANBuilder().countryCode(cc).build(); } return new IBANBuilder().build(); } static sample(cc) { const s = samples[cc]; return s !== undefined ? s : samples[CountryCode.DE]; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWJhbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pYmFuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxRQUFRLE1BQU0sWUFBWSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHNUMsTUFBTSxZQUFZLEdBQUcsYUFBYSxDQUFDO0FBRW5DLE1BQU0sT0FBTyxHQUEyQjtJQUN0QyxFQUFFLEVBQUUsMEJBQTBCO0lBQzlCLEVBQUUsRUFBRSx5QkFBeUI7SUFDN0IsRUFBRSxFQUFFLDhCQUE4QjtJQUNsQyxFQUFFLEVBQUUsc0JBQXNCO0lBQzFCLEVBQUUsRUFBRSw4QkFBOEI7SUFDbEMsRUFBRSxFQUFFLHNCQUFzQjtJQUMxQixFQUFFLEVBQUUsa0JBQWtCO0lBQ3RCLEVBQUUsRUFBRSx3QkFBd0I7SUFDNUIsRUFBRSxFQUFFLHdCQUF3QjtJQUM1QixFQUFFLEVBQUUsK0JBQStCO0lBQ25DLEVBQUUsRUFBRSw4QkFBOEI7SUFDbEMsRUFBRSxFQUFFLHVCQUF1QjtJQUMzQixFQUFFLEVBQUUsd0JBQXdCO0lBQzVCLEVBQUUsRUFBRSw4QkFBOEI7SUFDbEMsRUFBRSxFQUFFLDBCQUEwQjtJQUM5QixFQUFFLEVBQUUsd0JBQXdCO0lBQzVCLEVBQUUsRUFBRSxvQkFBb0I7SUFDeEIsRUFBRSxFQUFFLDhCQUE4QjtJQUNsQyxFQUFFLEVBQUUsc0JBQXNCO0lBQzFCLEVBQUUsRUFBRSwwQkFBMEI7SUFDOUIsRUFBRSxFQUFFLG9CQUFvQjtJQUN4QixFQUFFLEVBQUUsb0JBQW9CO0lBQ3hCLEVBQUUsRUFBRSw2QkFBNkI7SUFDakMsRUFBRSxFQUFFLHdCQUF3QjtJQUM1QixFQUFFLEVBQUUsd0JBQXdCO0lBQzVCLEVBQUUsRUFBRSx5QkFBeUI7SUFDN0IsRUFBRSxFQUFFLG9CQUFv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