ibankit
Version:
Validation, field extraction and creation of IBAN, BBAN, BIC numbers
230 lines • 15.1 kB
JavaScript
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.IBAN = void 0;
const ibanUtil = __importStar(require("./ibanUtil"));
const country_1 = require("./country");
const ibanBuilder_1 = require("./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",
};
class IBAN {
constructor(iban) {
const value = IBAN.electronicFormat(iban);
ibanUtil.validate(value);
this.value = value;
}
getCountryCode() {
return (0, country_1.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_1.IBANBuilder().countryCode(cc).build();
}
return new ibanBuilder_1.IBANBuilder().build();
}
static sample(cc) {
const s = samples[cc];
return s !== undefined ? s : samples[country_1.CountryCode.DE];
}
}
exports.IBAN = IBAN;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWJhbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pYmFuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEscURBQXVDO0FBQ3ZDLHVDQUF1RDtBQUN2RCwrQ0FBNEM7QUFHNUMsTUFBTSxZQUFZLEdBQUcsYUFBYSxDQUFDO0FBRW5DLE1BQU0sT0FBTyxHQUEyQjtJQUN0QyxFQUFFLEVBQUUsMEJBQTBCO0lBQzlCLEVBQUUsRUFBRSx5QkFBeUI7SUFDN0IsRUFBRSxFQUFFLDhCQUE4QjtJQUNsQyxFQUFFLEVBQUUsc0JBQXNCO0lBQzFCLEVBQUUsRUFBRSw4QkFBOEI7SUFDbEMsRUFBRSxFQUFFLHNCQUFzQjtJQUMxQixFQUFFLEVBQUUsa0JBQWtCO0lBQ3RCLEVBQUUsRUFBRSx3QkFBd0I7SUFDNUIsRUFBRSxFQUFFLHdCQUF3QjtJQUM1QixFQUFFLEVBQUUsK0JBQStCO0lBQ25DLEVBQUUsRUFBRSw4QkFBOEI7SUFDbEMsRUFBRSxFQUFFLHVCQUF1QjtJQUMzQixFQUFFLEVBQUUsd0JBQXdCO0lBQzVCLEVBQUUsRUFBRSw4QkFBOEI7SUFDbEMsRUFBRSxFQUFFLDBCQUEwQjtJQUM5QixFQUFFLEVBQUUsd0JBQXdCO0lBQzVCLEVBQUUsRUFBRSxvQkFBb0I7SUFDeEIsRUFBRSxFQUFFLDhCQUE4QjtJQUNsQyxFQUFFLEVBQUUsc0JBQXNCO0lBQzFCLEVBQUUsRUFBRSwwQkFBMEI7SUFDOUIsRUFBRSxFQUFFLG9CQUFvQjtJQUN4QixFQUFFLEVBQUUsb0JBQW9CO0lBQ3hCLEVBQUUsRUFBRSw2QkFBNkI7SUFDakMsRUFBRSxFQUFFLHdCQUF3QjtJQUM1QixFQUFFLEVBQUUsd0JBQXdCO0lBQzVCLEVBQUUsRUFBRSx5QkFBeUI7SUFDN0IsRUFBRSxFQUFFLG9CQUFvQjtJQUN4QixFQUFFLEVBQUUsNkJBQTZCO0lBQ2pDLEVBQUUsRUFBRSw4QkFBOEI7SUFDbEMsRUFBRSxFQUFF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
;