UNPKG

upc-generator

Version:

A randomly generated UPC-12(UPC-A) code For Amazon

100 lines (96 loc) 3.6 kB
(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : (global.upcGenerator = factory()); }(this, (function () { 'use strict'; var UPC = /** @class */ (function () { function UPC(prop) { if (prop === void 0) { prop = {}; } this._flagCode = '0'; this._manufacturer = ''; var flagCode = prop.flagCode, manufacturer = prop.manufacturer; this._flagCode = flagCode || ''; if (manufacturer && manufacturer.length !== 5) { throw new RangeError('the length of manufacturer must be 5'); } this._manufacturer = manufacturer || ''; } UPC.prototype.create = function (prop) { if (prop === void 0) { prop = {}; } var flagCode = prop.flagCode, manufacturer = prop.manufacturer; if (manufacturer && manufacturer.length !== 5) { throw new RangeError('the length of manufacturer must be 5'); } else { prop.manufacturer = this._manufacturer; } if (!flagCode) { prop.flagCode = this._flagCode; } return this._create(prop); }; UPC.prototype.createMultiple = function (prop) { if (prop === void 0) { prop = { size: 1 }; } var size = prop.size; if (!size || Number(size) <= 0 || isNaN(Number(size))) { size = 1; } var arr = new Array(size); for (var i = 0; i < size; i++) { arr[i] = this.create(prop); } return arr; }; UPC.prototype.isValid = function (num) { if (num.length !== 12) { return false; } var computedLastNum = this.computedEanLastNum(num); var lastNum = num.toString().charAt(11); return lastNum === computedLastNum; }; UPC.prototype._create = function (prop) { var flagCode = prop.flagCode, manufacturer = prop.manufacturer; var code = ''; if (!flagCode) { var randomNum = Math.floor(Math.random() * UPC.flagCodeArr.length); flagCode = UPC.flagCodeArr[randomNum]; } if (!manufacturer) { manufacturer = this.fillNumber(5); } code = flagCode + manufacturer + this.fillNumber(5); var lastestNum = this.computedEanLastNum(code); return code + lastestNum; }; UPC.prototype.computedEanLastNum = function (num) { var subNum = num.substr(0, 11); var odd = 0; var even = 0; var bOdd = true; for (var i = 0; i < subNum.length; i++) { if (bOdd) { odd += Number(subNum[i]); } else { even += Number(subNum[i]); } bOdd = !bOdd; } var sum = odd * 3 + even; var lastestNum = (10 - (sum % 10)) % 10; return lastestNum.toString(); }; UPC.prototype.fillNumber = function (len) { var str = ''; for (var i = 0; i < len; i++) { str += Math.floor(Math.random() * 10).toString(); } return str; }; UPC.flagCodeArr = ['0', '1', '6', '7', '8', '9']; return UPC; }()); return UPC; }))); //# sourceMappingURL=upc-generator.umd.js.map