| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 | "use strict";Object.defineProperty(exports, "__esModule", {  value: true});exports.default = isEAN;var _assertString = _interopRequireDefault(require("./util/assertString"));function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }/** * The most commonly used EAN standard is * the thirteen-digit EAN-13, while the * less commonly used 8-digit EAN-8 barcode was * introduced for use on small packages. * Also EAN/UCC-14 is used for Grouping of individual * trade items above unit level(Intermediate, Carton or Pallet). * For more info about EAN-14 checkout: https://www.gtin.info/itf-14-barcodes/ * EAN consists of: * GS1 prefix, manufacturer code, product code and check digit * Reference: https://en.wikipedia.org/wiki/International_Article_Number * Reference: https://www.gtin.info/ *//** * Define EAN Lenghts; 8 for EAN-8; 13 for EAN-13; 14 for EAN-14 * and Regular Expression for valid EANs (EAN-8, EAN-13, EAN-14), * with exact numberic matching of 8 or 13 or 14 digits [0-9] */var LENGTH_EAN_8 = 8;var LENGTH_EAN_14 = 14;var validEanRegex = /^(\d{8}|\d{13}|\d{14})$/;/** * Get position weight given: * EAN length and digit index/position * * @param {number} length * @param {number} index * @return {number} */function getPositionWeightThroughLengthAndIndex(length, index) {  if (length === LENGTH_EAN_8 || length === LENGTH_EAN_14) {    return index % 2 === 0 ? 3 : 1;  }  return index % 2 === 0 ? 1 : 3;}/** * Calculate EAN Check Digit * Reference: https://en.wikipedia.org/wiki/International_Article_Number#Calculation_of_checksum_digit * * @param {string} ean * @return {number} */function calculateCheckDigit(ean) {  var checksum = ean.slice(0, -1).split('').map(function (char, index) {    return Number(char) * getPositionWeightThroughLengthAndIndex(ean.length, index);  }).reduce(function (acc, partialSum) {    return acc + partialSum;  }, 0);  var remainder = 10 - checksum % 10;  return remainder < 10 ? remainder : 0;}/** * Check if string is valid EAN: * Matches EAN-8/EAN-13/EAN-14 regex * Has valid check digit. * * @param {string} str * @return {boolean} */function isEAN(str) {  (0, _assertString.default)(str);  var actualCheckDigit = Number(str.slice(-1));  return validEanRegex.test(str) && actualCheckDigit === calculateCheckDigit(str);}module.exports = exports.default;module.exports.default = exports.default;
 |