Comparing version 1.0.3 to 1.1.0
@@ -113,2 +113,3 @@ "use strict"; | ||
} | ||
let needCheckDigit = false; | ||
for (const entry of structure.getParts()) { | ||
@@ -118,3 +119,3 @@ switch (entry.getPartType()) { | ||
if (!this.bankCodeValue) { | ||
this.bankCodeValue = entry.getRandom(); | ||
this.bankCodeValue = entry.generate("", structure); | ||
} | ||
@@ -124,3 +125,3 @@ break; | ||
if (!this.branchCodeValue) { | ||
this.branchCodeValue = entry.getRandom(); | ||
this.branchCodeValue = entry.generate("", structure); | ||
} | ||
@@ -130,3 +131,3 @@ break; | ||
if (!this.accountNumberValue) { | ||
this.accountNumberValue = entry.getRandom(); | ||
this.accountNumberValue = entry.generate("", structure); | ||
} | ||
@@ -136,3 +137,4 @@ break; | ||
if (!this.nationalCheckDigitValue) { | ||
this.nationalCheckDigitValue = entry.getRandom(); | ||
needCheckDigit = true; | ||
this.nationalCheckDigitValue = "".padStart(entry.getLength(), "0"); | ||
} | ||
@@ -142,3 +144,3 @@ break; | ||
if (!this.accountTypeValue) { | ||
this.accountTypeValue = entry.getRandom(); | ||
this.accountTypeValue = entry.generate("", structure); | ||
} | ||
@@ -148,3 +150,3 @@ break; | ||
if (!this.ownerAccountTypeValue) { | ||
this.ownerAccountTypeValue = entry.getRandom(); | ||
this.ownerAccountTypeValue = entry.generate("", structure); | ||
} | ||
@@ -154,3 +156,3 @@ break; | ||
if (!this.identificationNumberValue) { | ||
this.identificationNumberValue = entry.getRandom(); | ||
this.identificationNumberValue = entry.generate("", structure); | ||
} | ||
@@ -160,5 +162,13 @@ break; | ||
} | ||
if (needCheckDigit) { | ||
for (const entry of structure.getParts()) { | ||
if (entry.getPartType() === structurePart_1.PartType.NATIONAL_CHECK_DIGIT) { | ||
const bban = this.formatBban(); | ||
this.nationalCheckDigitValue = entry.generate(bban, structure); | ||
} | ||
} | ||
} | ||
} | ||
} | ||
exports.IBANBuilder = IBANBuilder; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWJhbkJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaWJhbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx1Q0FBdUM7QUFDdkMsbURBQWdEO0FBQ2hELG1EQUEyQztBQUUzQyx1Q0FBb0M7QUFDcEMsNkNBSXNCO0FBQ3RCLGlDQUE4QjtBQUs5QixNQUFhLFdBQVc7SUFhdEIsZ0JBQXNCLENBQUM7SUFRdkIsV0FBVyxDQUFDLFdBQXdCO1FBQ2xDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxXQUFXLENBQUM7UUFDcEMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBUUQsUUFBUSxDQUFDLFFBQWdCO1FBQ3ZCLElBQUksQ0FBQyxhQUFhLEdBQUcsUUFBUSxDQUFDO1FBQzlCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQVFELFVBQVUsQ0FBQyxVQUFrQjtRQUMzQixJQUFJLENBQUMsZUFBZSxHQUFHLFVBQVUsQ0FBQztRQUNsQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFRRCxhQUFhLENBQUMsYUFBcUI7UUFDakMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGFBQWEsQ0FBQztRQUN4QyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFRRCxrQkFBa0IsQ0FBQyxrQkFBMEI7UUFDM0MsSUFBSSxDQUFDLHVCQUF1QixHQUFHLGtCQUFrQixDQUFDO1FBQ2xELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQVFELFdBQVcsQ0FBQyxXQUFtQjtRQUM3QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsV0FBVyxDQUFDO1FBQ3BDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQVFELGdCQUFnQixDQUFDLGdCQUF3QjtRQUN2QyxJQUFJLENBQUMscUJBQXFCLEdBQUcsZ0JBQWdCLENBQUM7UUFDOUMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBUUQsb0JBQW9CLENBQUMsb0JBQTRCO1FBQy9DLElBQUksQ0FB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 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWJhbkJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaWJhbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx1Q0FBdUM7QUFDdkMsbURBQWdEO0FBQ2hELG1EQUEyQztBQUUzQyx1Q0FBb0M7QUFDcEMsNkNBSXNCO0FBQ3RCLGlDQUE4QjtBQUs5QixNQUFhLFdBQVc7SUFhdEIsZ0JBQXNCLENBQUM7SUFRdkIsV0FBVyxDQUFDLFdBQXdCO1FBQ2xDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxXQUFXLENBQUM7UUFDcEMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBUUQsUUFBUSxDQUFDLFFBQWdCO1FBQ3ZCLElBQUksQ0FBQyxhQUFhLEdBQUcsUUFBUSxDQUFDO1FBQzlCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQVFELFVBQVUsQ0FBQyxVQUFrQjtRQUMzQixJQUFJLENBQUMsZUFBZSxHQUFHLFVBQVUsQ0FBQztRQUNsQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFRRCxhQUFhLENBQUMsYUFBcUI7UUFDakMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGFBQWEsQ0FBQztRQUN4QyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFRRCxrQkFBa0IsQ0FBQyxrQkFBMEI7UUFDM0MsSUFBSSxDQUFDLHVCQUF1QixHQUFHLGtCQUFrQixDQUFDO1FBQ2xELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQVFELFdBQVcsQ0FBQyxXQUFtQjtRQUM3QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsV0FBVyxDQUFDO1FBQ3BDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQVFELGdCQUFnQixDQUFDLGdCQUF3QjtRQUN2QyxJQUFJLENBQUMscUJBQXFCLEdBQUcsZ0JBQWdCLENBQUM7UUFDOUMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBUUQsb0JBQW9CLENBQUMsb0JBQTRCO1FBQy9DLElBQUksQ0FB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 |
@@ -18,2 +18,3 @@ import { BbanStructure } from "./bbanStructure"; | ||
} | ||
declare type GenerateValue = (bban: string, structure: BbanStructure) => string; | ||
export declare class BbanStructurePart { | ||
@@ -23,3 +24,4 @@ private entryType; | ||
private length; | ||
validateValue?(value: string, bban: string, structure: BbanStructure): void; | ||
generate: GenerateValue; | ||
hasGenerator: boolean; | ||
private constructor(); | ||
@@ -29,3 +31,3 @@ static bankCode(length: number, characterType: CharacterType): BbanStructurePart; | ||
static accountNumber(length: number, characterType: CharacterType): BbanStructurePart; | ||
static nationalCheckDigit(length: number, characterType: CharacterType, validate?: (value: string, bban: string, structure: BbanStructure) => void): BbanStructurePart; | ||
static nationalCheckDigit(length: number, characterType: CharacterType, generate?: GenerateValue): BbanStructurePart; | ||
static accountType(length: number, characterType: CharacterType): BbanStructurePart; | ||
@@ -38,4 +40,5 @@ static currencyType(length: number, characterType: CharacterType): BbanStructurePart; | ||
getLength(): number; | ||
getRandom(): string; | ||
validate(value: string): boolean; | ||
private defaultGenerator; | ||
} | ||
export {}; |
@@ -35,7 +35,8 @@ "use strict"; | ||
class BbanStructurePart { | ||
constructor(entryType, characterType, length, validate) { | ||
constructor(entryType, characterType, length, generate) { | ||
this.entryType = entryType; | ||
this.characterType = characterType; | ||
this.length = length; | ||
this.validateValue = validate; | ||
this.generate = generate || this.defaultGenerator; | ||
this.hasGenerator = !!generate; | ||
} | ||
@@ -51,4 +52,4 @@ static bankCode(length, characterType) { | ||
} | ||
static nationalCheckDigit(length, characterType, validate) { | ||
return new BbanStructurePart(PartType.NATIONAL_CHECK_DIGIT, characterType, length, validate); | ||
static nationalCheckDigit(length, characterType, generate) { | ||
return new BbanStructurePart(PartType.NATIONAL_CHECK_DIGIT, characterType, length, generate); | ||
} | ||
@@ -76,3 +77,6 @@ static accountType(length, characterType) { | ||
} | ||
getRandom() { | ||
validate(value) { | ||
return charByCharacterRE[this.characterType].test(value); | ||
} | ||
defaultGenerator(bban, structure) { | ||
const charChoices = charByCharacterType[this.characterType]; | ||
@@ -85,7 +89,4 @@ let s = []; | ||
} | ||
validate(value) { | ||
return charByCharacterRE[this.characterType].test(value); | ||
} | ||
} | ||
exports.BbanStructurePart = BbanStructurePart; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RydWN0dXJlUGFydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zdHJ1Y3R1cmVQYXJ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsdUNBQW9DO0FBR3BDLElBQVksUUFTWDtBQVRELFdBQVksUUFBUTtJQUNsQixpREFBUyxDQUFBO0lBQ1QscURBQVcsQ0FBQTtJQUNYLDJEQUFjLENBQUE7SUFDZCx1RUFBb0IsQ0FBQTtJQUNwQix5REFBYSxDQUFBO0lBQ2IsdURBQVksQ0FBQTtJQUNaLHVFQUFvQixDQUFBO0lBQ3BCLHlFQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFUVyxRQUFRLEdBQVIsZ0JBQVEsS0FBUixnQkFBUSxRQVNuQjtBQUtELElBQVksYUFpQlg7QUFqQkQsV0FBWSxhQUFhO0lBSXZCLDJDQUFDLENBQUE7SUFJRCwyQ0FBQyxDQUFBO0lBSUQsMkNBQUMsQ0FBQTtJQUlELDJDQUFDLENBQUE7QUFDSCxDQUFDLEVBakJXLGFBQWEsR0FBYixxQkFBYSxLQUFiLHFCQUFhLFFBaUJ4QjtBQUdELE1BQU0sbUJBQW1CLEdBQWtDO0lBQ3pELENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVk7SUFDL0IsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsNEJBQTRCO0lBQy9DLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLHNDQUFzQztJQUN6RCxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHO0NBQ3ZCLENBQUM7QUFHRixNQUFNLGlCQUFpQixHQUFrQztJQUN2RCxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVO0lBQzdCLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVU7SUFDN0IsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsZ0JBQWdCO0lBQ25DLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU07Q0FDMUIsQ0FBQztBQUVGLE1B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 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RydWN0dXJlUGFydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zdHJ1Y3R1cmVQYXJ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsdUNBQW9DO0FBR3BDLElBQVksUUFTWDtBQVRELFdBQVksUUFBUTtJQUNsQixpREFBUyxDQUFBO0lBQ1QscURBQVcsQ0FBQTtJQUNYLDJEQUFjLENBQUE7SUFDZCx1RUFBb0IsQ0FBQTtJQUNwQix5REFBYSxDQUFBO0lBQ2IsdURBQVksQ0FBQTtJQUNaLHVFQUFvQixDQUFBO0lBQ3BCLHlFQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFUVyxRQUFRLEdBQVIsZ0JBQVEsS0FBUixnQkFBUSxRQVNuQjtBQUtELElBQVksYUFpQlg7QUFqQkQsV0FBWSxhQUFhO0lBSXZCLDJDQUFDLENBQUE7SUFJRCwyQ0FBQyxDQUFBO0lBSUQsMkNBQUMsQ0FBQTtJQUlELDJDQUFDLENBQUE7QUFDSCxDQUFDLEVBakJXLGFBQWEsR0FBYixxQkFBYSxLQUFiLHFCQUFhLFFBaUJ4QjtBQUdELE1BQU0sbUJBQW1CLEdBQWtDO0lBQ3pELENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVk7SUFDL0IsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsNEJBQTRCO0lBQy9DLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLHNDQUFzQztJQUN6RCxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHO0NBQ3ZCLENBQUM7QUFHRixNQUFNLGlCQUFpQixHQUFrQztJQUN2RCxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVO0lBQzdCLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVU7SUFDN0IsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsZ0JBQWdCO0lBQ25DLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU07Q0FDMUIsQ0FBQztBQUlGLE1B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 |
{ | ||
"name": "ibankit", | ||
"version": "1.0.3", | ||
"version": "1.1.0", | ||
"description": "IBAN and BIC utilities", | ||
@@ -5,0 +5,0 @@ "main": "lib/index.js", |
@@ -39,3 +39,3 @@ # ibankit | ||
const iban = IBAN.random(); | ||
const iban = new Iban.Builder() | ||
const iban = new IBAN.Builder() | ||
.countryCode(CountryCode.AT) | ||
@@ -64,4 +64,4 @@ .bankCode("19043") | ||
[ ] For random IBANs the National Check digits is random, rather than "valid" | ||
[ ] Finish writing all national check digit validators (see Oracle spec) | ||
- [ ] Finish writing all national check digit generators (see Oracle spec) | ||
- [x] For random IBANs the National Check digits is random, rather than "valid" | ||
@@ -68,0 +68,0 @@ #### References |
@@ -23,3 +23,3 @@ import { CharacterType, BbanStructurePart, PartType } from "./structurePart"; | ||
function nationalFactory(weights: number[]) { | ||
return (checkdigit: string, bban: string, structure: BbanStructure) => { | ||
return (bban: string, structure: BbanStructure) => { | ||
const accountNumber = structure.extractValue(bban, PartType.ACCOUNT_NUMBER); | ||
@@ -31,13 +31,3 @@ | ||
const actual = structure.extractValue(bban, PartType.NATIONAL_CHECK_DIGIT); | ||
const digit = mod11(accountNumber, weights); | ||
if (actual !== String(digit)) { | ||
throw new FormatException( | ||
FormatViolation.NATIONAL_CHECK_DIGIT, | ||
`national check digit(s) don't match expect=[${digit}] actual=[${actual}]`, | ||
String(digit), | ||
String(actual), | ||
); | ||
} | ||
return String(mod11(accountNumber, weights)); | ||
}; | ||
@@ -97,3 +87,31 @@ } | ||
BbanStructurePart.accountNumber(7, CharacterType.n), | ||
BbanStructurePart.nationalCheckDigit(2, CharacterType.n), | ||
BbanStructurePart.nationalCheckDigit( | ||
2, | ||
CharacterType.n, | ||
(bban: string, structure: BbanStructure) => { | ||
const accountNumber = structure.extractValue( | ||
bban, | ||
PartType.ACCOUNT_NUMBER, | ||
); | ||
const bankCode = structure.extractValue(bban, PartType.BANK_CODE); | ||
if (accountNumber === null || bankCode === null) { | ||
throw new FormatException( | ||
FormatViolation.NOT_EMPTY, | ||
"account number or bank code missing", | ||
); | ||
} | ||
const value = parseInt(`${bankCode}${accountNumber}`, 10); | ||
const remainder = Math.floor(value / 97); | ||
let expected = value - remainder * 97; | ||
if (expected === 0) { | ||
expected = 97; | ||
} | ||
return String(expected).padStart(2, "0"); | ||
}, | ||
), | ||
), | ||
@@ -242,3 +260,35 @@ | ||
BbanStructurePart.accountNumber(11, CharacterType.c), | ||
BbanStructurePart.nationalCheckDigit(2, CharacterType.n), | ||
BbanStructurePart.nationalCheckDigit( | ||
2, | ||
CharacterType.n, | ||
(bban: string, structure: BbanStructure) => { | ||
const replaceChars = { | ||
["[AJ]"]: "1", | ||
["[BKS]"]: "2", | ||
["[CLT]"]: "3", | ||
["[DMU]"]: "4", | ||
["[ENV]"]: "5", | ||
["[FOW]"]: "6", | ||
["[GPX]"]: "7", | ||
["[HQY]"]: "8", | ||
["[IRZ]"]: "9", | ||
}; | ||
let combined = | ||
[PartType.BANK_CODE, PartType.BRANCH_CODE, PartType.ACCOUNT_NUMBER] | ||
.map(p => String(structure.extractValue(bban, p))) | ||
.join("") + "00"; | ||
Object.entries(replaceChars).map( | ||
([k, v]) => (combined = combined.replace(new RegExp(k, "g"), v)), | ||
); | ||
// Number is bigger than max integer, take the mod%97 by hand | ||
const expected = | ||
97 - | ||
combined | ||
.split("") | ||
.reduce((acc, v) => (acc * 10 + parseInt(v)) % 97, 0); | ||
return String(expected).padStart(2, "0"); | ||
}, | ||
), | ||
), | ||
@@ -729,31 +779,41 @@ | ||
) { | ||
if (part.validate(entryValue)) { | ||
if (part.validateValue) { | ||
part.validateValue(entryValue, bban, this); | ||
if (!part.validate(entryValue)) { | ||
switch (part.getCharacterType()) { | ||
case CharacterType.a: | ||
throw new FormatException( | ||
FormatViolation.BBAN_ONLY_UPPER_CASE_LETTERS, | ||
`[${entryValue}] must contain only upper case letters.`, | ||
entryValue, | ||
); | ||
case CharacterType.c: | ||
throw new FormatException( | ||
FormatViolation.BBAN_ONLY_DIGITS_OR_LETTERS, | ||
`[${entryValue}] must contain only digits or letters.`, | ||
entryValue, | ||
); | ||
case CharacterType.n: | ||
throw new FormatException( | ||
FormatViolation.BBAN_ONLY_DIGITS, | ||
`[${entryValue}] must contain only digits.`, | ||
entryValue, | ||
); | ||
} | ||
return; | ||
} | ||
switch (part.getCharacterType()) { | ||
case CharacterType.a: | ||
if ( | ||
part.getPartType() === PartType.NATIONAL_CHECK_DIGIT && | ||
part.hasGenerator | ||
) { | ||
const expected = part.generate(bban, this); | ||
if (entryValue !== expected) { | ||
throw new FormatException( | ||
FormatViolation.BBAN_ONLY_UPPER_CASE_LETTERS, | ||
`[${entryValue}] must contain only upper case letters.`, | ||
FormatViolation.NATIONAL_CHECK_DIGIT, | ||
`national check digit(s) don't match expect=[${expected}] actual=[${entryValue}]`, | ||
expected, | ||
entryValue, | ||
); | ||
case CharacterType.c: | ||
throw new FormatException( | ||
FormatViolation.BBAN_ONLY_DIGITS_OR_LETTERS, | ||
`[${entryValue}] must contain only digits or letters.`, | ||
entryValue, | ||
); | ||
case CharacterType.n: | ||
throw new FormatException( | ||
FormatViolation.BBAN_ONLY_DIGITS, | ||
`[${entryValue}] must contain only digits.`, | ||
entryValue, | ||
); | ||
} | ||
} | ||
} | ||
} |
@@ -261,2 +261,4 @@ import * as ibanUtil from "./ibanUtil"; | ||
let needCheckDigit = false; | ||
for (const entry of structure.getParts()) { | ||
@@ -266,3 +268,3 @@ switch (entry.getPartType()) { | ||
if (!this.bankCodeValue) { | ||
this.bankCodeValue = entry.getRandom(); | ||
this.bankCodeValue = entry.generate("", structure); | ||
} | ||
@@ -272,3 +274,3 @@ break; | ||
if (!this.branchCodeValue) { | ||
this.branchCodeValue = entry.getRandom(); | ||
this.branchCodeValue = entry.generate("", structure); | ||
} | ||
@@ -278,3 +280,3 @@ break; | ||
if (!this.accountNumberValue) { | ||
this.accountNumberValue = entry.getRandom(); | ||
this.accountNumberValue = entry.generate("", structure); | ||
} | ||
@@ -284,3 +286,4 @@ break; | ||
if (!this.nationalCheckDigitValue) { | ||
this.nationalCheckDigitValue = entry.getRandom(); | ||
needCheckDigit = true; | ||
this.nationalCheckDigitValue = "".padStart(entry.getLength(), "0"); | ||
} | ||
@@ -290,3 +293,3 @@ break; | ||
if (!this.accountTypeValue) { | ||
this.accountTypeValue = entry.getRandom(); | ||
this.accountTypeValue = entry.generate("", structure); | ||
} | ||
@@ -296,3 +299,3 @@ break; | ||
if (!this.ownerAccountTypeValue) { | ||
this.ownerAccountTypeValue = entry.getRandom(); | ||
this.ownerAccountTypeValue = entry.generate("", structure); | ||
} | ||
@@ -302,3 +305,3 @@ break; | ||
if (!this.identificationNumberValue) { | ||
this.identificationNumberValue = entry.getRandom(); | ||
this.identificationNumberValue = entry.generate("", structure); | ||
} | ||
@@ -308,3 +311,13 @@ break; | ||
} | ||
if (needCheckDigit) { | ||
for (const entry of structure.getParts()) { | ||
if (entry.getPartType() === PartType.NATIONAL_CHECK_DIGIT) { | ||
const bban = this.formatBban(); | ||
this.nationalCheckDigitValue = entry.generate(bban, structure); | ||
} | ||
} | ||
} | ||
} | ||
} |
@@ -53,2 +53,4 @@ import { randInt } from "./randInt"; | ||
type GenerateValue = (bban: string, structure: BbanStructure) => string; | ||
export class BbanStructurePart { | ||
@@ -58,5 +60,5 @@ private entryType: PartType; | ||
private length: number; | ||
generate: GenerateValue; | ||
hasGenerator: boolean; | ||
validateValue?(value: string, bban: string, structure: BbanStructure): void; | ||
private constructor( | ||
@@ -66,3 +68,3 @@ entryType: PartType, | ||
length: number, | ||
validate?: (value: string, bban: string, structure: BbanStructure) => void, | ||
generate?: GenerateValue, | ||
) { | ||
@@ -72,3 +74,4 @@ this.entryType = entryType; | ||
this.length = length; | ||
this.validateValue = validate; | ||
this.generate = generate || this.defaultGenerator; | ||
this.hasGenerator = !!generate; | ||
} | ||
@@ -104,3 +107,3 @@ | ||
characterType: CharacterType, | ||
validate?: (value: string, bban: string, structure: BbanStructure) => void, | ||
generate?: GenerateValue, | ||
): BbanStructurePart { | ||
@@ -111,3 +114,3 @@ return new BbanStructurePart( | ||
length, | ||
validate, | ||
generate, | ||
); | ||
@@ -164,3 +167,13 @@ } | ||
getRandom(): string { | ||
/** | ||
* Check to see if the string value is valid for the entry | ||
*/ | ||
validate(value: string): boolean { | ||
return charByCharacterRE[this.characterType].test(value); | ||
} | ||
/** | ||
* Default generator to use -- just generate random sequence | ||
*/ | ||
private defaultGenerator(bban: string, structure: BbanStructure): string { | ||
const charChoices = charByCharacterType[this.characterType]; | ||
@@ -175,9 +188,2 @@ | ||
} | ||
/** | ||
* Check to see if the string value is valid for the entry | ||
*/ | ||
validate(value: string): boolean { | ||
return charByCharacterRE[this.characterType].test(value); | ||
} | ||
} |
Sorry, the diff of this file is too big to display
263115
4428