UNPKG

ibankit

Version:

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

230 lines 15.1 kB
"use strict"; 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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