UNPKG

ibankit

Version:

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

90 lines 8.64 kB
import { randInt } from "./randInt"; export var PartType; (function (PartType) { PartType[PartType["BANK_CODE"] = 0] = "BANK_CODE"; PartType[PartType["BRANCH_CODE"] = 1] = "BRANCH_CODE"; PartType[PartType["ACCOUNT_NUMBER"] = 2] = "ACCOUNT_NUMBER"; PartType[PartType["BRANCH_CHECK_DIGIT"] = 3] = "BRANCH_CHECK_DIGIT"; PartType[PartType["NATIONAL_CHECK_DIGIT"] = 4] = "NATIONAL_CHECK_DIGIT"; PartType[PartType["CURRENCY_TYPE"] = 5] = "CURRENCY_TYPE"; PartType[PartType["ACCOUNT_TYPE"] = 6] = "ACCOUNT_TYPE"; PartType[PartType["OWNER_ACCOUNT_NUMBER"] = 7] = "OWNER_ACCOUNT_NUMBER"; PartType[PartType["IDENTIFICATION_NUMBER"] = 8] = "IDENTIFICATION_NUMBER"; })(PartType || (PartType = {})); export var CharacterType; (function (CharacterType) { CharacterType[CharacterType["n"] = 0] = "n"; CharacterType[CharacterType["a"] = 1] = "a"; CharacterType[CharacterType["c"] = 2] = "c"; CharacterType[CharacterType["e"] = 3] = "e"; })(CharacterType || (CharacterType = {})); const charByCharacterType = { [CharacterType.n]: "0123456789", [CharacterType.a]: "ABCDEFGHIJKLMNOPQRSTUVWXYZ", [CharacterType.c]: "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ", [CharacterType.e]: " ", }; const charByCharacterRE = { [CharacterType.n]: /^[0-9]+$/, [CharacterType.a]: /^[A-Z]+$/, [CharacterType.c]: /^[0-9A-Za-z]+$/, [CharacterType.e]: /^ +$/, }; export class BbanStructurePart { constructor(entryType, characterType, length, trailingSeparator, generate) { this.entryType = entryType; this.characterType = characterType; this.length = length; this.generate = generate || this.defaultGenerator; this.hasGenerator = !!generate; this.trailingSeparator = trailingSeparator; } static bankCode(length, characterType, trailingSeparator = true) { return new BbanStructurePart(PartType.BANK_CODE, characterType, length, trailingSeparator); } static branchCode(length, characterType, trailingSeparator = true) { return new BbanStructurePart(PartType.BRANCH_CODE, characterType, length, trailingSeparator); } static accountNumber(length, characterType, trailingSeparator = true) { return new BbanStructurePart(PartType.ACCOUNT_NUMBER, characterType, length, trailingSeparator); } static nationalCheckDigit(length, characterType, generate, trailingSeparator = false) { return new BbanStructurePart(PartType.NATIONAL_CHECK_DIGIT, characterType, length, trailingSeparator, generate); } static branchCheckDigit(length, characterType, generate, trailingSeparator = false) { return new BbanStructurePart(PartType.BRANCH_CHECK_DIGIT, characterType, length, trailingSeparator, generate); } static accountType(length, characterType, trailingSeparator = false) { return new BbanStructurePart(PartType.ACCOUNT_TYPE, characterType, length, trailingSeparator); } static currencyType(length, characterType, trailingSeparator = false) { return new BbanStructurePart(PartType.CURRENCY_TYPE, characterType, length, trailingSeparator); } static ownerAccountNumber(length, characterType, trailingSeparator = true) { return new BbanStructurePart(PartType.OWNER_ACCOUNT_NUMBER, characterType, length, trailingSeparator); } static identificationNumber(length, characterType, trailingSeparator = true) { return new BbanStructurePart(PartType.IDENTIFICATION_NUMBER, characterType, length, trailingSeparator); } getPartType() { return this.entryType; } getCharacterType() { return this.characterType; } getLength() { return this.length; } validate(value) { return charByCharacterRE[this.characterType].test(value); } defaultGenerator(bban, structure) { const charChoices = charByCharacterType[this.characterType]; const s = []; for (let i = 0; i < this.getLength(); i += 1) { s.push(charChoices[randInt(charChoices.length)]); } return s.join(""); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RydWN0dXJlUGFydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdHJ1Y3R1cmVQYXJ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFHcEMsTUFBTSxDQUFOLElBQVksUUFVWDtBQVZELFdBQVksUUFBUTtJQUNsQixpREFBUyxDQUFBO0lBQ1QscURBQVcsQ0FBQTtJQUNYLDJEQUFjLENBQUE7SUFDZCxtRUFBa0IsQ0FBQTtJQUNsQix1RUFBb0IsQ0FBQTtJQUNwQix5REFBYSxDQUFBO0lBQ2IsdURBQVksQ0FBQTtJQUNaLHVFQUFvQixDQUFBO0lBQ3BCLHlFQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFWVyxRQUFRLEtBQVIsUUFBUSxRQVVuQjtBQUtELE1BQU0sQ0FBTixJQUFZLGFBaUJYO0FBakJELFdBQVksYUFBYTtJQUl2QiwyQ0FBQyxDQUFBO0lBSUQsMkNBQUMsQ0FBQTtJQUlELDJDQUFDLENBQUE7SUFJRCwyQ0FBQyxDQUFBO0FBQ0gsQ0FBQyxFQWpCVyxhQUFhLEtBQWIsYUFBYSxRQWlCeEI7QUFHRCxNQUFNLG1CQUFtQixHQUFrQztJQUN6RCxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZO0lBQy9CLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLDRCQUE0QjtJQUMvQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxzQ0FBc0M7SUFDekQsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRztDQUN2QixDQUFDO0FBR0YsTUFBTSxpQkFBaUIsR0FBa0M7SUFDdkQsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVTtJQUM3QixDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVO0lBQzdCLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLGdCQUFnQjtJQUNuQyxDQUFDLGFBQWEs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