ibankit
Version:
Validation, field extraction and creation of IBAN, BBAN, BIC numbers
203 lines • 14 kB
JavaScript
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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