PHP 8.2.30
Preview: isEAN.js Size: 2.10 KB
/proc/thread-self/root/home/byroehnu/.trash/node_modules11/validator/es/lib/isEAN.js

/**
 * 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/
 */

import assertString from './util/assertString';

/**
 * Define EAN Lengths; 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 numeric 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}
 */
export default function isEAN(str) {
  assertString(str);
  var actualCheckDigit = Number(str.slice(-1));
  return validEanRegex.test(str) && actualCheckDigit === calculateCheckDigit(str);
}

Directory Contents

Dirs: 1 × Files: 103

Name Size Perms Modified Actions
util DIR
- drwxr-xr-x 2026-02-23 15:45:48
Edit Download
7.13 KB lrw-r--r-- 2026-02-23 15:45:46
Edit Download
186 B lrw-r--r-- 2026-02-23 15:45:46
Edit Download
524 B lrw-r--r-- 2026-02-23 15:45:46
Edit Download
149 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
310 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
683 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
773 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
912 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
947 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
242 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
504 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
302 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
880 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
775 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
555 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
531 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
277 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
842 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
1.49 KB lrw-r--r-- 2026-02-23 15:45:48
Edit Download
2.96 KB lrw-r--r-- 2026-02-23 15:45:48
Edit Download
982 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
5.20 KB lrw-r--r-- 2026-02-23 15:45:48
Edit Download
845 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
202 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
2.10 KB lrw-r--r-- 2026-02-23 15:45:48
Edit Download
5.85 KB lrw-r--r-- 2026-02-23 15:45:48
Edit Download
346 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
176 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
981 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
1.74 KB lrw-r--r-- 2026-02-23 15:45:48
Edit Download
234 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
233 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
421 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
189 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
550 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
984 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
6.34 KB lrw-r--r-- 2026-02-23 15:45:48
Edit Download
12.30 KB lrw-r--r-- 2026-02-23 15:45:48
Edit Download
953 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
1.08 KB lrw-r--r-- 2026-02-23 15:45:48
Edit Download
1018 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
3.24 KB lrw-r--r-- 2026-02-23 15:45:48
Edit Download
1.03 KB lrw-r--r-- 2026-02-23 15:45:48
Edit Download
1.40 KB lrw-r--r-- 2026-02-23 15:45:48
Edit Download
1.55 KB lrw-r--r-- 2026-02-23 15:45:48
Edit Download
1.53 KB lrw-r--r-- 2026-02-23 15:45:48
Edit Download
1.20 KB lrw-r--r-- 2026-02-23 15:45:48
Edit Download
1.25 KB lrw-r--r-- 2026-02-23 15:45:48
Edit Download
2.13 KB lrw-r--r-- 2026-02-23 15:45:48
Edit Download
2.40 KB lrw-r--r-- 2026-02-23 15:45:48
Edit Download
1.81 KB lrw-r--r-- 2026-02-23 15:45:48
Edit Download
1.99 KB lrw-r--r-- 2026-02-23 15:45:48
Edit Download
1.98 KB lrw-r--r-- 2026-02-23 15:45:48
Edit Download
237 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
704 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
892 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
376 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
955 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
1.25 KB lrw-r--r-- 2026-02-23 15:45:48
Edit Download
4.94 KB lrw-r--r-- 2026-02-23 15:45:48
Edit Download
3.41 KB lrw-r--r-- 2026-02-23 15:45:48
Edit Download
149 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
624 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
1.49 KB lrw-r--r-- 2026-02-23 15:45:48
Edit Download
404 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
4.16 KB lrw-r--r-- 2026-02-23 15:45:48
Edit Download
159 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
1.88 KB lrw-r--r-- 2026-02-23 15:45:48
Edit Download
9.08 KB lrw-r--r-- 2026-02-23 15:45:48
Edit Download
206 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
252 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
398 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
165 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
3.46 KB lrw-r--r-- 2026-02-23 15:45:48
Edit Download
156 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
2.74 KB lrw-r--r-- 2026-02-23 15:45:48
Edit Download
1.03 KB lrw-r--r-- 2026-02-23 15:45:48
Edit Download
1.80 KB lrw-r--r-- 2026-02-23 15:45:48
Edit Download
597 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
212 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
2.78 KB lrw-r--r-- 2026-02-23 15:45:48
Edit Download
205 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
40.67 KB lrw-r--r-- 2026-02-23 15:45:48
Edit Download
785 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
161 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
149 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
10.28 KB lrw-r--r-- 2026-02-23 15:45:48
Edit Download
1.27 KB lrw-r--r-- 2026-02-23 15:45:48
Edit Download
256 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
6.88 KB lrw-r--r-- 2026-02-23 15:45:48
Edit Download
253 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
361 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
281 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
6.30 KB lrw-r--r-- 2026-02-23 15:45:48
Edit Download
624 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
288 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
247 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
184 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
132 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
151 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
144 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
498 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download
187 B lrw-r--r-- 2026-02-23 15:45:48
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).