ean13-lib
Version:
Provides common EAN 13 barcode related features.
36 lines • 1.5 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
class Ean13Utils {
static validate(numberAsString) {
if (!Number(numberAsString) || numberAsString.length !== 13) {
return false;
}
const baseNumber = numberAsString.substr(0, 12);
const checkDigit = Number(numberAsString.charAt(12));
const expectedCheckDigit = this.calculateCheckDigit(baseNumber);
return expectedCheckDigit === checkDigit;
}
static calculateCheckDigit(baseNumberAsString) {
if (!Number(baseNumberAsString) || baseNumberAsString.length !== 12) {
throw Error('Not an EAN 13 base number. Must have s number with at most 12 digits.');
}
const digits = [];
for (let i = 0; i < 12; i++) {
digits.push(Number(baseNumberAsString.charAt(i)));
}
const weightedDigitsSum = digits[0] + digits[1] * 3
+ digits[2] + digits[3] * 3
+ digits[4] + digits[5] * 3
+ digits[6] + digits[7] * 3
+ digits[8] + digits[9] * 3
+ digits[10] + digits[11] * 3;
const remainder = weightedDigitsSum % 10;
return remainder === 0 ? 0 : (10 - remainder);
}
static generate(baseNumberAsString) {
const checkDigit = this.calculateCheckDigit(baseNumberAsString);
return Number(baseNumberAsString) * 10 + checkDigit;
}
}
exports.Ean13Utils = Ean13Utils;
//# sourceMappingURL=Ean13Utils.js.map