@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
35 lines (34 loc) • 991 B
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.norwegianBbanValidator = norwegianBbanValidator;
function norwegianBbanValidator(value, errorMessages) {
if (value !== undefined) {
if (value.length !== 11) {
return Error(errorMessages.errorBankAccountNumberLength);
}
if (!isValidNorwegianAccountNumber(value)) {
return Error(errorMessages.errorBankAccountNumber);
}
}
return undefined;
}
function isValidNorwegianAccountNumber(digits) {
if (parseFloat(digits) === 0) {
return false;
}
let checkDigit = 2;
let sum = 0;
for (let i = digits.length - 2; i >= 0; --i) {
sum += parseInt(digits.charAt(i), 10) * checkDigit;
checkDigit += 1;
if (checkDigit > 7) {
checkDigit = 2;
}
}
const result = 11 - sum % 11;
const finalCheckDigit = result === 11 ? 0 : result;
return parseInt(digits.charAt(digits.length - 1), 10) === finalCheckDigit;
}
//# sourceMappingURL=validators.js.map