PATH:
opt
/
bitninja-dispatcher
/
node_modules
/
validator
/
lib
"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;
[-] isISO31661Alpha3.js
[edit]
[-] isBtcAddress.js
[edit]
[-] isBoolean.js
[edit]
[-] isHexColor.js
[edit]
[-] equals.js
[edit]
[-] isUppercase.js
[edit]
[-] isLocale.js
[edit]
[-] toInt.js
[edit]
[-] toDate.js
[edit]
[-] isIn.js
[edit]
[-] isDivisibleBy.js
[edit]
[-] isEthereumAddress.js
[edit]
[-] isMagnetURI.js
[edit]
[-] toBoolean.js
[edit]
[-] isHexadecimal.js
[edit]
[-] isVAT.js
[edit]
[-] isHSL.js
[edit]
[+]
..
[-] isMobilePhone.js
[edit]
[-] isMD5.js
[edit]
[-] stripLow.js
[edit]
[-] contains.js
[edit]
[-] isMimeType.js
[edit]
[-] isIdentityCard.js
[edit]
[-] blacklist.js
[edit]
[-] isJSON.js
[edit]
[-] isHash.js
[edit]
[-] isPassportNumber.js
[edit]
[-] isURL.js
[edit]
[-] isISO31661Alpha2.js
[edit]
[-] toFloat.js
[edit]
[-] isNumeric.js
[edit]
[-] isVariableWidth.js
[edit]
[-] isUUID.js
[edit]
[-] isBIC.js
[edit]
[-] isDate.js
[edit]
[-] isIPRange.js
[edit]
[-] isStrongPassword.js
[edit]
[-] unescape.js
[edit]
[-] isISRC.js
[edit]
[-] isSemVer.js
[edit]
[-] isInt.js
[edit]
[-] isEAN.js
[edit]
[-] alpha.js
[edit]
[-] isISSN.js
[edit]
[-] rtrim.js
[edit]
[-] isPostalCode.js
[edit]
[-] isSurrogatePair.js
[edit]
[-] isMongoId.js
[edit]
[-] isBase58.js
[edit]
[-] isCreditCard.js
[edit]
[-] isIMEI.js
[edit]
[-] isFullWidth.js
[edit]
[-] isISO8601.js
[edit]
[-] isBase64.js
[edit]
[-] isHalfWidth.js
[edit]
[-] isIBAN.js
[edit]
[-] isByteLength.js
[edit]
[-] isDataURI.js
[edit]
[-] isAfter.js
[edit]
[-] isISIN.js
[edit]
[-] normalizeEmail.js
[edit]
[-] isAlpha.js
[edit]
[-] isBefore.js
[edit]
[+]
util
[-] isCurrency.js
[edit]
[-] isRFC3339.js
[edit]
[-] isJWT.js
[edit]
[-] isWhitelisted.js
[edit]
[-] isMACAddress.js
[edit]
[-] isISO4217.js
[edit]
[-] isOctal.js
[edit]
[-] ltrim.js
[edit]
[-] isLength.js
[edit]
[-] whitelist.js
[edit]
[-] isDecimal.js
[edit]
[-] isRgbColor.js
[edit]
[-] isLatLong.js
[edit]
[-] isPort.js
[edit]
[-] isMultibyte.js
[edit]
[-] matches.js
[edit]
[-] isTaxID.js
[edit]
[-] isBase32.js
[edit]
[-] trim.js
[edit]
[-] isAlphanumeric.js
[edit]
[-] isAscii.js
[edit]
[-] isSlug.js
[edit]
[-] isEmpty.js
[edit]
[-] escape.js
[edit]
[-] isEmail.js
[edit]
[-] isLowercase.js
[edit]
[-] isFloat.js
[edit]
[-] isISBN.js
[edit]
[-] isIP.js
[edit]
[-] isFQDN.js
[edit]
[-] isLicensePlate.js
[edit]